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,506 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MSONUtility.h
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Pavan Kumar Sunkara on 10/23/14.
|
|
6
|
+
// Copyright (c) 2014 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef SNOWCRASH_MSONUTILITY_H
|
|
10
|
+
#define SNOWCRASH_MSONUTILITY_H
|
|
11
|
+
|
|
12
|
+
#include "MSONSourcemap.h"
|
|
13
|
+
|
|
14
|
+
using namespace scpl;
|
|
15
|
+
|
|
16
|
+
namespace mson {
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* \brief Check if the given string is variable
|
|
20
|
+
*
|
|
21
|
+
* \param String to check
|
|
22
|
+
*
|
|
23
|
+
* \return True if variable string
|
|
24
|
+
*/
|
|
25
|
+
inline bool checkVariable(const std::string& subject) {
|
|
26
|
+
|
|
27
|
+
std::string emphasisChars = mdp::MarkdownEmphasisChars;
|
|
28
|
+
|
|
29
|
+
if (emphasisChars.find(subject[0]) != std::string::npos &&
|
|
30
|
+
subject[0] == subject[subject.length() - 1]) {
|
|
31
|
+
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* \brief Parse a MSON BaseTypeName into MSON BaseType
|
|
40
|
+
*
|
|
41
|
+
* \param type MSON BaseTypeName
|
|
42
|
+
*
|
|
43
|
+
* \return MSON BaseType
|
|
44
|
+
*/
|
|
45
|
+
inline BaseType parseBaseType(const BaseTypeName& type) {
|
|
46
|
+
|
|
47
|
+
if ((type == StringTypeName) ||
|
|
48
|
+
(type == NumberTypeName) ||
|
|
49
|
+
(type == BooleanTypeName)) {
|
|
50
|
+
|
|
51
|
+
return PrimitiveBaseType;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (type == ObjectTypeName) {
|
|
55
|
+
return ObjectBaseType;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if ((type == ArrayTypeName) ||
|
|
59
|
+
(type == EnumTypeName)) {
|
|
60
|
+
|
|
61
|
+
return ValueBaseType;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return UndefinedBaseType;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* \brief Parse a string into MSON Value structure
|
|
69
|
+
*
|
|
70
|
+
* \param subject String which represents the value
|
|
71
|
+
*
|
|
72
|
+
* \return MSON Value
|
|
73
|
+
*/
|
|
74
|
+
inline Value parseValue(const std::string& subject) {
|
|
75
|
+
|
|
76
|
+
Value value;
|
|
77
|
+
std::string buffer = subject;
|
|
78
|
+
|
|
79
|
+
if (checkVariable(subject)) {
|
|
80
|
+
|
|
81
|
+
std::string escapedString = snowcrash::RetrieveEscaped(buffer, 0, true);
|
|
82
|
+
|
|
83
|
+
value.literal = escapedString;
|
|
84
|
+
value.variable = true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (value.literal.empty()) {
|
|
88
|
+
value.literal = snowcrash::StripBackticks(buffer);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// When the value is a wildcard
|
|
92
|
+
if (value.literal == "*") {
|
|
93
|
+
|
|
94
|
+
value.literal = "";
|
|
95
|
+
value.variable = true;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return value;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* \brief Parse Symbol from a string
|
|
103
|
+
*
|
|
104
|
+
* \param subject String which represents the symbol
|
|
105
|
+
*
|
|
106
|
+
* \return MSON Symbol
|
|
107
|
+
*/
|
|
108
|
+
inline Symbol parseSymbol(const std::string& subject) {
|
|
109
|
+
|
|
110
|
+
Symbol symbol;
|
|
111
|
+
Value value = parseValue(subject);
|
|
112
|
+
|
|
113
|
+
symbol.literal = value.literal;
|
|
114
|
+
symbol.variable = value.variable;
|
|
115
|
+
|
|
116
|
+
return symbol;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* \brief Parse Type Name from a string
|
|
121
|
+
*
|
|
122
|
+
* \param subject String which represents the type name
|
|
123
|
+
* \param typeName MSON Type Name
|
|
124
|
+
* \param isBaseType If false, will be parsed as a symbol
|
|
125
|
+
*/
|
|
126
|
+
inline void parseTypeName(const std::string& subject,
|
|
127
|
+
TypeName& typeName,
|
|
128
|
+
bool isBaseType = true) {
|
|
129
|
+
|
|
130
|
+
if (isBaseType && subject == "boolean") {
|
|
131
|
+
typeName.base = BooleanTypeName;
|
|
132
|
+
}
|
|
133
|
+
else if (isBaseType && subject == "string") {
|
|
134
|
+
typeName.base = StringTypeName;
|
|
135
|
+
}
|
|
136
|
+
else if (isBaseType && subject == "number") {
|
|
137
|
+
typeName.base = NumberTypeName;
|
|
138
|
+
}
|
|
139
|
+
else if (isBaseType && subject == "array") {
|
|
140
|
+
typeName.base = ArrayTypeName;
|
|
141
|
+
}
|
|
142
|
+
else if (isBaseType && subject == "enum") {
|
|
143
|
+
typeName.base = EnumTypeName;
|
|
144
|
+
}
|
|
145
|
+
else if (isBaseType && subject == "object") {
|
|
146
|
+
typeName.base = ObjectTypeName;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
typeName.symbol = parseSymbol(subject);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* \brief Check Type Attribute from a string and fill list of type attributes accordingly
|
|
155
|
+
*
|
|
156
|
+
* \param attribute String that needs to be checked for attribute
|
|
157
|
+
* \param typeAttributes List of type attributes
|
|
158
|
+
*
|
|
159
|
+
* \return True if the given string is a type attribute
|
|
160
|
+
*/
|
|
161
|
+
inline bool parseTypeAttribute(const std::string& attribute,
|
|
162
|
+
TypeAttributes& typeAttributes) {
|
|
163
|
+
|
|
164
|
+
bool isAttribute = true;
|
|
165
|
+
|
|
166
|
+
if (attribute == "required") {
|
|
167
|
+
typeAttributes |= RequiredTypeAttribute;
|
|
168
|
+
}
|
|
169
|
+
else if (attribute == "optional") {
|
|
170
|
+
typeAttributes |= OptionalTypeAttribute;
|
|
171
|
+
}
|
|
172
|
+
else if (attribute == "fixed") {
|
|
173
|
+
typeAttributes |= FixedTypeAttribute;
|
|
174
|
+
}
|
|
175
|
+
else if (attribute == "sample") {
|
|
176
|
+
typeAttributes |= SampleTypeAttribute;
|
|
177
|
+
}
|
|
178
|
+
else if (attribute == "default") {
|
|
179
|
+
typeAttributes |= DefaultTypeAttribute;
|
|
180
|
+
}
|
|
181
|
+
else if (attribute == "nullable") {
|
|
182
|
+
typeAttributes |= NullableTypeAttribute;
|
|
183
|
+
}
|
|
184
|
+
else if (attribute == "fixed-type") {
|
|
185
|
+
typeAttributes |= FixedTypeTypeAttribute;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
isAttribute = false;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return isAttribute;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* \brief Parse Type Specification from a signature attribute
|
|
196
|
+
*
|
|
197
|
+
* \param subject Attribute string representing the type specification
|
|
198
|
+
* \param typeSpecification MSON Type Specification
|
|
199
|
+
*/
|
|
200
|
+
inline void parseTypeSpecification(const std::string& attribute,
|
|
201
|
+
TypeSpecification& typeSpecification) {
|
|
202
|
+
|
|
203
|
+
std::string subject = snowcrash::StripMarkdownLink(attribute);
|
|
204
|
+
|
|
205
|
+
bool lookingAtNested = false; // If true, we are looking at nested types
|
|
206
|
+
bool lookingForEndLink = false; // If true, we detected a link text and are looking for the end of it
|
|
207
|
+
bool alreadyParsedLink = false; // If true, we already parsed the link text in the link
|
|
208
|
+
|
|
209
|
+
bool trimSubject = false;
|
|
210
|
+
|
|
211
|
+
size_t i = 0;
|
|
212
|
+
std::string buffer;
|
|
213
|
+
|
|
214
|
+
while (i < subject.length()) {
|
|
215
|
+
|
|
216
|
+
if (subject[i] == mdp::MarkdownBeginReference &&
|
|
217
|
+
!alreadyParsedLink) {
|
|
218
|
+
|
|
219
|
+
trimSubject = true;
|
|
220
|
+
|
|
221
|
+
if (!lookingAtNested) {
|
|
222
|
+
|
|
223
|
+
snowcrash::TrimString(buffer);
|
|
224
|
+
|
|
225
|
+
if (!buffer.empty()) {
|
|
226
|
+
parseTypeName(buffer, typeSpecification.name);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
lookingAtNested = true;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
lookingForEndLink = true;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
else if (subject[i] == mdp::MarkdownEndReference &&
|
|
236
|
+
lookingAtNested &&
|
|
237
|
+
lookingForEndLink) {
|
|
238
|
+
|
|
239
|
+
trimSubject = true;
|
|
240
|
+
|
|
241
|
+
TypeName typeName;
|
|
242
|
+
snowcrash::TrimString(buffer);
|
|
243
|
+
|
|
244
|
+
if (!buffer.empty()) {
|
|
245
|
+
|
|
246
|
+
parseTypeName(buffer, typeName);
|
|
247
|
+
typeSpecification.nestedTypes.push_back(typeName);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
alreadyParsedLink = true;
|
|
251
|
+
lookingForEndLink = false;
|
|
252
|
+
}
|
|
253
|
+
else if (subject[i] == scpl::Delimiters::AttributeDelimiter &&
|
|
254
|
+
lookingAtNested &&
|
|
255
|
+
!lookingForEndLink) {
|
|
256
|
+
|
|
257
|
+
trimSubject = true;
|
|
258
|
+
|
|
259
|
+
if (alreadyParsedLink) {
|
|
260
|
+
alreadyParsedLink = false;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
|
|
264
|
+
TypeName typeName;
|
|
265
|
+
snowcrash::TrimString(buffer);
|
|
266
|
+
|
|
267
|
+
if (!buffer.empty()) {
|
|
268
|
+
|
|
269
|
+
parseTypeName(buffer, typeName);
|
|
270
|
+
typeSpecification.nestedTypes.push_back(typeName);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
|
|
276
|
+
buffer += subject[i];
|
|
277
|
+
i++;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// Strip the subject until the current index
|
|
281
|
+
if (trimSubject) {
|
|
282
|
+
|
|
283
|
+
subject = subject.substr(i + 1);
|
|
284
|
+
snowcrash::TrimString(subject);
|
|
285
|
+
|
|
286
|
+
trimSubject = false;
|
|
287
|
+
buffer.clear();
|
|
288
|
+
i = 0;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
snowcrash::TrimString(buffer);
|
|
293
|
+
|
|
294
|
+
if (buffer.empty() || alreadyParsedLink) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// Remove the ending square bracket
|
|
299
|
+
if (lookingAtNested &&
|
|
300
|
+
buffer[buffer.length() - 1] == mdp::MarkdownEndReference) {
|
|
301
|
+
|
|
302
|
+
buffer = buffer.substr(0, buffer.length() - 1);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
TypeName typeName;
|
|
306
|
+
|
|
307
|
+
snowcrash::TrimString(buffer);
|
|
308
|
+
parseTypeName(buffer, typeName);
|
|
309
|
+
|
|
310
|
+
if (lookingAtNested) {
|
|
311
|
+
typeSpecification.nestedTypes.push_back(typeName);
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
typeSpecification.name = typeName;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* \brief Add a dependency to the dependency list of the dependents while checking for circular references
|
|
320
|
+
*
|
|
321
|
+
* \param node Current markdown node iterator
|
|
322
|
+
* \param pd Section parser data
|
|
323
|
+
* \param dependency The named type which should be added to the dependency list
|
|
324
|
+
* \param dependent The named type to which the dependency should be added
|
|
325
|
+
* \param report Parse result report
|
|
326
|
+
*/
|
|
327
|
+
inline void addDependency(const mdp::MarkdownNodeIterator& node,
|
|
328
|
+
snowcrash::SectionParserData& pd,
|
|
329
|
+
const mson::Literal dependency,
|
|
330
|
+
const mson::Literal dependent,
|
|
331
|
+
snowcrash::Report& report,
|
|
332
|
+
bool circularCheck = false) {
|
|
333
|
+
|
|
334
|
+
// First, check if the type exists
|
|
335
|
+
if (pd.namedTypeDependencyTable.find(dependency) == pd.namedTypeDependencyTable.end()) {
|
|
336
|
+
|
|
337
|
+
// ERR: We cannot find the dependency type
|
|
338
|
+
std::stringstream ss;
|
|
339
|
+
ss << "base type '" << dependency << "' is not defined in the document";
|
|
340
|
+
|
|
341
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
342
|
+
report.error = snowcrash::Error(ss.str(), snowcrash::MSONError, sourceMap);
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
std::set<mson::Literal> dependencyDeps = pd.namedTypeDependencyTable[dependency];
|
|
347
|
+
|
|
348
|
+
// Second, check if it is circular reference between them
|
|
349
|
+
if (circularCheck && (dependent == dependency ||
|
|
350
|
+
dependencyDeps.find(dependent) != dependencyDeps.end())) {
|
|
351
|
+
|
|
352
|
+
// ERR: Dependency named type circular references itself
|
|
353
|
+
std::stringstream ss;
|
|
354
|
+
ss << "base type '" << dependent << "' circularly referencing itself";
|
|
355
|
+
|
|
356
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
357
|
+
report.error = snowcrash::Error(ss.str(), snowcrash::MSONError, sourceMap);
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// Third, check if the dependency is already in the list
|
|
362
|
+
if (pd.namedTypeDependencyTable[dependent].find(dependency) != pd.namedTypeDependencyTable[dependent].end()) {
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
for (mson::NamedTypeDependencyTable::iterator it = pd.namedTypeDependencyTable.begin();
|
|
367
|
+
it != pd.namedTypeDependencyTable.end();
|
|
368
|
+
++it) {
|
|
369
|
+
|
|
370
|
+
// If the entry is dependent itself or contain dependent in its list
|
|
371
|
+
if (it->first == dependent || it->second.find(dependent) != it->second.end()) {
|
|
372
|
+
|
|
373
|
+
it->second.insert(dependency);
|
|
374
|
+
it->second.insert(dependencyDeps.begin(), dependencyDeps.end());
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* \brief Parse Type Definition from a list of signature attributes
|
|
381
|
+
*
|
|
382
|
+
* \param node Markdown node of the signature
|
|
383
|
+
* \param pd Section parser data
|
|
384
|
+
* \param attributes List of signature attributes
|
|
385
|
+
* \param report Parse result report
|
|
386
|
+
* \param typeDefinition MSON Type Definition
|
|
387
|
+
*/
|
|
388
|
+
inline void parseTypeDefinition(const mdp::MarkdownNodeIterator& node,
|
|
389
|
+
snowcrash::SectionParserData& pd,
|
|
390
|
+
const std::vector<std::string>& attributes,
|
|
391
|
+
snowcrash::Report& report,
|
|
392
|
+
mson::TypeDefinition& typeDefinition) {
|
|
393
|
+
|
|
394
|
+
bool foundTypeSpecification = false;
|
|
395
|
+
|
|
396
|
+
for (std::vector<std::string>::const_iterator it = attributes.begin();
|
|
397
|
+
it != attributes.end();
|
|
398
|
+
it++) {
|
|
399
|
+
|
|
400
|
+
// If not a recognized type attribute
|
|
401
|
+
if (!parseTypeAttribute(*it, typeDefinition.attributes)) {
|
|
402
|
+
|
|
403
|
+
// If type specification is already found
|
|
404
|
+
if (foundTypeSpecification) {
|
|
405
|
+
|
|
406
|
+
// WARN: Ignoring unrecognized type attribute
|
|
407
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
408
|
+
report.warnings.push_back(snowcrash::Warning("ignoring unrecognized type attribute",
|
|
409
|
+
snowcrash::IgnoringWarning,
|
|
410
|
+
sourceMap));
|
|
411
|
+
}
|
|
412
|
+
else {
|
|
413
|
+
|
|
414
|
+
foundTypeSpecification = true;
|
|
415
|
+
parseTypeSpecification(*it, typeDefinition.typeSpecification);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
typeDefinition.baseType = parseBaseType(typeDefinition.typeSpecification.name.base);
|
|
421
|
+
NamedTypeBaseTable::iterator it = pd.namedTypeBaseTable.find(typeDefinition.typeSpecification.name.symbol.literal);
|
|
422
|
+
|
|
423
|
+
if (typeDefinition.baseType == UndefinedBaseType &&
|
|
424
|
+
it != pd.namedTypeBaseTable.end()) {
|
|
425
|
+
|
|
426
|
+
typeDefinition.baseType = it->second;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
if (typeDefinition.baseType == UndefinedBaseType &&
|
|
430
|
+
!typeDefinition.typeSpecification.name.symbol.literal.empty() &&
|
|
431
|
+
!typeDefinition.typeSpecification.name.symbol.variable) {
|
|
432
|
+
|
|
433
|
+
addDependency(node, pd, typeDefinition.typeSpecification.name.symbol.literal, pd.namedTypeContext, report);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
if (typeDefinition.baseType != ValueBaseType &&
|
|
437
|
+
typeDefinition.baseType != ImplicitValueBaseType &&
|
|
438
|
+
!typeDefinition.typeSpecification.nestedTypes.empty()) {
|
|
439
|
+
|
|
440
|
+
// WARN: Nested types for non (array or enum) structure base type
|
|
441
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
442
|
+
report.warnings.push_back(snowcrash::Warning("nested types should be present only for types which are sub typed from either array or enum structure type",
|
|
443
|
+
snowcrash::LogicalErrorWarning,
|
|
444
|
+
sourceMap));
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* \brief Parse Property Name from a string given by signature identifier
|
|
450
|
+
*
|
|
451
|
+
* \param node Markdown node of the signature
|
|
452
|
+
* \param pd Section parser data
|
|
453
|
+
* \param subject String representing the property name
|
|
454
|
+
* \param report Parse result report
|
|
455
|
+
* \param propertyName MSON Property Name
|
|
456
|
+
*/
|
|
457
|
+
inline void parsePropertyName(const mdp::MarkdownNodeIterator& node,
|
|
458
|
+
snowcrash::SectionParserData& pd,
|
|
459
|
+
const std::string& subject,
|
|
460
|
+
snowcrash::Report& report,
|
|
461
|
+
PropertyName& propertyName) {
|
|
462
|
+
|
|
463
|
+
std::string buffer = subject;
|
|
464
|
+
|
|
465
|
+
if (checkVariable(subject)) {
|
|
466
|
+
|
|
467
|
+
std::string escapedString = snowcrash::RetrieveEscaped(buffer, 0, true);
|
|
468
|
+
|
|
469
|
+
SignatureTraits traits(SignatureTraits::ValuesTrait |
|
|
470
|
+
SignatureTraits::AttributesTrait);
|
|
471
|
+
|
|
472
|
+
Signature signature = SignatureSectionProcessorBase<PropertyName>::parseSignature(node, pd, traits, report, escapedString);
|
|
473
|
+
|
|
474
|
+
if (!signature.value.empty()) {
|
|
475
|
+
propertyName.variable.values.push_back(parseValue(signature.value));
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
parseTypeDefinition(node, pd, signature.attributes, report, propertyName.variable.typeDefinition);
|
|
479
|
+
}
|
|
480
|
+
else {
|
|
481
|
+
propertyName.literal = snowcrash::StripBackticks(buffer);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/**
|
|
486
|
+
* \brief Check is the given base types are the same after taking the implicitness into account
|
|
487
|
+
*/
|
|
488
|
+
inline bool isSameBaseType(const mson::BaseType lhs,
|
|
489
|
+
const mson::BaseType rhs) {
|
|
490
|
+
|
|
491
|
+
if (lhs == rhs ||
|
|
492
|
+
(lhs == mson::ImplicitObjectBaseType && rhs == mson::ObjectBaseType) ||
|
|
493
|
+
(lhs == mson::ObjectBaseType && rhs == mson::ImplicitObjectBaseType) ||
|
|
494
|
+
(lhs == mson::ImplicitValueBaseType && rhs == mson::ValueBaseType) ||
|
|
495
|
+
(lhs == mson::ValueBaseType && rhs == mson::ImplicitValueBaseType) ||
|
|
496
|
+
(lhs == mson::ImplicitPrimitiveBaseType && rhs == mson::PrimitiveBaseType) ||
|
|
497
|
+
(lhs == mson::PrimitiveBaseType && rhs == mson::ImplicitPrimitiveBaseType)) {
|
|
498
|
+
|
|
499
|
+
return true;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
return false;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
#endif
|