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,656 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/Element.h
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 18/05/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
#ifndef REFRACT_ELEMENT_H
|
|
9
|
+
#define REFRACT_ELEMENT_H
|
|
10
|
+
|
|
11
|
+
#include <string>
|
|
12
|
+
#include <vector>
|
|
13
|
+
#include <algorithm>
|
|
14
|
+
#include <functional>
|
|
15
|
+
#include <stdexcept>
|
|
16
|
+
#include <iterator>
|
|
17
|
+
|
|
18
|
+
#include "Exception.h"
|
|
19
|
+
#include "Visitor.h"
|
|
20
|
+
|
|
21
|
+
#include "ElementFwd.h"
|
|
22
|
+
|
|
23
|
+
namespace refract
|
|
24
|
+
{
|
|
25
|
+
|
|
26
|
+
class Visitor;
|
|
27
|
+
|
|
28
|
+
template <typename T> struct ElementTypeSelector;
|
|
29
|
+
|
|
30
|
+
// NOTE: alternative solution:
|
|
31
|
+
// find in Element* for ValueType instead of specialized templates
|
|
32
|
+
template <>
|
|
33
|
+
struct ElementTypeSelector<std::string>
|
|
34
|
+
{
|
|
35
|
+
typedef StringElement ElementType;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
template <>
|
|
39
|
+
struct ElementTypeSelector<char*>
|
|
40
|
+
{
|
|
41
|
+
typedef StringElement ElementType;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
template <>
|
|
45
|
+
struct ElementTypeSelector<double>
|
|
46
|
+
{
|
|
47
|
+
typedef NumberElement ElementType;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
template <>
|
|
51
|
+
struct ElementTypeSelector<int>
|
|
52
|
+
{
|
|
53
|
+
typedef NumberElement ElementType;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
template <>
|
|
57
|
+
struct ElementTypeSelector<size_t>
|
|
58
|
+
{
|
|
59
|
+
typedef NumberElement ElementType;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
template <>
|
|
63
|
+
struct ElementTypeSelector<bool>
|
|
64
|
+
{
|
|
65
|
+
typedef BooleanElement ElementType;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
struct IElement
|
|
69
|
+
{
|
|
70
|
+
|
|
71
|
+
struct MemberElementCollection : public std::vector<MemberElement*>
|
|
72
|
+
{
|
|
73
|
+
virtual const_iterator find(const std::string& name) const;
|
|
74
|
+
virtual iterator find(const std::string& name);
|
|
75
|
+
MemberElement& operator[](const std::string& name);
|
|
76
|
+
MemberElement& operator[](const int index);
|
|
77
|
+
virtual void clone(const MemberElementCollection& other); /// < clone elements from `other` to `this`
|
|
78
|
+
virtual void erase(const std::string& key);
|
|
79
|
+
virtual ~MemberElementCollection();
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
MemberElementCollection meta;
|
|
83
|
+
MemberElementCollection attributes;
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* return "name" of element
|
|
87
|
+
* usualy injected by "trait", but you can set own
|
|
88
|
+
* via pair method `element(std::string)`
|
|
89
|
+
*/
|
|
90
|
+
virtual std::string element() const = 0;
|
|
91
|
+
virtual void element(const std::string&) = 0;
|
|
92
|
+
|
|
93
|
+
// NOTE: probably rename to Accept
|
|
94
|
+
virtual void content(Visitor& v) const = 0;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Flags for clone() element - select parts of refract element to be clonned
|
|
98
|
+
* \see Element<T>::clone()
|
|
99
|
+
*/
|
|
100
|
+
typedef enum {
|
|
101
|
+
cMeta = 0x01,
|
|
102
|
+
cAttributes = 0x02,
|
|
103
|
+
cValue = 0x04,
|
|
104
|
+
cElement = 0x08,
|
|
105
|
+
cAll = cMeta | cAttributes | cValue | cElement,
|
|
106
|
+
|
|
107
|
+
cNoMetaId = 0x10,
|
|
108
|
+
} cloneFlags;
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
virtual IElement* clone(const int flag = cAll) const = 0;
|
|
112
|
+
|
|
113
|
+
virtual bool empty() const = 0;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* select seriaization/rendering type of element
|
|
117
|
+
* by default are elements serialized in expanded form,
|
|
118
|
+
* with compact form of meta and attributes
|
|
119
|
+
*
|
|
120
|
+
* `renderType()` allows to change default behavior of selected element
|
|
121
|
+
* (behavioration must be implemented in serialization visitors - it is partially done)
|
|
122
|
+
*/
|
|
123
|
+
|
|
124
|
+
typedef enum {
|
|
125
|
+
rDefault = 0,
|
|
126
|
+
rFull,
|
|
127
|
+
rCompact,
|
|
128
|
+
rCompactContent
|
|
129
|
+
} renderFlags;
|
|
130
|
+
|
|
131
|
+
virtual renderFlags renderType() const = 0;
|
|
132
|
+
virtual void renderType(const renderFlags render) = 0;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Returns new element with content set as `value`
|
|
136
|
+
* Type of returned element depends on type of `value`
|
|
137
|
+
*
|
|
138
|
+
* In current implementation iis able create just primitive element types: (Bool|Number|String)
|
|
139
|
+
*/
|
|
140
|
+
template <typename T>
|
|
141
|
+
static typename ElementTypeSelector<T>::ElementType* Create(const T& value, IElement::renderFlags render = IElement::rDefault)
|
|
142
|
+
{
|
|
143
|
+
typedef typename ElementTypeSelector<T>::ElementType ElementType;
|
|
144
|
+
return new ElementType(value, render);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* overrided for static function `Create()` with classic c-string
|
|
149
|
+
*/
|
|
150
|
+
static StringElement* Create(const char* value, IElement::renderFlags render = IElement::rDefault);
|
|
151
|
+
|
|
152
|
+
virtual ~IElement() {}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
bool isReserved(const std::string& element);
|
|
156
|
+
|
|
157
|
+
/**
|
|
158
|
+
* CRTP implementation of RefractElement
|
|
159
|
+
*/
|
|
160
|
+
template <typename T, typename Trait>
|
|
161
|
+
class Element : public IElement
|
|
162
|
+
{
|
|
163
|
+
|
|
164
|
+
public:
|
|
165
|
+
|
|
166
|
+
typedef Element<T, Trait> Type;
|
|
167
|
+
typedef Trait TraitType;
|
|
168
|
+
typedef typename TraitType::ValueType ValueType;
|
|
169
|
+
|
|
170
|
+
protected:
|
|
171
|
+
std::string element_;
|
|
172
|
+
bool hasContent; ///< was content of element already set? \see empty()
|
|
173
|
+
renderFlags renderStrategy;
|
|
174
|
+
|
|
175
|
+
public:
|
|
176
|
+
|
|
177
|
+
// FIXME: move into protected part, currently still required in ComparableVisitor
|
|
178
|
+
ValueType value;
|
|
179
|
+
|
|
180
|
+
virtual std::string element() const
|
|
181
|
+
{
|
|
182
|
+
return element_.empty() ? TraitType::element() : element_;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
virtual void element(const std::string& name)
|
|
186
|
+
{
|
|
187
|
+
element_ = name;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
void set(const ValueType& val)
|
|
191
|
+
{
|
|
192
|
+
hasContent = true;
|
|
193
|
+
value = val;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
const ValueType& get() const
|
|
197
|
+
{
|
|
198
|
+
return value;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
virtual void content(Visitor& v) const
|
|
202
|
+
{
|
|
203
|
+
v.visit(static_cast<const T&>(*this));
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
virtual IElement* clone(const int flags = cAll) const {
|
|
207
|
+
const Type* self = static_cast<const T*>(this);
|
|
208
|
+
Type* element = new Type;
|
|
209
|
+
|
|
210
|
+
element->hasContent = self->hasContent;
|
|
211
|
+
element->renderStrategy = self->renderStrategy;
|
|
212
|
+
|
|
213
|
+
if (flags & cElement) {
|
|
214
|
+
element->element_ = self->element_;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (flags & cAttributes) {
|
|
218
|
+
element->attributes.clone(self->attributes);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
if (flags & cMeta) {
|
|
222
|
+
element->meta.clone(self->meta);
|
|
223
|
+
|
|
224
|
+
if (flags & cNoMetaId) {
|
|
225
|
+
element->meta.erase("id");
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (flags & cValue) {
|
|
230
|
+
TraitType::cloneValue(value, element->value);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return element;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
Element() : hasContent(false), renderStrategy(IElement::rDefault), value(TraitType::init())
|
|
237
|
+
{
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
virtual bool empty() const
|
|
241
|
+
{
|
|
242
|
+
return !hasContent;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// FIXME: remove all thing related to "render" from base class
|
|
246
|
+
// it should be implemented in "serialize" class
|
|
247
|
+
virtual renderFlags renderType() const
|
|
248
|
+
{
|
|
249
|
+
return renderStrategy;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
virtual void renderType(const renderFlags render)
|
|
253
|
+
{
|
|
254
|
+
renderStrategy = render;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
virtual ~Element()
|
|
258
|
+
{
|
|
259
|
+
TraitType::release(value);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
struct NullElementTrait
|
|
264
|
+
{
|
|
265
|
+
struct null_type {};
|
|
266
|
+
typedef null_type ValueType;
|
|
267
|
+
|
|
268
|
+
static ValueType init() { return ValueType(); }
|
|
269
|
+
static const std::string element() { return "null"; }
|
|
270
|
+
static void release(ValueType&) {}
|
|
271
|
+
static void cloneValue(const ValueType&, ValueType&) {}
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
struct NullElement : Element<NullElement, NullElementTrait> {};
|
|
275
|
+
|
|
276
|
+
struct StringElementTrait
|
|
277
|
+
{
|
|
278
|
+
typedef std::string ValueType;
|
|
279
|
+
|
|
280
|
+
static ValueType init() { return ValueType(); }
|
|
281
|
+
static const std::string element() { return "string"; }
|
|
282
|
+
static void release(ValueType&) {}
|
|
283
|
+
static void cloneValue(const ValueType& self, ValueType& other) { other = self; }
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
struct StringElement : Element<StringElement, StringElementTrait> {
|
|
287
|
+
|
|
288
|
+
StringElement() : Type() {}
|
|
289
|
+
|
|
290
|
+
StringElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
291
|
+
{
|
|
292
|
+
set(value);
|
|
293
|
+
renderType(render);
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
struct NumberElementTrait
|
|
298
|
+
{
|
|
299
|
+
typedef double ValueType;
|
|
300
|
+
|
|
301
|
+
static ValueType init() { return 0; }
|
|
302
|
+
static const std::string element() { return "number"; }
|
|
303
|
+
static void release(ValueType&) {}
|
|
304
|
+
static void cloneValue(const ValueType& self, ValueType& other) { other = self; }
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
struct NumberElement : Element<NumberElement, NumberElementTrait> {
|
|
308
|
+
|
|
309
|
+
NumberElement() : Type() {}
|
|
310
|
+
|
|
311
|
+
NumberElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
312
|
+
{
|
|
313
|
+
set(value);
|
|
314
|
+
renderType(render);
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
struct BooleanElementTrait
|
|
319
|
+
{
|
|
320
|
+
typedef bool ValueType;
|
|
321
|
+
|
|
322
|
+
static ValueType init() { return false; }
|
|
323
|
+
static const std::string element() { return "boolean"; }
|
|
324
|
+
static void release(ValueType&) {}
|
|
325
|
+
static void cloneValue(const ValueType& self, ValueType& other) { other = self; }
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
struct BooleanElement : Element<BooleanElement, BooleanElementTrait> {
|
|
329
|
+
|
|
330
|
+
BooleanElement() : Type() {}
|
|
331
|
+
|
|
332
|
+
BooleanElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type() {
|
|
333
|
+
set(value);
|
|
334
|
+
renderType(render);
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
typedef std::vector<IElement*> RefractElements;
|
|
339
|
+
|
|
340
|
+
template <typename Type = IElement, typename Collection = std::vector<Type*> >
|
|
341
|
+
struct ElementCollectionTrait
|
|
342
|
+
{
|
|
343
|
+
typedef Collection ValueType;
|
|
344
|
+
typedef ElementCollectionTrait<Type, Collection> SelfType;
|
|
345
|
+
|
|
346
|
+
static ValueType init() { return ValueType(); }
|
|
347
|
+
|
|
348
|
+
static void release(ValueType& values)
|
|
349
|
+
{
|
|
350
|
+
for (typename ValueType::iterator it = values.begin(); it != values.end(); ++it) {
|
|
351
|
+
delete (*it);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
values.clear();
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* WARN: possible dangerous method. We trust underlaying type in collection
|
|
359
|
+
* if anyone push casted type, bad things can happen.
|
|
360
|
+
*/
|
|
361
|
+
static typename ValueType::value_type typedMemberClone(IElement* element, const IElement::cloneFlags flags) {
|
|
362
|
+
if (!element) {
|
|
363
|
+
return NULL;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
return static_cast<typename ValueType::value_type>(element->clone(flags));
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
static void cloneValue(const ValueType& self, ValueType& other) {
|
|
370
|
+
std::transform(self.begin(), self.end(),
|
|
371
|
+
std::back_inserter(other),
|
|
372
|
+
std::bind(&SelfType::typedMemberClone, std::placeholders::_1, IElement::cAll));
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
struct ArrayElementTrait : public ElementCollectionTrait<>
|
|
378
|
+
{
|
|
379
|
+
static const std::string element() { return "array"; }
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
struct ArrayElement : Element<ArrayElement, ArrayElementTrait>
|
|
383
|
+
{
|
|
384
|
+
ArrayElement() : Type()
|
|
385
|
+
{
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
ArrayElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
389
|
+
{
|
|
390
|
+
set(value);
|
|
391
|
+
renderType(render);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
void push_back(IElement* e)
|
|
395
|
+
{
|
|
396
|
+
// FIXME: warn if MemberElement
|
|
397
|
+
// there is no way to present "key: value" in array
|
|
398
|
+
hasContent = true;
|
|
399
|
+
value.push_back(e);
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
|
|
403
|
+
struct EnumElementTrait : public ElementCollectionTrait<>
|
|
404
|
+
{
|
|
405
|
+
static const std::string element() { return "enum"; }
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
struct EnumElement : Element<EnumElement, EnumElementTrait>
|
|
409
|
+
{
|
|
410
|
+
EnumElement() : Type()
|
|
411
|
+
{
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
EnumElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
415
|
+
{
|
|
416
|
+
set(value);
|
|
417
|
+
renderType(render);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
void push_back(IElement* e)
|
|
421
|
+
{
|
|
422
|
+
hasContent = true;
|
|
423
|
+
value.push_back(e);
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
struct MemberElementTrait
|
|
428
|
+
{
|
|
429
|
+
typedef std::pair<IElement*, IElement*> ValueType;
|
|
430
|
+
|
|
431
|
+
static ValueType init() { return ValueType(); }
|
|
432
|
+
static const std::string element() { return "member"; }
|
|
433
|
+
|
|
434
|
+
static void release(ValueType& member)
|
|
435
|
+
{
|
|
436
|
+
if (member.first) {
|
|
437
|
+
delete member.first;
|
|
438
|
+
member.first = NULL;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
if (member.second) {
|
|
442
|
+
delete member.second;
|
|
443
|
+
member.second = NULL;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
static void cloneValue(const ValueType& self, ValueType& other) {
|
|
448
|
+
other.first = self.first
|
|
449
|
+
? self.first->clone()
|
|
450
|
+
: NULL;
|
|
451
|
+
|
|
452
|
+
other.second = self.second
|
|
453
|
+
? self.second->clone()
|
|
454
|
+
: NULL;
|
|
455
|
+
}
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
struct MemberElement : Element<MemberElement, MemberElementTrait>
|
|
459
|
+
{
|
|
460
|
+
|
|
461
|
+
MemberElement() : Type()
|
|
462
|
+
{
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
MemberElement(IElement* key, IElement* value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
466
|
+
{
|
|
467
|
+
set(key, value);
|
|
468
|
+
renderType(render);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
MemberElement(const std::string& key, IElement* value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
472
|
+
{
|
|
473
|
+
set(key, value);
|
|
474
|
+
renderType(render);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
void set(const std::string& key, IElement* element)
|
|
478
|
+
{
|
|
479
|
+
set(IElement::Create(key), element);
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
void set(IElement* key, IElement* element)
|
|
483
|
+
{
|
|
484
|
+
if (value.first != NULL) {
|
|
485
|
+
delete value.first;
|
|
486
|
+
value.first = NULL;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
value.first = key;
|
|
490
|
+
|
|
491
|
+
if (value.second != NULL) {
|
|
492
|
+
delete value.second;
|
|
493
|
+
value.second = NULL;
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
value.second = element;
|
|
497
|
+
|
|
498
|
+
hasContent = true;
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
MemberElement& operator=(IElement* element)
|
|
502
|
+
{
|
|
503
|
+
if (value.second != NULL) {
|
|
504
|
+
delete value.second;
|
|
505
|
+
value.second = NULL;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
value.second = element;
|
|
509
|
+
return *this;
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
struct ObjectElementTrait : public ElementCollectionTrait<>
|
|
514
|
+
{
|
|
515
|
+
// Use inherited ValueType definition instead of specialized std::vector<MemberElement*>
|
|
516
|
+
// because ObjectElement can contain:
|
|
517
|
+
// - (array[Member Element])
|
|
518
|
+
// - (object)
|
|
519
|
+
// - (Extend Element)
|
|
520
|
+
// - (Select Element)
|
|
521
|
+
// - (Ref Element)
|
|
522
|
+
//
|
|
523
|
+
// FIXME: behavioration for content types different than
|
|
524
|
+
// `(array[Member Element])` is not currently implemented
|
|
525
|
+
|
|
526
|
+
static const std::string element() { return "object"; }
|
|
527
|
+
};
|
|
528
|
+
|
|
529
|
+
struct ObjectElement : Element<ObjectElement, ObjectElementTrait>
|
|
530
|
+
{
|
|
531
|
+
|
|
532
|
+
ObjectElement() : Type()
|
|
533
|
+
{
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
ObjectElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
537
|
+
{
|
|
538
|
+
set(value);
|
|
539
|
+
renderType(render);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
ObjectElement(IElement* e, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
543
|
+
{
|
|
544
|
+
renderType(render);
|
|
545
|
+
value.push_back(e);
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
void push_back(IElement* e)
|
|
549
|
+
{
|
|
550
|
+
// FIXME:
|
|
551
|
+
// probably add check for allowed type
|
|
552
|
+
hasContent = true;
|
|
553
|
+
value.push_back(e);
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
struct ExtendElementTrait : public ElementCollectionTrait<>
|
|
558
|
+
{
|
|
559
|
+
static const std::string element() { return "extend"; }
|
|
560
|
+
};
|
|
561
|
+
|
|
562
|
+
struct ExtendElement : Element<ExtendElement, ExtendElementTrait>
|
|
563
|
+
{
|
|
564
|
+
ExtendElement() : Type()
|
|
565
|
+
{
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
ExtendElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
569
|
+
{
|
|
570
|
+
set(value);
|
|
571
|
+
renderType(render);
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
void push_back(IElement* e);
|
|
575
|
+
void set(const ValueType& val);
|
|
576
|
+
|
|
577
|
+
IElement* merge() const;
|
|
578
|
+
};
|
|
579
|
+
|
|
580
|
+
struct OptionElementTrait : public ElementCollectionTrait<>
|
|
581
|
+
{
|
|
582
|
+
static const std::string element() { return "option"; }
|
|
583
|
+
};
|
|
584
|
+
|
|
585
|
+
struct OptionElement : Element<OptionElement, OptionElementTrait>
|
|
586
|
+
{
|
|
587
|
+
|
|
588
|
+
OptionElement() : Type()
|
|
589
|
+
{
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
OptionElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
593
|
+
{
|
|
594
|
+
set(value);
|
|
595
|
+
renderType(render);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
OptionElement(IElement* e, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
599
|
+
{
|
|
600
|
+
renderType(render);
|
|
601
|
+
value.push_back(e);
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
void push_back(IElement* e)
|
|
605
|
+
{
|
|
606
|
+
// FIXME:
|
|
607
|
+
// probably add check for allowed type
|
|
608
|
+
hasContent = true;
|
|
609
|
+
value.push_back(e);
|
|
610
|
+
}
|
|
611
|
+
};
|
|
612
|
+
|
|
613
|
+
struct SelectElementTrait : public ElementCollectionTrait<OptionElement>
|
|
614
|
+
{
|
|
615
|
+
static const std::string element() { return "select"; }
|
|
616
|
+
|
|
617
|
+
static void cloneValue(const ValueType& self, ValueType& other)
|
|
618
|
+
{
|
|
619
|
+
for (std::vector<OptionElement*>::const_iterator it = self.begin(); it != self.end(); ++it) {
|
|
620
|
+
IElement* clonned = (*it)->clone();
|
|
621
|
+
other.push_back(static_cast<OptionElement*>(clonned));
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
};
|
|
625
|
+
|
|
626
|
+
struct SelectElement : Element<SelectElement, SelectElementTrait>
|
|
627
|
+
{
|
|
628
|
+
|
|
629
|
+
SelectElement() : Type()
|
|
630
|
+
{
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
SelectElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
634
|
+
{
|
|
635
|
+
set(value);
|
|
636
|
+
renderType(render);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
SelectElement(OptionElement* e, IElement::renderFlags render = IElement::rDefault) : Type()
|
|
640
|
+
{
|
|
641
|
+
renderType(render);
|
|
642
|
+
value.push_back(e);
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
void push_back(OptionElement* e)
|
|
646
|
+
{
|
|
647
|
+
// FIXME:
|
|
648
|
+
// probably add check for allowed type
|
|
649
|
+
hasContent = true;
|
|
650
|
+
value.push_back(e);
|
|
651
|
+
}
|
|
652
|
+
};
|
|
653
|
+
|
|
654
|
+
};
|
|
655
|
+
|
|
656
|
+
#endif // #ifndef REFRACT_ELEMENT_H
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//
|
|
2
|
+
// refract/ElementFwd.h
|
|
3
|
+
// librefract
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 01/01/2016
|
|
6
|
+
// Copyright (c) 2016 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef REFRACT_ELEMENTFWD_H
|
|
10
|
+
#define REFRACT_ELEMENTFWD_H
|
|
11
|
+
|
|
12
|
+
namespace refract
|
|
13
|
+
{
|
|
14
|
+
|
|
15
|
+
// Forward declarations of Elements
|
|
16
|
+
struct IElement;
|
|
17
|
+
|
|
18
|
+
struct NullElement;
|
|
19
|
+
|
|
20
|
+
struct StringElement;
|
|
21
|
+
struct NumberElement;
|
|
22
|
+
struct BooleanElement;
|
|
23
|
+
|
|
24
|
+
struct MemberElement;
|
|
25
|
+
|
|
26
|
+
struct ArrayElement;
|
|
27
|
+
struct EnumElement;
|
|
28
|
+
struct ObjectElement;
|
|
29
|
+
|
|
30
|
+
struct ExtendElement;
|
|
31
|
+
|
|
32
|
+
struct OptionElement;
|
|
33
|
+
struct SelectElement;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
#endif /* #ifndef REFRACT_ELEMENTFWD_H */
|