lounge_lizard 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.gitmodules +3 -0
- data/.rspec +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/Guardfile +33 -0
- data/LICENSE.txt +21 -0
- data/README.md +50 -0
- data/Rakefile +43 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/circle.yml +14 -0
- data/ext/drafter/CHANGELOG.md +278 -0
- data/ext/drafter/Dockerfile +17 -0
- data/ext/drafter/Makefile +62 -0
- data/ext/drafter/appveyor.yml +17 -0
- data/ext/drafter/bin/drafter +0 -0
- data/ext/drafter/build/Makefile +387 -0
- data/ext/drafter/build/drafter.Makefile +6 -0
- data/ext/drafter/build/drafter.target.mk +159 -0
- data/ext/drafter/build/ext/snowcrash/libmarkdownparser.target.mk +141 -0
- data/ext/drafter/build/ext/snowcrash/libsnowcrash.target.mk +154 -0
- data/ext/drafter/build/ext/snowcrash/libsundown.target.mk +149 -0
- data/ext/drafter/build/ext/snowcrash/perf-libsnowcrash.target.mk +147 -0
- data/ext/drafter/build/ext/snowcrash/snowcrash.Makefile +6 -0
- data/ext/drafter/build/gyp-mac-tool +606 -0
- data/ext/drafter/build/libdrafter.target.mk +186 -0
- data/ext/drafter/build/libsos.target.mk +137 -0
- data/ext/drafter/build/out/Release/drafter +0 -0
- data/ext/drafter/build/out/Release/libdrafter.dylib +0 -0
- data/ext/drafter/build/out/Release/libmarkdownparser.a +0 -0
- data/ext/drafter/build/out/Release/libsnowcrash.a +0 -0
- data/ext/drafter/build/out/Release/libsos.a +0 -0
- data/ext/drafter/build/out/Release/libsundown.a +0 -0
- data/ext/drafter/build/out/Release/obj.target/drafter/src/config.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/drafter/src/main.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/drafter/src/reporting.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/ConversionContext.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/NamedTypesRegistry.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractAPI.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractDataStructure.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractElementFactory.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractSourceMap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Render.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Serialize.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeAST.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeResult.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeSourcemap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter_private.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ComparableVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Element.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ExpandVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/IsExpandableVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/JSONSchemaVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/PrintVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Query.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Registry.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/RenderJSONVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeCompactVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/TypeQueryVisitor.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/VisitorUtils.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Blueprint.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/BlueprintSourcemap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HTTP.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HeadersParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSON.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONOneOfParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONSourcemap.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONTypeSectionParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONValueMemberParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Section.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Signature.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/UriTemplateParser.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/posix/RegexMatch.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/snowcrash.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsos/ext/sos/src/sos.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o +0 -0
- data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o +0 -0
- data/ext/drafter/circle.yml +32 -0
- data/ext/drafter/config.gypi +10 -0
- data/ext/drafter/config.mk +5 -0
- data/ext/drafter/configure +224 -0
- data/ext/drafter/drafter.gyp +189 -0
- data/ext/drafter/drafter.xcworkspace/contents.xcworkspacedata +13 -0
- data/ext/drafter/ext/snowcrash/Makefile +58 -0
- data/ext/drafter/ext/snowcrash/appveyor.yml +7 -0
- data/ext/drafter/ext/snowcrash/common.gypi +165 -0
- data/ext/drafter/ext/snowcrash/configure +197 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/Makefile +90 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/CONTRIBUTING.md +10 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile +84 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile.win +33 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/smartypants.c +72 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/sundown.c +80 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini.h +37 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.c +108 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.c +84 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.c +647 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.h +77 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.c +389 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html_block_names.txt +25 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.c +297 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.h +51 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.c +225 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.h +96 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/html_blocks.h +206 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.c +2726 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.h +147 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.c +204 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.h +58 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.c +81 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.h +29 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/sundown.def +20 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/markdown/markdown.vcproj +188 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/msvc.sln +38 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/sundown/sundown.vcproj +206 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.cc +160 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.h +90 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc +152 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h +103 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc +388 -0
- data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h +106 -0
- data/ext/drafter/ext/snowcrash/snowcrash.gyp +196 -0
- data/ext/drafter/ext/snowcrash/src/ActionParser.h +560 -0
- data/ext/drafter/ext/snowcrash/src/AssetParser.h +123 -0
- data/ext/drafter/ext/snowcrash/src/AttributesParser.h +123 -0
- data/ext/drafter/ext/snowcrash/src/Blueprint.cc +90 -0
- data/ext/drafter/ext/snowcrash/src/Blueprint.h +489 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintParser.h +845 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.cc +81 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.h +345 -0
- data/ext/drafter/ext/snowcrash/src/BlueprintUtility.h +111 -0
- data/ext/drafter/ext/snowcrash/src/CodeBlockUtility.h +276 -0
- data/ext/drafter/ext/snowcrash/src/DataStructureGroupParser.h +157 -0
- data/ext/drafter/ext/snowcrash/src/HTTP.cc +49 -0
- data/ext/drafter/ext/snowcrash/src/HTTP.h +108 -0
- data/ext/drafter/ext/snowcrash/src/HeadersParser.cc +117 -0
- data/ext/drafter/ext/snowcrash/src/HeadersParser.h +377 -0
- data/ext/drafter/ext/snowcrash/src/MSON.cc +272 -0
- data/ext/drafter/ext/snowcrash/src/MSON.h +405 -0
- data/ext/drafter/ext/snowcrash/src/MSONMixinParser.h +103 -0
- data/ext/drafter/ext/snowcrash/src/MSONNamedTypeParser.h +135 -0
- data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.cc +132 -0
- data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.h +80 -0
- data/ext/drafter/ext/snowcrash/src/MSONParameterParser.h +166 -0
- data/ext/drafter/ext/snowcrash/src/MSONPropertyMemberParser.h +106 -0
- data/ext/drafter/ext/snowcrash/src/MSONSourcemap.cc +141 -0
- data/ext/drafter/ext/snowcrash/src/MSONSourcemap.h +181 -0
- data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.cc +209 -0
- data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.h +213 -0
- data/ext/drafter/ext/snowcrash/src/MSONUtility.h +506 -0
- data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.cc +214 -0
- data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.h +390 -0
- data/ext/drafter/ext/snowcrash/src/ModelTable.h +87 -0
- data/ext/drafter/ext/snowcrash/src/ParameterParser.h +516 -0
- data/ext/drafter/ext/snowcrash/src/ParametersParser.h +222 -0
- data/ext/drafter/ext/snowcrash/src/PayloadParser.h +733 -0
- data/ext/drafter/ext/snowcrash/src/Platform.h +33 -0
- data/ext/drafter/ext/snowcrash/src/RegexMatch.h +32 -0
- data/ext/drafter/ext/snowcrash/src/RelationParser.h +87 -0
- data/ext/drafter/ext/snowcrash/src/ResourceGroupParser.h +297 -0
- data/ext/drafter/ext/snowcrash/src/ResourceParser.h +536 -0
- data/ext/drafter/ext/snowcrash/src/Section.cc +48 -0
- data/ext/drafter/ext/snowcrash/src/Section.h +60 -0
- data/ext/drafter/ext/snowcrash/src/SectionParser.h +246 -0
- data/ext/drafter/ext/snowcrash/src/SectionParserData.h +109 -0
- data/ext/drafter/ext/snowcrash/src/SectionProcessor.h +299 -0
- data/ext/drafter/ext/snowcrash/src/Signature.cc +75 -0
- data/ext/drafter/ext/snowcrash/src/Signature.h +103 -0
- data/ext/drafter/ext/snowcrash/src/SignatureSectionProcessor.h +442 -0
- data/ext/drafter/ext/snowcrash/src/SourceAnnotation.h +166 -0
- data/ext/drafter/ext/snowcrash/src/StringUtility.h +323 -0
- data/ext/drafter/ext/snowcrash/src/UriTemplateParser.cc +195 -0
- data/ext/drafter/ext/snowcrash/src/UriTemplateParser.h +240 -0
- data/ext/drafter/ext/snowcrash/src/ValuesParser.h +111 -0
- data/ext/drafter/ext/snowcrash/src/posix/RegexMatch.cc +99 -0
- data/ext/drafter/ext/snowcrash/src/snowcrash.cc +90 -0
- data/ext/drafter/ext/snowcrash/src/snowcrash.h +44 -0
- data/ext/drafter/ext/snowcrash/src/win/RegexMatch.cc +78 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/AUTHORS +12 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/DEPS +23 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/OWNERS +1 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/PRESUBMIT.py +137 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/buildbot_run.py +136 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/OWNERS +6 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/cq_config.json +15 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/codereview.settings +10 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/data/win/large-pdb-shim.cc +12 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/gyp +8 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/gyp.bat +5 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/gyp_main.py +16 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSNew.py +340 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSProject.py +208 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSSettings.py +1096 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSToolFile.py +58 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUserFile.py +147 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.py +270 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.py +445 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.py +548 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.py +608 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/easy_xml.py +157 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/flock_tool.py +54 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.py +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/analyzer.py +741 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/android.py +1069 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/cmake.py +1248 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/dump_dependency_json.py +99 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/eclipse.py +425 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypd.py +94 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypsh.py +56 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.py +2218 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/msvs.py +3467 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.py +2427 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.py +1300 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.py +2899 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/mac_tool.py +605 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.py +1093 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.py +160 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ordered_dict.py +289 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.py +46 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/win_tool.py +314 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.py +1664 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.py +276 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.py +2927 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xml_fix.py +69 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/pylintrc +307 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples +81 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples.bat +5 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/setup.py +19 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.pbfilespec +27 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.xclangspec +226 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/emacs/gyp.el +275 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/graphviz.py +100 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_gyp.py +155 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_sln.py +169 -0
- data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_vcproj.py +329 -0
- data/ext/drafter/ext/snowcrash/vcbuild.bat +139 -0
- data/ext/drafter/ext/sos/Makefile +62 -0
- data/ext/drafter/ext/sos/src/sos.cc +235 -0
- data/ext/drafter/ext/sos/src/sos.h +188 -0
- data/ext/drafter/ext/sos/src/sosJSON.h +121 -0
- data/ext/drafter/ext/sos/src/sosYAML.h +105 -0
- data/ext/drafter/src/ConversionContext.cc +39 -0
- data/ext/drafter/src/ConversionContext.h +34 -0
- data/ext/drafter/src/NamedTypesRegistry.cc +405 -0
- data/ext/drafter/src/NamedTypesRegistry.h +28 -0
- data/ext/drafter/src/NodeInfo.h +143 -0
- data/ext/drafter/src/RefractAPI.cc +579 -0
- data/ext/drafter/src/RefractAPI.h +28 -0
- data/ext/drafter/src/RefractDataStructure.cc +1199 -0
- data/ext/drafter/src/RefractDataStructure.h +26 -0
- data/ext/drafter/src/RefractElementFactory.cc +107 -0
- data/ext/drafter/src/RefractElementFactory.h +67 -0
- data/ext/drafter/src/RefractSourceMap.cc +29 -0
- data/ext/drafter/src/RefractSourceMap.h +57 -0
- data/ext/drafter/src/Render.cc +157 -0
- data/ext/drafter/src/Render.h +40 -0
- data/ext/drafter/src/Serialize.cc +160 -0
- data/ext/drafter/src/Serialize.h +289 -0
- data/ext/drafter/src/SerializeAST.cc +507 -0
- data/ext/drafter/src/SerializeAST.h +29 -0
- data/ext/drafter/src/SerializeResult.cc +170 -0
- data/ext/drafter/src/SerializeResult.h +34 -0
- data/ext/drafter/src/SerializeSourcemap.cc +331 -0
- data/ext/drafter/src/SerializeSourcemap.h +21 -0
- data/ext/drafter/src/Version.h +40 -0
- data/ext/drafter/src/config.cc +91 -0
- data/ext/drafter/src/config.h +38 -0
- data/ext/drafter/src/drafter.cc +137 -0
- data/ext/drafter/src/drafter.h +102 -0
- data/ext/drafter/src/drafter_private.cc +85 -0
- data/ext/drafter/src/drafter_private.h +34 -0
- data/ext/drafter/src/main.cc +137 -0
- data/ext/drafter/src/refract/AppendDecorator.h +58 -0
- data/ext/drafter/src/refract/Build.h +67 -0
- data/ext/drafter/src/refract/ComparableVisitor.cc +43 -0
- data/ext/drafter/src/refract/ComparableVisitor.h +62 -0
- data/ext/drafter/src/refract/Element.cc +409 -0
- data/ext/drafter/src/refract/Element.h +656 -0
- data/ext/drafter/src/refract/ElementFwd.h +37 -0
- data/ext/drafter/src/refract/ElementInserter.h +59 -0
- data/ext/drafter/src/refract/Exception.h +31 -0
- data/ext/drafter/src/refract/ExpandVisitor.cc +359 -0
- data/ext/drafter/src/refract/ExpandVisitor.h +58 -0
- data/ext/drafter/src/refract/FilterVisitor.h +52 -0
- data/ext/drafter/src/refract/IsExpandableVisitor.cc +140 -0
- data/ext/drafter/src/refract/IsExpandableVisitor.h +31 -0
- data/ext/drafter/src/refract/Iterate.h +160 -0
- data/ext/drafter/src/refract/JSONSchemaVisitor.cc +675 -0
- data/ext/drafter/src/refract/JSONSchemaVisitor.h +73 -0
- data/ext/drafter/src/refract/PrintVisitor.cc +164 -0
- data/ext/drafter/src/refract/PrintVisitor.h +50 -0
- data/ext/drafter/src/refract/Query.cc +13 -0
- data/ext/drafter/src/refract/Query.h +38 -0
- data/ext/drafter/src/refract/Registry.cc +114 -0
- data/ext/drafter/src/refract/Registry.h +43 -0
- data/ext/drafter/src/refract/RenderJSONVisitor.cc +255 -0
- data/ext/drafter/src/refract/RenderJSONVisitor.h +51 -0
- data/ext/drafter/src/refract/SerializeCompactVisitor.cc +167 -0
- data/ext/drafter/src/refract/SerializeCompactVisitor.h +56 -0
- data/ext/drafter/src/refract/SerializeVisitor.cc +214 -0
- data/ext/drafter/src/refract/SerializeVisitor.h +55 -0
- data/ext/drafter/src/refract/TypeQueryVisitor.cc +46 -0
- data/ext/drafter/src/refract/TypeQueryVisitor.h +110 -0
- data/ext/drafter/src/refract/Visitor.h +126 -0
- data/ext/drafter/src/refract/VisitorUtils.cc +63 -0
- data/ext/drafter/src/refract/VisitorUtils.h +231 -0
- data/ext/drafter/src/reporting.cc +263 -0
- data/ext/drafter/src/reporting.h +39 -0
- data/ext/drafter/src/stream.h +148 -0
- data/ext/drafter/tools/homebrew/drafter.rb +18 -0
- data/ext/drafter/tools/make-tarball.sh +39 -0
- data/ext/drafter/tools/refract-filter.py +96 -0
- data/ext/drafter/tools/release.sh +17 -0
- data/ext/drafter/vcbuild.bat +203 -0
- data/lib/lounge_lizard/binding.rb +29 -0
- data/lib/lounge_lizard/version.rb +3 -0
- data/lib/lounge_lizard.rb +18 -0
- data/lounge_lizard.gemspec +37 -0
- metadata +547 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/JSONSchemaVisitor.h
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Vilibald Wanča on 09/11/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef REFRACT_JSONSCHEMAVISITOR_H
|
|
10
|
+
#define REFRACT_JSONSCHEMAVISITOR_H
|
|
11
|
+
|
|
12
|
+
#include "VisitorUtils.h"
|
|
13
|
+
#include <string>
|
|
14
|
+
|
|
15
|
+
#include "ElementFwd.h"
|
|
16
|
+
|
|
17
|
+
namespace refract
|
|
18
|
+
{
|
|
19
|
+
class JSONSchemaVisitor
|
|
20
|
+
{
|
|
21
|
+
ObjectElement *pObj;
|
|
22
|
+
ObjectElement *pDefs;
|
|
23
|
+
bool fixed;
|
|
24
|
+
bool fixedType;
|
|
25
|
+
|
|
26
|
+
void setSchemaType(const std::string& type);
|
|
27
|
+
void addSchemaType(const std::string& type);
|
|
28
|
+
void addMember(const std::string& key, IElement *val);
|
|
29
|
+
void anyOf(std::map<std::string, std::vector<IElement*> >& types, std::vector<std::string>& typesOrder);
|
|
30
|
+
bool allItemsEmpty(const ArrayElement::ValueType* val);
|
|
31
|
+
ObjectElement* definitionFromVariableProperty(JSONSchemaVisitor& renderer);
|
|
32
|
+
void addVariableProps(std::vector<MemberElement*>& props,ObjectElement *o);
|
|
33
|
+
ArrayElement* arrayFromProps(std::vector<MemberElement*>& props);
|
|
34
|
+
|
|
35
|
+
template<typename T>
|
|
36
|
+
void setPrimitiveType(const T& e)
|
|
37
|
+
{
|
|
38
|
+
//FIXME: static_assert is missing in our code base
|
|
39
|
+
//static_assert(sizeof(T) == 0, "Only String, Number, Boolean types allowed");
|
|
40
|
+
|
|
41
|
+
throw std::runtime_error("Only String, Number, Boolean types allowed");
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
template<typename T> void primitiveType(const T& e);
|
|
45
|
+
|
|
46
|
+
public:
|
|
47
|
+
JSONSchemaVisitor(ObjectElement *pDefinitions = NULL,
|
|
48
|
+
bool _fixed = false,
|
|
49
|
+
bool _fixedType = false);
|
|
50
|
+
~JSONSchemaVisitor();
|
|
51
|
+
void setFixed(bool _fixed);
|
|
52
|
+
void setFixedType(bool _fixedType);
|
|
53
|
+
void operator()(const IElement& e);
|
|
54
|
+
void operator()(const MemberElement& e);
|
|
55
|
+
void operator()(const ObjectElement& e);
|
|
56
|
+
void operator()(const ArrayElement& e);
|
|
57
|
+
void operator()(const EnumElement& e);
|
|
58
|
+
|
|
59
|
+
void operator()(const NullElement& e);
|
|
60
|
+
void operator()(const StringElement& e);
|
|
61
|
+
void operator()(const NumberElement& e);
|
|
62
|
+
void operator()(const BooleanElement& e);
|
|
63
|
+
void operator()(const ExtendElement& e);
|
|
64
|
+
|
|
65
|
+
void operator()(const OptionElement& e);
|
|
66
|
+
|
|
67
|
+
IElement* get();
|
|
68
|
+
IElement* getOwnership();
|
|
69
|
+
std::string getSchema(const IElement& e);
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
#endif
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/PrintVisitor.cc
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Vilibald Wanča on 09/11/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#include "VisitorUtils.h"
|
|
10
|
+
#include <sstream>
|
|
11
|
+
#include <iostream>
|
|
12
|
+
|
|
13
|
+
#include "PrintVisitor.h"
|
|
14
|
+
#include "Visitor.h"
|
|
15
|
+
|
|
16
|
+
#define VISIT_IMPL( ELEMENT ) void PrintVisitor::operator()(const ELEMENT ## Element& e) \
|
|
17
|
+
{ \
|
|
18
|
+
typedef ELEMENT ## Element::ValueType::const_iterator iterator; \
|
|
19
|
+
PrintVisitor ps(indent + 1, os); \
|
|
20
|
+
Visitor visitor(ps); \
|
|
21
|
+
\
|
|
22
|
+
os << "" #ELEMENT "Element {\n"; \
|
|
23
|
+
for (iterator it = e.value.begin(); it != e.value.end(); ++it) { \
|
|
24
|
+
visitor.visit(*(*it)); \
|
|
25
|
+
} \
|
|
26
|
+
indentOS(indent); \
|
|
27
|
+
os << "}\n"; \
|
|
28
|
+
} \
|
|
29
|
+
|
|
30
|
+
namespace refract
|
|
31
|
+
{
|
|
32
|
+
PrintVisitor::PrintVisitor()
|
|
33
|
+
: indent(0), os(std::cout) {}
|
|
34
|
+
|
|
35
|
+
PrintVisitor::PrintVisitor(int indent_, std::ostream& os_)
|
|
36
|
+
: indent(indent_), os(os_) {}
|
|
37
|
+
|
|
38
|
+
void PrintVisitor::indentOS(int ind)
|
|
39
|
+
{
|
|
40
|
+
for (int i = 0; i < ind; i++) {
|
|
41
|
+
os << " ";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void PrintVisitor::printMeta(const IElement& e)
|
|
46
|
+
{
|
|
47
|
+
if (e.meta.size() > 0) {
|
|
48
|
+
os << "meta {\n";
|
|
49
|
+
indentOS(indent);
|
|
50
|
+
|
|
51
|
+
for (IElement::MemberElementCollection::const_iterator i = e.meta.begin();
|
|
52
|
+
i != e.meta.end();
|
|
53
|
+
++i) {
|
|
54
|
+
|
|
55
|
+
refract::Visit(*this, *(*i));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
indentOS(indent);
|
|
59
|
+
os << "}\n";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
void PrintVisitor::printAttr(const IElement& e)
|
|
64
|
+
{
|
|
65
|
+
if (e.attributes.size() > 0) {
|
|
66
|
+
os << "attributes {\n";
|
|
67
|
+
indentOS(indent);
|
|
68
|
+
|
|
69
|
+
for (IElement::MemberElementCollection::const_iterator i = e.attributes.begin();
|
|
70
|
+
i != e.attributes.end();
|
|
71
|
+
++i) {
|
|
72
|
+
|
|
73
|
+
refract::Visit(*this, *(*i));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
indentOS(indent);
|
|
77
|
+
os << "}\n";
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
void PrintVisitor::operator()(const IElement& e)
|
|
83
|
+
{
|
|
84
|
+
indentOS(indent);
|
|
85
|
+
printMeta(e);
|
|
86
|
+
printAttr(e);
|
|
87
|
+
|
|
88
|
+
VisitBy(e, *this);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
void PrintVisitor::operator()(const NullElement& e)
|
|
92
|
+
{
|
|
93
|
+
os << "NullElement(null)" << "\n";
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
void PrintVisitor::operator()(const StringElement& e)
|
|
97
|
+
{
|
|
98
|
+
const StringElement::ValueType* v = GetValue<StringElement>(e);
|
|
99
|
+
os << "StringElement(" << *v << ")" << "\n";
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
void PrintVisitor::operator()(const NumberElement& e)
|
|
103
|
+
{
|
|
104
|
+
const NumberElement::ValueType* v = GetValue<NumberElement>(e);
|
|
105
|
+
|
|
106
|
+
os << "NumberElement(";
|
|
107
|
+
if (v) {
|
|
108
|
+
os << *v;
|
|
109
|
+
} else {
|
|
110
|
+
os << "null";
|
|
111
|
+
}
|
|
112
|
+
os << ")" << "\n";
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
void PrintVisitor::operator()(const BooleanElement& e)
|
|
116
|
+
{
|
|
117
|
+
const BooleanElement::ValueType* v = GetValue<BooleanElement>(e);
|
|
118
|
+
|
|
119
|
+
os << "BooleanElement(";
|
|
120
|
+
if (v) {
|
|
121
|
+
os << *v;
|
|
122
|
+
} else {
|
|
123
|
+
os << "null";
|
|
124
|
+
}
|
|
125
|
+
os << ")" << "\n";
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
void PrintVisitor::operator()(const MemberElement& e)
|
|
129
|
+
{
|
|
130
|
+
os << "MemberElement {\n";
|
|
131
|
+
indentOS(indent + 1);
|
|
132
|
+
if (e.value.first) {
|
|
133
|
+
if (StringElement* str = TypeQueryVisitor::as<StringElement>(e.value.first)) {
|
|
134
|
+
os<< "\"" << str->value << "\": \n";
|
|
135
|
+
} else {
|
|
136
|
+
throw std::logic_error("A property's key in the object is not of type string");
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (e.value.second) {
|
|
141
|
+
PrintVisitor ps(indent + 1, os);
|
|
142
|
+
refract::Visit(ps, *e.value.second);
|
|
143
|
+
}
|
|
144
|
+
indentOS(indent);
|
|
145
|
+
os << "}\n";
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
VISIT_IMPL(Array)
|
|
150
|
+
VISIT_IMPL(Enum)
|
|
151
|
+
VISIT_IMPL(Object)
|
|
152
|
+
VISIT_IMPL(Extend)
|
|
153
|
+
VISIT_IMPL(Option)
|
|
154
|
+
VISIT_IMPL(Select)
|
|
155
|
+
|
|
156
|
+
void PrintVisitor::Visit(const IElement& e)
|
|
157
|
+
{
|
|
158
|
+
PrintVisitor ps;
|
|
159
|
+
refract::Visit(ps, e);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
}; // namespace refract
|
|
163
|
+
|
|
164
|
+
#undef VISIT_IMPL
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/PrintVisitor.h
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Vilibald Wanča on 09/11/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef REFRACT_PRINTVISITOR_H
|
|
10
|
+
#define REFRACT_PRINTVISITOR_H
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
#include <ostream>
|
|
14
|
+
|
|
15
|
+
#include "ElementFwd.h"
|
|
16
|
+
|
|
17
|
+
namespace refract
|
|
18
|
+
{
|
|
19
|
+
|
|
20
|
+
class PrintVisitor
|
|
21
|
+
{
|
|
22
|
+
int indent;
|
|
23
|
+
std::ostream& os;
|
|
24
|
+
|
|
25
|
+
void indentOS(int ind);
|
|
26
|
+
void printMeta(const IElement& e);
|
|
27
|
+
void printAttr(const IElement& e);
|
|
28
|
+
|
|
29
|
+
public:
|
|
30
|
+
PrintVisitor();
|
|
31
|
+
PrintVisitor(int indentation, std::ostream& os);
|
|
32
|
+
|
|
33
|
+
void operator()(const IElement& e);
|
|
34
|
+
void operator()(const MemberElement& e);
|
|
35
|
+
void operator()(const ObjectElement& e);
|
|
36
|
+
void operator()(const ArrayElement& e);
|
|
37
|
+
void operator()(const EnumElement& e);
|
|
38
|
+
void operator()(const NullElement& e);
|
|
39
|
+
void operator()(const StringElement& e);
|
|
40
|
+
void operator()(const NumberElement& e);
|
|
41
|
+
void operator()(const BooleanElement& e);
|
|
42
|
+
void operator()(const ExtendElement& e);
|
|
43
|
+
void operator()(const OptionElement& e);
|
|
44
|
+
void operator()(const SelectElement& e);
|
|
45
|
+
|
|
46
|
+
static void Visit(const IElement& e);
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
#endif
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/Query.h
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 17/06/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
#ifndef REFRACT_QUERY_H
|
|
9
|
+
#define REFRACT_QUERY_H
|
|
10
|
+
|
|
11
|
+
#include "ElementFwd.h"
|
|
12
|
+
|
|
13
|
+
#include <functional>
|
|
14
|
+
#include <string>
|
|
15
|
+
|
|
16
|
+
namespace refract
|
|
17
|
+
{
|
|
18
|
+
|
|
19
|
+
namespace query {
|
|
20
|
+
|
|
21
|
+
typedef std::function<bool(const IElement&)> Query;
|
|
22
|
+
|
|
23
|
+
class Element {
|
|
24
|
+
const std::string name;
|
|
25
|
+
|
|
26
|
+
public:
|
|
27
|
+
|
|
28
|
+
Element(const std::string& name) : name(name) {}
|
|
29
|
+
|
|
30
|
+
bool operator()(const IElement& e);
|
|
31
|
+
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
}; // namespace refract
|
|
37
|
+
|
|
38
|
+
#endif // #ifndef REFRACT_QUERY_H
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/Registry.cc
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 21/05/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#include "Registry.h"
|
|
10
|
+
#include "Element.h"
|
|
11
|
+
#include "SerializeCompactVisitor.h"
|
|
12
|
+
#include "TypeQueryVisitor.h"
|
|
13
|
+
|
|
14
|
+
#include <algorithm>
|
|
15
|
+
|
|
16
|
+
namespace refract
|
|
17
|
+
{
|
|
18
|
+
|
|
19
|
+
IElement* FindRootAncestor(const std::string& name, const Registry& registry)
|
|
20
|
+
{
|
|
21
|
+
IElement* parent = registry.find(name);
|
|
22
|
+
|
|
23
|
+
while (parent && !isReserved(parent->element())) {
|
|
24
|
+
IElement* next = registry.find(parent->element());
|
|
25
|
+
|
|
26
|
+
if (!next || (next == parent)) {
|
|
27
|
+
return parent;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
parent = next;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return parent;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
std::string Registry::getElementId(IElement* element)
|
|
37
|
+
{
|
|
38
|
+
IElement::MemberElementCollection::const_iterator it = element->meta.find("id");
|
|
39
|
+
|
|
40
|
+
if (it == element->meta.end()) {
|
|
41
|
+
throw LogicError("Element has no ID");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// FIXME: remove dependecy on SosSerializeCompactVisitor
|
|
45
|
+
SosSerializeCompactVisitor v;
|
|
46
|
+
VisitBy(*(*it)->value.second, v);
|
|
47
|
+
|
|
48
|
+
if (StringElement* s = TypeQueryVisitor::as<StringElement>((*it)->value.second)) {
|
|
49
|
+
return s->value;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
throw LogicError("Value of element meta 'id' is not StringElement");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
IElement* Registry::find(const std::string& name) const
|
|
56
|
+
{
|
|
57
|
+
Map::const_iterator i = registrated.find(name);
|
|
58
|
+
|
|
59
|
+
if (i == registrated.end()) {
|
|
60
|
+
return NULL;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return i->second;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
bool Registry::add(IElement* element)
|
|
67
|
+
{
|
|
68
|
+
IElement::MemberElementCollection::const_iterator it = element->meta.find("id");
|
|
69
|
+
|
|
70
|
+
if (it == element->meta.end()) {
|
|
71
|
+
throw LogicError("Element has no ID");
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
std::string id = getElementId(element);
|
|
75
|
+
|
|
76
|
+
if (isReserved(id)) {
|
|
77
|
+
throw LogicError("You can not register a basic element");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (find(id)) {
|
|
81
|
+
// there is already already element with given name
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
registrated[id] = element;
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
bool Registry::remove(const std::string& name) {
|
|
90
|
+
Map::iterator i = registrated.find(name);
|
|
91
|
+
|
|
92
|
+
if (i == registrated.end()) {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
registrated.erase(i);
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
template<typename T>
|
|
101
|
+
static void DeleteSecond(T& pair)
|
|
102
|
+
{
|
|
103
|
+
delete pair.second;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
void Registry::clearAll(bool releaseElements) {
|
|
107
|
+
if (releaseElements) {
|
|
108
|
+
std::for_each(registrated.begin(), registrated.end(), DeleteSecond<Map::value_type>);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
registrated.clear();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
}; // namespace refract
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/Registry.h
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 21/05/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
#ifndef REFRACT_REGISTRY_H
|
|
9
|
+
#define REFRACT_REGISTRY_H
|
|
10
|
+
|
|
11
|
+
#include <map>
|
|
12
|
+
#include <string>
|
|
13
|
+
|
|
14
|
+
namespace refract
|
|
15
|
+
{
|
|
16
|
+
|
|
17
|
+
// Forward declarations of IElement
|
|
18
|
+
struct IElement;
|
|
19
|
+
|
|
20
|
+
class Registry
|
|
21
|
+
{
|
|
22
|
+
// FIXME: potentionally dangerous,
|
|
23
|
+
// if element is deleted and not removed from registry
|
|
24
|
+
// solution: std::shared_ptr<> || std::weak_ptr<>
|
|
25
|
+
typedef std::map<std::string, IElement*> Map;
|
|
26
|
+
Map registrated;
|
|
27
|
+
|
|
28
|
+
std::string getElementId(IElement* element);
|
|
29
|
+
|
|
30
|
+
public:
|
|
31
|
+
|
|
32
|
+
IElement* find(const std::string& name) const;
|
|
33
|
+
|
|
34
|
+
bool add(IElement* element) ;
|
|
35
|
+
bool remove(const std::string& name);
|
|
36
|
+
void clearAll(bool releaseElements = false);
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
IElement* FindRootAncestor(const std::string& name, const Registry& registry);
|
|
40
|
+
|
|
41
|
+
}; // namespace refract
|
|
42
|
+
|
|
43
|
+
#endif // #ifndef REFRACT_REGISTRY_H
|