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,214 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MSONValueMemberParser.cc
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Pavan Kumar Sunkara on 11/13/14.
|
|
6
|
+
// Copyright (c) 2014 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#include "MSONOneOfParser.h"
|
|
10
|
+
#include "MSONPropertyMemberParser.h"
|
|
11
|
+
|
|
12
|
+
namespace snowcrash {
|
|
13
|
+
|
|
14
|
+
/** Implementation of nestedSectionType */
|
|
15
|
+
SectionType SectionProcessor<mson::ValueMember>::nestedSectionType(const MarkdownNodeIterator& node) {
|
|
16
|
+
|
|
17
|
+
SectionType nestedType = UndefinedSectionType;
|
|
18
|
+
|
|
19
|
+
// Check if mson type section section
|
|
20
|
+
nestedType = SectionProcessor<mson::TypeSection>::sectionType(node);
|
|
21
|
+
|
|
22
|
+
if (nestedType != UndefinedSectionType) {
|
|
23
|
+
return nestedType;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Check if mson mixin section
|
|
27
|
+
nestedType = SectionProcessor<mson::Mixin>::sectionType(node);
|
|
28
|
+
|
|
29
|
+
if (nestedType != UndefinedSectionType) {
|
|
30
|
+
return nestedType;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Check if mson one of section
|
|
34
|
+
nestedType = SectionProcessor<mson::OneOf>::sectionType(node);
|
|
35
|
+
|
|
36
|
+
if (nestedType != UndefinedSectionType) {
|
|
37
|
+
return nestedType;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return MSONSectionType;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Implementation of resolveAndProcessMSONSection */
|
|
44
|
+
MarkdownNodeIterator SectionProcessor<mson::ValueMember>::processMSONSection(const MarkdownNodeIterator& node,
|
|
45
|
+
const MarkdownNodes& siblings,
|
|
46
|
+
SectionParserData& pd,
|
|
47
|
+
const ParseResultRef<mson::TypeSections>& sections,
|
|
48
|
+
mson::BaseType& baseType) {
|
|
49
|
+
|
|
50
|
+
MarkdownNodeIterator cur = node;
|
|
51
|
+
|
|
52
|
+
// If we encounter a header node, stop parsing. Headers which are not
|
|
53
|
+
// type section signatures are ineligible to be nested sections of a MSON section
|
|
54
|
+
if (node->type == mdp::HeaderMarkdownNodeType) {
|
|
55
|
+
return cur;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// If the nodes follow after some block description without member
|
|
59
|
+
// seperator, then they are treated as description
|
|
60
|
+
if (!sections.node.empty() && sections.node.back().klass == mson::TypeSection::BlockDescriptionClass) {
|
|
61
|
+
return SectionProcessor<mson::ValueMember>::blockDescription(node, pd, sections.node, sections.sourceMap);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Try to resolve base type if not given
|
|
65
|
+
resolveImplicitBaseType(node, pd.sectionContext(), baseType);
|
|
66
|
+
|
|
67
|
+
// Build a section to indicate nested members
|
|
68
|
+
if (sections.node.empty() ||
|
|
69
|
+
(!sections.node.empty() && sections.node.back().klass != mson::TypeSection::MemberTypeClass)) {
|
|
70
|
+
|
|
71
|
+
mson::TypeSection typeSection(mson::TypeSection::MemberTypeClass);
|
|
72
|
+
|
|
73
|
+
typeSection.baseType = baseType;
|
|
74
|
+
sections.node.push_back(typeSection);
|
|
75
|
+
|
|
76
|
+
if (pd.exportSourceMap()) {
|
|
77
|
+
|
|
78
|
+
SourceMap<mson::TypeSection> typeSectionSM;
|
|
79
|
+
sections.sourceMap.collection.push_back(typeSectionSM);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
mson::Element element;
|
|
84
|
+
SourceMap<mson::Element> elementSM;
|
|
85
|
+
|
|
86
|
+
if (pd.sectionContext() == MSONMixinSectionType) {
|
|
87
|
+
|
|
88
|
+
IntermediateParseResult<mson::Mixin> mixin(sections.report);
|
|
89
|
+
cur = MSONMixinParser::parse(node, siblings, pd, mixin);
|
|
90
|
+
|
|
91
|
+
if (!isSameBaseType(baseType, mixin.node.baseType)) {
|
|
92
|
+
|
|
93
|
+
// WARN: Mixin base type should be compatible with the parent base type
|
|
94
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
95
|
+
sections.report.warnings.push_back(Warning("mixin base type should be the same as parent base type. objects should contain object mixins. arrays should contain array mixins",
|
|
96
|
+
LogicalErrorWarning,
|
|
97
|
+
sourceMap));
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
element.build(mixin.node);
|
|
101
|
+
|
|
102
|
+
if (pd.exportSourceMap()) {
|
|
103
|
+
elementSM.mixin = mixin.sourceMap;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (pd.sectionContext() == MSONOneOfSectionType) {
|
|
108
|
+
|
|
109
|
+
if (baseType != mson::ObjectBaseType &&
|
|
110
|
+
baseType != mson::ImplicitObjectBaseType) {
|
|
111
|
+
|
|
112
|
+
// WARN: One of can not be a nested member for a non object structure type
|
|
113
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
114
|
+
sections.report.warnings.push_back(Warning("one of may be a nested member of a object sub-types only",
|
|
115
|
+
LogicalErrorWarning,
|
|
116
|
+
sourceMap));
|
|
117
|
+
|
|
118
|
+
return cur;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
IntermediateParseResult<mson::OneOf> oneOf(sections.report);
|
|
122
|
+
cur = MSONOneOfParser::parse(node, siblings, pd, oneOf);
|
|
123
|
+
|
|
124
|
+
element.build(oneOf.node);
|
|
125
|
+
|
|
126
|
+
if (pd.exportSourceMap()) {
|
|
127
|
+
elementSM = oneOf.sourceMap;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
|
|
132
|
+
if ((baseType == mson::ValueBaseType ||
|
|
133
|
+
baseType == mson::ImplicitValueBaseType) &&
|
|
134
|
+
node->type == mdp::ListItemMarkdownNodeType) {
|
|
135
|
+
|
|
136
|
+
IntermediateParseResult<mson::ValueMember> valueMember(sections.report);
|
|
137
|
+
cur = MSONValueMemberParser::parse(node, siblings, pd, valueMember);
|
|
138
|
+
|
|
139
|
+
element.build(valueMember.node);
|
|
140
|
+
|
|
141
|
+
if ((valueMember.node.valueDefinition.typeDefinition.baseType == mson::ImplicitObjectBaseType ||
|
|
142
|
+
valueMember.node.valueDefinition.typeDefinition.baseType == mson::ObjectBaseType) &&
|
|
143
|
+
!valueMember.node.valueDefinition.values.empty()) {
|
|
144
|
+
// WARN: object definition contain value
|
|
145
|
+
// e.g
|
|
146
|
+
// - a (array)
|
|
147
|
+
// - key (object)
|
|
148
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
149
|
+
sections.report.warnings.push_back(Warning("array member definition of type 'object' contains value. You should use type definition without value eg. '- (object)'",
|
|
150
|
+
LogicalErrorWarning,
|
|
151
|
+
sourceMap));
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (pd.exportSourceMap()) {
|
|
155
|
+
elementSM.value = valueMember.sourceMap;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if ((baseType == mson::ObjectBaseType ||
|
|
159
|
+
baseType == mson::ImplicitObjectBaseType) &&
|
|
160
|
+
node->type == mdp::ListItemMarkdownNodeType) {
|
|
161
|
+
|
|
162
|
+
IntermediateParseResult<mson::PropertyMember> propertyMember(sections.report);
|
|
163
|
+
cur = MSONPropertyMemberParser::parse(node, siblings, pd, propertyMember);
|
|
164
|
+
|
|
165
|
+
element.build(propertyMember.node);
|
|
166
|
+
|
|
167
|
+
if ((propertyMember.node.valueDefinition.typeDefinition.baseType == mson::ImplicitObjectBaseType ||
|
|
168
|
+
propertyMember.node.valueDefinition.typeDefinition.baseType == mson::ObjectBaseType) &&
|
|
169
|
+
!propertyMember.node.valueDefinition.values.empty()) {
|
|
170
|
+
// WARN: object definition contain value
|
|
171
|
+
// e.g
|
|
172
|
+
// - key: value (object)
|
|
173
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
174
|
+
sections.report.warnings.push_back(Warning("'object' with value definition. You should use type definition without value eg. '- key (object)'",
|
|
175
|
+
LogicalErrorWarning,
|
|
176
|
+
sourceMap));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (pd.exportSourceMap()) {
|
|
180
|
+
elementSM.property = propertyMember.sourceMap;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if (baseType == mson::PrimitiveBaseType ||
|
|
184
|
+
baseType == mson::ImplicitPrimitiveBaseType) {
|
|
185
|
+
|
|
186
|
+
// WARN: Primitive type members should not have nested members
|
|
187
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
188
|
+
sections.report.warnings.push_back(Warning("sub-types of primitive types should not have nested members",
|
|
189
|
+
LogicalErrorWarning,
|
|
190
|
+
sourceMap));
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
|
|
194
|
+
// WARN: Ignoring unrecognized block in mson nested members
|
|
195
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
196
|
+
sections.report.warnings.push_back(Warning("ignorning unrecognized block",
|
|
197
|
+
IgnoringWarning,
|
|
198
|
+
sourceMap));
|
|
199
|
+
|
|
200
|
+
cur = ++MarkdownNodeIterator(node);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (element.klass != mson::Element::UndefinedClass) {
|
|
205
|
+
sections.node.back().content.elements().push_back(element);
|
|
206
|
+
|
|
207
|
+
if (pd.exportSourceMap()) {
|
|
208
|
+
sections.sourceMap.collection.back().elements().collection.push_back(elementSM);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return cur;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MSONValueMemberParser.h
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Pavan Kumar Sunkara on 10/22/14.
|
|
6
|
+
// Copyright (c) 2014 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef SNOWCRASH_MSONVALUEMEMBERPARSER_H
|
|
10
|
+
#define SNOWCRASH_MSONVALUEMEMBERPARSER_H
|
|
11
|
+
|
|
12
|
+
#include "SectionParser.h"
|
|
13
|
+
#include "MSONUtility.h"
|
|
14
|
+
#include "MSONTypeSectionParser.h"
|
|
15
|
+
|
|
16
|
+
using namespace scpl;
|
|
17
|
+
|
|
18
|
+
namespace snowcrash {
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* MSON Value Member Section Processor
|
|
22
|
+
*/
|
|
23
|
+
template<>
|
|
24
|
+
struct SectionProcessor<mson::ValueMember> : public SignatureSectionProcessorBase<mson::ValueMember> {
|
|
25
|
+
|
|
26
|
+
static Signature parseSignature(const MarkdownNodeIterator& node,
|
|
27
|
+
snowcrash::SectionParserData& pd,
|
|
28
|
+
const SignatureTraits& traits,
|
|
29
|
+
snowcrash::Report& report,
|
|
30
|
+
const mdp::ByteBuffer& subjectOrig = "") {
|
|
31
|
+
|
|
32
|
+
std::string subject = subjectOrig;
|
|
33
|
+
|
|
34
|
+
if (node->type == mdp::HeaderMarkdownNodeType) {
|
|
35
|
+
subject = ReconstructMarkdownHeader(*node);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return SignatureSectionProcessorBase<mson::ValueMember>::parseSignature(node, pd, traits, report, subject);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
static SignatureTraits signatureTraits() {
|
|
42
|
+
|
|
43
|
+
SignatureTraits signatureTraits(SignatureTraits::ValuesTrait |
|
|
44
|
+
SignatureTraits::AttributesTrait |
|
|
45
|
+
SignatureTraits::ContentTrait);
|
|
46
|
+
|
|
47
|
+
return signatureTraits;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
static MarkdownNodeIterator finalizeSignature(const MarkdownNodeIterator& node,
|
|
51
|
+
SectionParserData& pd,
|
|
52
|
+
const Signature& signature,
|
|
53
|
+
const ParseResultRef<mson::ValueMember>& out) {
|
|
54
|
+
|
|
55
|
+
return SectionProcessor<mson::ValueMember>::useSignatureData(node, pd, signature, out.report, out.node, out.sourceMap);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static MarkdownNodeIterator processDescription(const MarkdownNodeIterator& node,
|
|
59
|
+
const MarkdownNodes& siblings,
|
|
60
|
+
SectionParserData& pd,
|
|
61
|
+
const ParseResultRef<mson::ValueMember>& out) {
|
|
62
|
+
|
|
63
|
+
return SectionProcessor<mson::ValueMember>::blockDescription(node, pd, out.node.sections, out.sourceMap.sections);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
|
|
67
|
+
const MarkdownNodes& siblings,
|
|
68
|
+
SectionParserData& pd,
|
|
69
|
+
const ParseResultRef<mson::ValueMember>& out) {
|
|
70
|
+
|
|
71
|
+
ParseResultRef<mson::TypeSections> typeSections(out.report, out.node.sections, out.sourceMap.sections);
|
|
72
|
+
|
|
73
|
+
return SectionProcessor<mson::ValueMember>
|
|
74
|
+
::processNestedMembers<MSONTypeSectionListParser>(node, siblings, pd, typeSections,
|
|
75
|
+
out.node.valueDefinition.typeDefinition.baseType);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
static bool isDescriptionNode(const MarkdownNodeIterator& node,
|
|
79
|
+
SectionType sectionType) {
|
|
80
|
+
|
|
81
|
+
if (SectionProcessor<mson::ValueMember>::nestedSectionType(node) != MSONSectionType ||
|
|
82
|
+
node->type == mdp::HeaderMarkdownNodeType) {
|
|
83
|
+
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (node->type != mdp::ListItemMarkdownNodeType) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return SectionProcessorBase<mson::ValueMember>::isDescriptionNode(node, sectionType);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
static SectionType nestedSectionType(const MarkdownNodeIterator&);
|
|
95
|
+
|
|
96
|
+
static void finalize(const MarkdownNodeIterator& node,
|
|
97
|
+
SectionParserData& pd,
|
|
98
|
+
const ParseResultRef<mson::ValueMember>& out) {
|
|
99
|
+
|
|
100
|
+
SectionProcessor<mson::ValueMember>::finalizeImplicitBaseType(out.node.valueDefinition.typeDefinition.baseType);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* \brief Use signature data to fill up the AST
|
|
105
|
+
*
|
|
106
|
+
* \param node Node to process
|
|
107
|
+
* \param pd Section Parser Data
|
|
108
|
+
* \param signature Signature data
|
|
109
|
+
* \param report Parse result report
|
|
110
|
+
* \param valueMember MSON Value Member
|
|
111
|
+
* \param sourceMap MSON Value Member source map
|
|
112
|
+
*/
|
|
113
|
+
static MarkdownNodeIterator useSignatureData(const MarkdownNodeIterator& node,
|
|
114
|
+
SectionParserData& pd,
|
|
115
|
+
const Signature& signature,
|
|
116
|
+
Report& report,
|
|
117
|
+
mson::ValueMember& valueMember,
|
|
118
|
+
SourceMap<mson::ValueMember>& sourceMap) {
|
|
119
|
+
|
|
120
|
+
valueMember.description = signature.content;
|
|
121
|
+
|
|
122
|
+
if (pd.exportSourceMap() && !signature.content.empty()) {
|
|
123
|
+
sourceMap.description.sourceMap = node->sourceMap;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
mson::parseTypeDefinition(node, pd, signature.attributes, report, valueMember.valueDefinition.typeDefinition);
|
|
127
|
+
parseRemainingContent(node, pd, signature.remainingContent, valueMember.sections, sourceMap.sections);
|
|
128
|
+
|
|
129
|
+
// Check for circular references
|
|
130
|
+
mson::TypeSpecification typeSpecification = valueMember.valueDefinition.typeDefinition.typeSpecification;
|
|
131
|
+
|
|
132
|
+
if (typeSpecification.name.base == mson::ArrayTypeName ||
|
|
133
|
+
typeSpecification.name.base == mson::EnumTypeName) {
|
|
134
|
+
|
|
135
|
+
for (mson::TypeNames::iterator it = typeSpecification.nestedTypes.begin();
|
|
136
|
+
it != typeSpecification.nestedTypes.end();
|
|
137
|
+
++it) {
|
|
138
|
+
|
|
139
|
+
if (!it->symbol.literal.empty() && !it->symbol.variable) {
|
|
140
|
+
mson::addDependency(node, pd, it->symbol.literal, pd.namedTypeContext, report);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else if (typeSpecification.name.base == mson::UndefinedTypeName &&
|
|
145
|
+
!typeSpecification.name.symbol.literal.empty() &&
|
|
146
|
+
!typeSpecification.name.symbol.variable) {
|
|
147
|
+
|
|
148
|
+
mson::addDependency(node, pd, typeSpecification.name.symbol.literal, pd.namedTypeContext, report);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Properly parse the values in the signature
|
|
152
|
+
if (signature.values.size() > 1) {
|
|
153
|
+
|
|
154
|
+
if (valueMember.valueDefinition.typeDefinition.baseType == mson::PrimitiveBaseType) {
|
|
155
|
+
|
|
156
|
+
valueMember.valueDefinition.values.push_back(mson::parseValue(signature.value));
|
|
157
|
+
|
|
158
|
+
if (pd.exportSourceMap()) {
|
|
159
|
+
sourceMap.valueDefinition.sourceMap = node->sourceMap;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return ++MarkdownNodeIterator(node);
|
|
163
|
+
}
|
|
164
|
+
else if (valueMember.valueDefinition.typeDefinition.baseType == mson::UndefinedBaseType) {
|
|
165
|
+
valueMember.valueDefinition.typeDefinition.baseType = mson::ImplicitValueBaseType;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
for (std::vector<mdp::ByteBuffer>::const_iterator it = signature.values.begin();
|
|
170
|
+
it != signature.values.end();
|
|
171
|
+
it++) {
|
|
172
|
+
|
|
173
|
+
valueMember.valueDefinition.values.push_back(mson::parseValue(*it));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (pd.exportSourceMap() && !valueMember.valueDefinition.empty()) {
|
|
177
|
+
sourceMap.valueDefinition.sourceMap = node->sourceMap;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (pd.exportSourceMap()) {
|
|
181
|
+
sourceMap.sourceMap = node->sourceMap;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return ++MarkdownNodeIterator(node);
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* \brief Parse the signature's remaining content
|
|
189
|
+
*
|
|
190
|
+
* \param node Node to process
|
|
191
|
+
* \param pd Section Parser Data
|
|
192
|
+
* \param remainingContent Signature's remaining content
|
|
193
|
+
* \param sections MSON Type Section collection
|
|
194
|
+
* \param sourceMap MSON Type Section collection source map
|
|
195
|
+
*/
|
|
196
|
+
static void parseRemainingContent(const MarkdownNodeIterator& node,
|
|
197
|
+
SectionParserData& pd,
|
|
198
|
+
const mdp::ByteBuffer& remainingContent,
|
|
199
|
+
mson::TypeSections& sections,
|
|
200
|
+
SourceMap<mson::TypeSections>& sourceMap) {
|
|
201
|
+
|
|
202
|
+
if (remainingContent.empty()) {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
mson::TypeSection typeSection(mson::TypeSection::BlockDescriptionClass);
|
|
207
|
+
|
|
208
|
+
typeSection.content.description = remainingContent;
|
|
209
|
+
sections.push_back(typeSection);
|
|
210
|
+
|
|
211
|
+
if (pd.exportSourceMap()) {
|
|
212
|
+
|
|
213
|
+
SourceMap<mson::TypeSection> typeSectionSM;
|
|
214
|
+
|
|
215
|
+
typeSectionSM.description.sourceMap = node->sourceMap;
|
|
216
|
+
sourceMap.collection.push_back(typeSectionSM);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* \brief Add block description to the mson member
|
|
222
|
+
*
|
|
223
|
+
* \param node Node to process
|
|
224
|
+
* \param pd Section Parser Data
|
|
225
|
+
* \param sections MSON Type Section collection
|
|
226
|
+
* \param sourceMap MSON Type Section collection source map
|
|
227
|
+
*/
|
|
228
|
+
static MarkdownNodeIterator blockDescription(const MarkdownNodeIterator& node,
|
|
229
|
+
SectionParserData& pd,
|
|
230
|
+
mson::TypeSections& sections,
|
|
231
|
+
SourceMap<mson::TypeSections>& sourceMap) {
|
|
232
|
+
|
|
233
|
+
if (sections.empty() ||
|
|
234
|
+
(sections.size() == 1 &&
|
|
235
|
+
sections[0].klass == mson::TypeSection::BlockDescriptionClass)) {
|
|
236
|
+
|
|
237
|
+
if (sections.empty()) {
|
|
238
|
+
|
|
239
|
+
mson::TypeSection typeSection(mson::TypeSection::BlockDescriptionClass);
|
|
240
|
+
sections.push_back(typeSection);
|
|
241
|
+
|
|
242
|
+
if (pd.exportSourceMap()) {
|
|
243
|
+
|
|
244
|
+
SourceMap<mson::TypeSection> typeSectionSM;
|
|
245
|
+
sourceMap.collection.push_back(typeSectionSM);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
if (!sections[0].content.description.empty()) {
|
|
250
|
+
TwoNewLines(sections[0].content.description);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
mdp::ByteBuffer content = mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
|
|
254
|
+
TrimString(content);
|
|
255
|
+
|
|
256
|
+
sections[0].content.description += content;
|
|
257
|
+
|
|
258
|
+
if (pd.exportSourceMap() && !content.empty()) {
|
|
259
|
+
sourceMap.collection[0].description.sourceMap.append(node->sourceMap);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return ++MarkdownNodeIterator(node);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
return node;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* \brief Process nested member types for a member (either property or value) and Named Type.
|
|
270
|
+
*
|
|
271
|
+
* \param node Node to process
|
|
272
|
+
* \param siblings Siblings of the node being processed
|
|
273
|
+
* \param pd Section Parser Data
|
|
274
|
+
* \param sections MSON Type Section collection Parse Result
|
|
275
|
+
* \param baseType Base Type of the MSON member to be sent for nested type sections
|
|
276
|
+
*/
|
|
277
|
+
template<typename PARSER>
|
|
278
|
+
static MarkdownNodeIterator processNestedMembers(const MarkdownNodeIterator& node,
|
|
279
|
+
const MarkdownNodes& siblings,
|
|
280
|
+
SectionParserData& pd,
|
|
281
|
+
const ParseResultRef<mson::TypeSections>& sections,
|
|
282
|
+
mson::BaseType& baseType) {
|
|
283
|
+
|
|
284
|
+
MarkdownNodeIterator cur = node;
|
|
285
|
+
|
|
286
|
+
if (pd.sectionContext() == MSONSectionType ||
|
|
287
|
+
pd.sectionContext() == MSONMixinSectionType ||
|
|
288
|
+
pd.sectionContext() == MSONOneOfSectionType) {
|
|
289
|
+
|
|
290
|
+
cur = processMSONSection(node, siblings, pd, sections, baseType);
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
|
|
294
|
+
// Try to resolve base type if not given before parsing further
|
|
295
|
+
resolveImplicitBaseType(node, pd.sectionContext(), baseType);
|
|
296
|
+
|
|
297
|
+
IntermediateParseResult<mson::TypeSection> typeSection(sections.report);
|
|
298
|
+
typeSection.node.baseType = baseType;
|
|
299
|
+
|
|
300
|
+
cur = PARSER::parse(node, siblings, pd, typeSection);
|
|
301
|
+
|
|
302
|
+
if (typeSection.node.klass != mson::TypeSection::UndefinedClass) {
|
|
303
|
+
sections.node.push_back(typeSection.node);
|
|
304
|
+
|
|
305
|
+
if (pd.exportSourceMap()) {
|
|
306
|
+
sections.sourceMap.collection.push_back(typeSection.sourceMap);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
return cur;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* \brief Given a MSONSectionType nested section, process it
|
|
316
|
+
*
|
|
317
|
+
* \param node Node to process
|
|
318
|
+
* \param siblings Siblings of the node being processed
|
|
319
|
+
* \param pd Section Parser Data
|
|
320
|
+
* \param sections MSON Type Section collection Parse Result
|
|
321
|
+
* \param baseType Base Type of the MSON member to be sent for nested type sections
|
|
322
|
+
*/
|
|
323
|
+
static MarkdownNodeIterator processMSONSection(const MarkdownNodeIterator& node,
|
|
324
|
+
const MarkdownNodes& siblings,
|
|
325
|
+
SectionParserData& pd,
|
|
326
|
+
const ParseResultRef<mson::TypeSections>& sections,
|
|
327
|
+
mson::BaseType& baseType);
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* \brief If base type is still undefined, make it implicit string
|
|
331
|
+
*
|
|
332
|
+
* \param MSON member base type
|
|
333
|
+
*/
|
|
334
|
+
static void finalizeImplicitBaseType(mson::BaseType& baseType) {
|
|
335
|
+
|
|
336
|
+
if (baseType == mson::UndefinedBaseType) {
|
|
337
|
+
baseType = mson::ImplicitPrimitiveBaseType;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* \brief Resolve base types if possible, based on nested node given
|
|
343
|
+
*
|
|
344
|
+
* \param node Node to process
|
|
345
|
+
* \param sectionType Section Type
|
|
346
|
+
* \param baseType Base Type of the MSON member that needs to be resolved
|
|
347
|
+
*/
|
|
348
|
+
static void resolveImplicitBaseType(const MarkdownNodeIterator& node,
|
|
349
|
+
const SectionType& sectionType,
|
|
350
|
+
mson::BaseType& baseType) {
|
|
351
|
+
|
|
352
|
+
if (baseType != mson::UndefinedBaseType) {
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
switch (sectionType) {
|
|
357
|
+
case MSONSectionType:
|
|
358
|
+
case MSONOneOfSectionType:
|
|
359
|
+
case MSONMixinSectionType:
|
|
360
|
+
{
|
|
361
|
+
if (node->type == mdp::ListItemMarkdownNodeType) {
|
|
362
|
+
baseType = mson::ImplicitObjectBaseType;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
case MSONPropertyMembersSectionType:
|
|
369
|
+
{
|
|
370
|
+
baseType = mson::ImplicitObjectBaseType;
|
|
371
|
+
break;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
case MSONSampleDefaultSectionType:
|
|
375
|
+
{
|
|
376
|
+
baseType = mson::ImplicitPrimitiveBaseType;
|
|
377
|
+
break;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
default:
|
|
381
|
+
break;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
/** MSON Value Member Section Parser */
|
|
387
|
+
typedef SectionParser<mson::ValueMember, ListSectionAdapter> MSONValueMemberParser;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
#endif
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//
|
|
2
|
+
// ModelTable.h
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Zdenek Nemec on 6/9/13.
|
|
6
|
+
// Copyright (c) 2013 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef SNOWCRASH_MODELTABLE_H
|
|
10
|
+
#define SNOWCRASH_MODELTABLE_H
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
#include <map>
|
|
14
|
+
#include "ByteBuffer.h"
|
|
15
|
+
#include "RegexMatch.h"
|
|
16
|
+
|
|
17
|
+
#ifdef DEBUG
|
|
18
|
+
#include <iostream>
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#include "BlueprintSourcemap.h"
|
|
22
|
+
#include "StringUtility.h"
|
|
23
|
+
|
|
24
|
+
// Symbol identifier regex
|
|
25
|
+
#define SYMBOL_IDENTIFIER "([^][()]+)"
|
|
26
|
+
|
|
27
|
+
namespace snowcrash {
|
|
28
|
+
|
|
29
|
+
/** Symbol reference matching regex */
|
|
30
|
+
const char* const ModelReferenceRegex("^[[:blank:]]*\\[" SYMBOL_IDENTIFIER "]\\[][[:blank:]]*$");
|
|
31
|
+
|
|
32
|
+
// Resource Object Model Table
|
|
33
|
+
typedef std::map<Identifier, ResourceModel> ModelTable;
|
|
34
|
+
|
|
35
|
+
// Resource Object Model Table source map
|
|
36
|
+
typedef std::map<Identifier, SourceMap<ResourceModel> > ModelSourceMapTable;
|
|
37
|
+
|
|
38
|
+
// Checks whether given source data represents reference to a symbol returning true if so,
|
|
39
|
+
// false otherwise. If source data is represent reference referred symbol name is filled in.
|
|
40
|
+
inline bool GetModelReference(const mdp::ByteBuffer& sourceData,
|
|
41
|
+
Identifier& referredModel) {
|
|
42
|
+
|
|
43
|
+
CaptureGroups captureGroups;
|
|
44
|
+
|
|
45
|
+
if (RegexCapture(sourceData, ModelReferenceRegex, captureGroups, 3)) {
|
|
46
|
+
referredModel = captureGroups[1];
|
|
47
|
+
TrimString(referredModel);
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
#ifdef DEBUG
|
|
55
|
+
// Escape new lines
|
|
56
|
+
inline std::string EscapeNewlines(const std::string &input) {
|
|
57
|
+
|
|
58
|
+
size_t pos = 0;
|
|
59
|
+
std::string target(input);
|
|
60
|
+
|
|
61
|
+
while ((pos = target.find("\n", pos)) != std::string::npos) {
|
|
62
|
+
target.replace(pos, 1, "\\n");
|
|
63
|
+
pos += 2;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return target;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Prints markdown block recursively to stdout
|
|
70
|
+
inline void PrintModelTable(const ModelTable& modelTable) {
|
|
71
|
+
|
|
72
|
+
std::cout << "Resource Model Symbols:\n";
|
|
73
|
+
|
|
74
|
+
for (ModelTable::const_iterator it = modelTable.begin();
|
|
75
|
+
it != modelTable.end();
|
|
76
|
+
++it) {
|
|
77
|
+
|
|
78
|
+
std::cout << "- " << it->first << " - body: '" << EscapeNewlines(it->second.body) << "'\n";
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
std::cout << std::endl;
|
|
82
|
+
}
|
|
83
|
+
#endif
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#endif
|