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,26 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RefractDataStructure.h
|
|
3
|
+
// drafter
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 18/05/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef DRAFTER_REFRACTDATASTRUCTURE_H
|
|
10
|
+
#define DRAFTER_REFRACTDATASTRUCTURE_H
|
|
11
|
+
|
|
12
|
+
#include "Serialize.h"
|
|
13
|
+
|
|
14
|
+
namespace drafter {
|
|
15
|
+
|
|
16
|
+
class ConversionContext;
|
|
17
|
+
|
|
18
|
+
refract::IElement* MSONToRefract(const NodeInfo<snowcrash::DataStructure>& dataStructure, ConversionContext& context);
|
|
19
|
+
refract::IElement* ExpandRefract(refract::IElement* element, ConversionContext& context);
|
|
20
|
+
|
|
21
|
+
sos::Object SerializeRefract(refract::IElement*, ConversionContext& context);
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
#endif // #ifndef DRAFTER_REFRACTDATASTRUCTURE_H
|
|
26
|
+
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#include "RefractElementFactory.h"
|
|
2
|
+
#include "refract/Element.h"
|
|
3
|
+
|
|
4
|
+
#include "Serialize.h" // LiteralTo<>
|
|
5
|
+
#include "SourceAnnotation.h" // mson::Error
|
|
6
|
+
|
|
7
|
+
namespace drafter {
|
|
8
|
+
|
|
9
|
+
template <typename E, typename V = typename E::ValueType>
|
|
10
|
+
struct RefractElementFactoryImpl : RefractElementFactory
|
|
11
|
+
{
|
|
12
|
+
|
|
13
|
+
RefractElementFactoryImpl() {}
|
|
14
|
+
|
|
15
|
+
virtual refract::IElement* Create(const std::string& literal, FactoryCreateMethod method) const
|
|
16
|
+
{
|
|
17
|
+
E* element = new E;
|
|
18
|
+
|
|
19
|
+
if (literal.empty()) {
|
|
20
|
+
return element;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
switch (method) {
|
|
24
|
+
case eSample: {
|
|
25
|
+
refract::ArrayElement* samples = new refract::ArrayElement;
|
|
26
|
+
std::pair<bool, typename E::ValueType> value = LiteralTo<typename E::ValueType>(literal);
|
|
27
|
+
if (value.first) {
|
|
28
|
+
samples->push_back(refract::IElement::Create(value.second));
|
|
29
|
+
}
|
|
30
|
+
element->attributes[SerializeKey::Samples] = samples;
|
|
31
|
+
}
|
|
32
|
+
break;
|
|
33
|
+
|
|
34
|
+
case eValue: {
|
|
35
|
+
std::pair<bool, V> value = LiteralTo<V>(literal);
|
|
36
|
+
if (value.first) {
|
|
37
|
+
element->set(value.second);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
|
|
42
|
+
case eElement:
|
|
43
|
+
element->element(literal);
|
|
44
|
+
break;
|
|
45
|
+
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return element;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
template <typename E>
|
|
53
|
+
struct RefractElementFactoryImpl<E, refract::RefractElements> : RefractElementFactory
|
|
54
|
+
{
|
|
55
|
+
|
|
56
|
+
RefractElementFactoryImpl() {}
|
|
57
|
+
|
|
58
|
+
virtual refract::IElement* Create(const std::string& literal, FactoryCreateMethod method) const
|
|
59
|
+
{
|
|
60
|
+
if (method == eSample) {
|
|
61
|
+
refract::StringElement* element = new refract::StringElement;
|
|
62
|
+
element->element(SerializeKey::Generic);
|
|
63
|
+
element->set(literal);
|
|
64
|
+
return element;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
E* element = new E;
|
|
68
|
+
|
|
69
|
+
if (!literal.empty()) {
|
|
70
|
+
element->element(literal);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return element;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
const RefractElementFactory& FactoryFromType(const mson::BaseTypeName typeName)
|
|
78
|
+
{
|
|
79
|
+
|
|
80
|
+
static const RefractElementFactoryImpl<refract::BooleanElement> boolFactory;
|
|
81
|
+
static const RefractElementFactoryImpl<refract::NumberElement> numberFactory;
|
|
82
|
+
static const RefractElementFactoryImpl<refract::StringElement> stringFactory;
|
|
83
|
+
static const RefractElementFactoryImpl<refract::EnumElement> enumFactory;
|
|
84
|
+
static const RefractElementFactoryImpl<refract::ArrayElement> arrayFactory;
|
|
85
|
+
static const RefractElementFactoryImpl<refract::ObjectElement> objectFactory;
|
|
86
|
+
|
|
87
|
+
switch (typeName) {
|
|
88
|
+
case mson::BooleanTypeName:
|
|
89
|
+
return boolFactory;
|
|
90
|
+
case mson::NumberTypeName:
|
|
91
|
+
return numberFactory;
|
|
92
|
+
case mson::StringTypeName:
|
|
93
|
+
return stringFactory;
|
|
94
|
+
case mson::ArrayTypeName:
|
|
95
|
+
return arrayFactory;
|
|
96
|
+
case mson::EnumTypeName:
|
|
97
|
+
return enumFactory;
|
|
98
|
+
case mson::ObjectTypeName:
|
|
99
|
+
case mson::UndefinedTypeName:
|
|
100
|
+
return objectFactory;
|
|
101
|
+
default:
|
|
102
|
+
; // do nothing
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
throw snowcrash::Error("unknown mson type", snowcrash::ApplicationError);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RefractElementFactory.h
|
|
3
|
+
// drafter
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 04-03-2016
|
|
6
|
+
// Copyright (c) 2016 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef DRAFTER_REFRACTELEMENTFACTORY_H
|
|
10
|
+
#define DRAFTER_REFRACTELEMENTFACTORY_H
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
#include "MSON.h"
|
|
14
|
+
|
|
15
|
+
namespace refract {
|
|
16
|
+
struct IElement;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
namespace drafter {
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* This interface is used while conversion from legacy AST
|
|
23
|
+
* into refract tree.
|
|
24
|
+
*
|
|
25
|
+
* For usage see test/test-ElementFactoryTest.cc
|
|
26
|
+
*
|
|
27
|
+
* WARNING:
|
|
28
|
+
* There is little bit different behavior for primitives and for complex elements.
|
|
29
|
+
*
|
|
30
|
+
* For any case:
|
|
31
|
+
* - if `literal` is empty - return __empty__ element of required type
|
|
32
|
+
*
|
|
33
|
+
* For primitives (string|number|bool):
|
|
34
|
+
* - `sample` eValue - return typed element with __value__ set via `ToLiteral<>` conversion
|
|
35
|
+
* - `sample` eSample - return typed element with __attributes.samples__ set via `ToLiteral<>` conversion
|
|
36
|
+
* - `sample` eElement - return typed element with set __element name__ to `literal`
|
|
37
|
+
*
|
|
38
|
+
* For complex elements (object|array|enum):
|
|
39
|
+
* - `sample` eSample - return StringElement with name __generic__ with value set to `literal`
|
|
40
|
+
* - `sample` eValue|eElement - return return typed element with set __element name__ to `literal`
|
|
41
|
+
*
|
|
42
|
+
* This inconsistent behavior is determined by rules of converting legacy AST to Refract.
|
|
43
|
+
*
|
|
44
|
+
* Code will be deprecated (refactoring or remove) after remove legacy AST.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
enum FactoryCreateMethod {
|
|
48
|
+
eValue,
|
|
49
|
+
eSample,
|
|
50
|
+
eElement,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
struct RefractElementFactory
|
|
54
|
+
{
|
|
55
|
+
virtual ~RefractElementFactory() {}
|
|
56
|
+
virtual refract::IElement* Create(const std::string& literal, FactoryCreateMethod type) const = 0;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Do not change const return type!!!
|
|
61
|
+
* it is due to thread safety
|
|
62
|
+
*/
|
|
63
|
+
const RefractElementFactory& FactoryFromType(const mson::BaseTypeName typeName);
|
|
64
|
+
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#endif /* #ifndef DRAFTER_REFRACTELEMENTFACTORY_H */
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#include "RefractSourceMap.h"
|
|
2
|
+
|
|
3
|
+
static refract::IElement* CharacterRangeToRefract(const mdp::CharactersRange& sourceMap)
|
|
4
|
+
{
|
|
5
|
+
refract::ArrayElement* range = new refract::ArrayElement;
|
|
6
|
+
|
|
7
|
+
range->push_back(refract::IElement::Create(sourceMap.location));
|
|
8
|
+
range->push_back(refract::IElement::Create(sourceMap.length));
|
|
9
|
+
|
|
10
|
+
return range;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
refract::IElement* drafter::SourceMapToRefract(const mdp::CharactersRangeSet& sourceMap)
|
|
14
|
+
{
|
|
15
|
+
refract::ArrayElement* sourceMapElement = new refract::ArrayElement;
|
|
16
|
+
sourceMapElement->element(SerializeKey::SourceMap);
|
|
17
|
+
|
|
18
|
+
refract::ArrayElement::ValueType ranges;
|
|
19
|
+
std::transform(sourceMap.begin(), sourceMap.end(), std::back_inserter(ranges), CharacterRangeToRefract);
|
|
20
|
+
|
|
21
|
+
sourceMapElement->renderType(refract::IElement::rCompactContent);
|
|
22
|
+
sourceMapElement->set(ranges);
|
|
23
|
+
|
|
24
|
+
refract::ArrayElement* element = new refract::ArrayElement;
|
|
25
|
+
element->push_back(sourceMapElement);
|
|
26
|
+
|
|
27
|
+
return element;
|
|
28
|
+
}
|
|
29
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RefractSourceMap.h
|
|
3
|
+
// drafter
|
|
4
|
+
//
|
|
5
|
+
// Created by Jiri Kratochvil on 31/07/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef DRAFTER_REFRACTSOURCEMAP_H
|
|
10
|
+
#define DRAFTER_REFRACTSOURCEMAP_H
|
|
11
|
+
|
|
12
|
+
#include "Serialize.h"
|
|
13
|
+
|
|
14
|
+
namespace drafter {
|
|
15
|
+
|
|
16
|
+
refract::IElement* SourceMapToRefract(const mdp::CharactersRangeSet& sourceMap);
|
|
17
|
+
|
|
18
|
+
template<typename T>
|
|
19
|
+
void AttachSourceMap(refract::IElement* element, const T& nodeInfo)
|
|
20
|
+
{
|
|
21
|
+
if (!nodeInfo.sourceMap->sourceMap.empty()) {
|
|
22
|
+
element->attributes[SerializeKey::SourceMap] = SourceMapToRefract(nodeInfo.sourceMap->sourceMap);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
template<typename T>
|
|
27
|
+
refract::IElement* PrimitiveToRefract(const NodeInfo<T>& primitive)
|
|
28
|
+
{
|
|
29
|
+
typedef typename refract::ElementTypeSelector<T>::ElementType ElementType;
|
|
30
|
+
|
|
31
|
+
ElementType* element = refract::IElement::Create(*primitive.node);
|
|
32
|
+
|
|
33
|
+
AttachSourceMap(element, primitive);
|
|
34
|
+
|
|
35
|
+
return element;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
class ConversionContext;
|
|
39
|
+
|
|
40
|
+
template<typename T>
|
|
41
|
+
refract::IElement* LiteralToRefract(const NodeInfo<std::string>& literal, ConversionContext& context)
|
|
42
|
+
{
|
|
43
|
+
std::pair<bool, T> parsed = LiteralTo<T>(*literal.node);
|
|
44
|
+
|
|
45
|
+
typename refract::ElementTypeSelector<T>::ElementType* element = new typename refract::ElementTypeSelector<T>::ElementType;
|
|
46
|
+
if (parsed.first) {
|
|
47
|
+
element->set(parsed.second);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
AttachSourceMap(element, literal);
|
|
51
|
+
|
|
52
|
+
return element;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
#endif // #ifndef DRAFTER_REFRACTSOURCEMAP_H
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Render.cc
|
|
3
|
+
// drafter
|
|
4
|
+
//
|
|
5
|
+
// Created by Pavan Kumar Sunkara on 18/08/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#include "Render.h"
|
|
10
|
+
#include "RefractDataStructure.h"
|
|
11
|
+
|
|
12
|
+
#include "SourceAnnotation.h"
|
|
13
|
+
#include "BlueprintUtility.h"
|
|
14
|
+
#include "RegexMatch.h"
|
|
15
|
+
|
|
16
|
+
#include "ConversionContext.h"
|
|
17
|
+
|
|
18
|
+
#include "refract/RenderJSONVisitor.h"
|
|
19
|
+
#include "refract/JSONSchemaVisitor.h"
|
|
20
|
+
|
|
21
|
+
using namespace snowcrash;
|
|
22
|
+
|
|
23
|
+
namespace drafter {
|
|
24
|
+
|
|
25
|
+
RenderFormat findRenderFormat(const std::string& contentType) {
|
|
26
|
+
|
|
27
|
+
if (RegexMatch(contentType, JSONSchemaRegex)) {
|
|
28
|
+
return JSONSchemaRenderFormat;
|
|
29
|
+
}
|
|
30
|
+
else if (RegexMatch(contentType, JSONRegex)) {
|
|
31
|
+
return JSONRenderFormat;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return UndefinedRenderFormat;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
std::string getContentTypeFromHeaders(const Headers& headers) {
|
|
38
|
+
Collection<Header>::const_iterator header;
|
|
39
|
+
|
|
40
|
+
header = std::find_if(headers.begin(), headers.end(),
|
|
41
|
+
std::bind(MatchFirstWith<Header, std::string>(), std::placeholders::_1, HTTPHeaderName::ContentType));
|
|
42
|
+
|
|
43
|
+
if (header != headers.end()) {
|
|
44
|
+
return header->second;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return "";
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
NodeInfoByValue<Asset> renderPayloadBody(const NodeInfo<Payload>& payload,
|
|
51
|
+
const NodeInfo<Action>& action,
|
|
52
|
+
ConversionContext& context) {
|
|
53
|
+
|
|
54
|
+
NodeInfoByValue<Asset> body = std::make_pair(payload.node->body, &payload.sourceMap->body);
|
|
55
|
+
|
|
56
|
+
NodeInfo<Attributes> payloadAttributes = MAKE_NODE_INFO(payload, attributes);
|
|
57
|
+
NodeInfo<Attributes> actionAttributes = MAKE_NODE_INFO(action, attributes);
|
|
58
|
+
|
|
59
|
+
// hold attributes via pointer - because problems with assignment in NodeInfo<>
|
|
60
|
+
NodeInfo<Attributes>* attributes = &payloadAttributes;
|
|
61
|
+
|
|
62
|
+
if (payload.node->attributes.empty() && !action.isNull() && !action.node->attributes.empty()) {
|
|
63
|
+
attributes = &actionAttributes;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
RenderFormat renderFormat = findRenderFormat(getContentTypeFromHeaders(payload.node->headers));
|
|
67
|
+
|
|
68
|
+
// Only continue down if we have a render format
|
|
69
|
+
if (!payload.node->body.empty() || attributes->node->empty() || renderFormat == UndefinedRenderFormat) {
|
|
70
|
+
return body;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Expand MSON into Refract
|
|
74
|
+
refract::IElement* element = MSONToRefract(*attributes, context);
|
|
75
|
+
|
|
76
|
+
if (!element) {
|
|
77
|
+
return body;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
refract::IElement* expanded = ExpandRefract(element, context);
|
|
81
|
+
|
|
82
|
+
if (!expanded) {
|
|
83
|
+
return body;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// One of this will always execute since we have a catch above for not having render format
|
|
87
|
+
switch (renderFormat) {
|
|
88
|
+
case JSONRenderFormat:
|
|
89
|
+
{
|
|
90
|
+
refract::RenderJSONVisitor renderer;
|
|
91
|
+
refract::Visit(renderer, *expanded);
|
|
92
|
+
|
|
93
|
+
delete expanded;
|
|
94
|
+
|
|
95
|
+
return std::make_pair(renderer.getString(), NodeInfo<Asset>::NullSourceMap());
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
case JSONSchemaRenderFormat:
|
|
99
|
+
{
|
|
100
|
+
refract::JSONSchemaVisitor renderer;
|
|
101
|
+
std::string result = renderer.getSchema(*expanded);
|
|
102
|
+
|
|
103
|
+
delete expanded;
|
|
104
|
+
|
|
105
|
+
return std::make_pair(result, NodeInfo<Asset>::NullSourceMap());
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
case UndefinedRenderFormat:
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Throw exception
|
|
113
|
+
throw snowcrash::Error("unknown content type for messageBody to be rendered", snowcrash::ApplicationError);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
NodeInfoByValue<Asset> renderPayloadSchema(const NodeInfo<snowcrash::Payload>& payload,
|
|
117
|
+
const NodeInfo<snowcrash::Action>& action,
|
|
118
|
+
ConversionContext& context) {
|
|
119
|
+
|
|
120
|
+
NodeInfoByValue<Asset> schema = std::make_pair(payload.node->schema, &payload.sourceMap->schema);
|
|
121
|
+
|
|
122
|
+
NodeInfo<Attributes> payloadAttributes = MAKE_NODE_INFO(payload, attributes);
|
|
123
|
+
NodeInfo<Attributes> actionAttributes = MAKE_NODE_INFO(action, attributes);
|
|
124
|
+
|
|
125
|
+
// hold attributes via pointer - because problems with assignment in NodeInfo<>
|
|
126
|
+
NodeInfo<Attributes>* attributes = &payloadAttributes;
|
|
127
|
+
|
|
128
|
+
if (payload.node->attributes.empty() && !action.isNull() && !action.node->attributes.empty()) {
|
|
129
|
+
attributes = &actionAttributes;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Generate Schema only if Body content type is JSON
|
|
133
|
+
if (!payload.node->schema.empty() || payload.node->attributes.empty() ||
|
|
134
|
+
findRenderFormat(getContentTypeFromHeaders(payload.node->headers)) != JSONRenderFormat) {
|
|
135
|
+
|
|
136
|
+
return schema;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
refract::JSONSchemaVisitor renderer;
|
|
140
|
+
refract::IElement* element = MSONToRefract(*attributes, context);
|
|
141
|
+
|
|
142
|
+
if (!element) {
|
|
143
|
+
return schema;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
refract::IElement* expanded = ExpandRefract(element, context);
|
|
147
|
+
|
|
148
|
+
if (!expanded) {
|
|
149
|
+
return schema;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
std::string result = renderer.getSchema(*expanded);
|
|
153
|
+
delete expanded;
|
|
154
|
+
|
|
155
|
+
return std::make_pair(result, NodeInfo<Asset>::NullSourceMap());
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Render.h
|
|
3
|
+
// drafter
|
|
4
|
+
//
|
|
5
|
+
// Created by Pavan Kumar Sunkara on 17/06/15.
|
|
6
|
+
// Copyright (c) 2015 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef DRAFTER_RENDER_H
|
|
10
|
+
#define DRAFTER_RENDER_H
|
|
11
|
+
|
|
12
|
+
#include "Serialize.h"
|
|
13
|
+
|
|
14
|
+
namespace drafter {
|
|
15
|
+
|
|
16
|
+
const char* const JSONSchemaContentType = "application/schema+json";
|
|
17
|
+
const char* const JSONRegex = "^[[:blank:]]*application/(.*\\+)?json[[:blank:]]*(;.*|$)";
|
|
18
|
+
const char* const JSONSchemaRegex = "^[[:blank:]]*application/schema\\+json[[:blank:]]*(;.*|$)";
|
|
19
|
+
|
|
20
|
+
enum RenderFormat {
|
|
21
|
+
UndefinedRenderFormat = 0, // Undefined format
|
|
22
|
+
JSONRenderFormat = 1, // JSON format
|
|
23
|
+
JSONSchemaRenderFormat = 2 // JSON Schema format
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
class ConversionContext;
|
|
27
|
+
|
|
28
|
+
RenderFormat findRenderFormat(const std::string& contentType);
|
|
29
|
+
std::string getContentTypeFromHeaders(const snowcrash::Headers& headers);
|
|
30
|
+
|
|
31
|
+
NodeInfoByValue<snowcrash::Asset> renderPayloadBody(const NodeInfo<snowcrash::Payload>& payload,
|
|
32
|
+
const NodeInfo<snowcrash::Action>& action,
|
|
33
|
+
ConversionContext& context);
|
|
34
|
+
|
|
35
|
+
NodeInfoByValue<snowcrash::Asset> renderPayloadSchema(const NodeInfo<snowcrash::Payload>& payload,
|
|
36
|
+
const NodeInfo<snowcrash::Action>& action,
|
|
37
|
+
ConversionContext& context);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#endif
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Serialize.cc
|
|
3
|
+
// drafter
|
|
4
|
+
//
|
|
5
|
+
// Created by Zdenek Nemec on 5/3/13.
|
|
6
|
+
// Copyright (c) 2013 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#include "Serialize.h"
|
|
10
|
+
#include "StringUtility.h"
|
|
11
|
+
|
|
12
|
+
#include <cstdlib>
|
|
13
|
+
|
|
14
|
+
using namespace drafter;
|
|
15
|
+
|
|
16
|
+
namespace drafter {
|
|
17
|
+
|
|
18
|
+
refract::ArrayElement* CreateArrayElement(refract::IElement* value, bool rFull)
|
|
19
|
+
{
|
|
20
|
+
refract::ArrayElement* array = new refract::ArrayElement;
|
|
21
|
+
|
|
22
|
+
if (rFull) {
|
|
23
|
+
value->renderType(refract::IElement::rFull);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
array->push_back(value);
|
|
27
|
+
return array;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const std::string SerializeKey::Metadata = "metadata";
|
|
32
|
+
const std::string SerializeKey::Reference = "reference";
|
|
33
|
+
const std::string SerializeKey::Id = "id";
|
|
34
|
+
const std::string SerializeKey::Name = "name";
|
|
35
|
+
const std::string SerializeKey::Description = "description";
|
|
36
|
+
const std::string SerializeKey::DataStructure = "dataStructure";
|
|
37
|
+
const std::string SerializeKey::DataStructures = "dataStructures";
|
|
38
|
+
const std::string SerializeKey::ResourceGroup = "resourceGroup";
|
|
39
|
+
const std::string SerializeKey::ResourceGroups = "resourceGroups";
|
|
40
|
+
const std::string SerializeKey::Resource = "resource";
|
|
41
|
+
const std::string SerializeKey::Resources = "resources";
|
|
42
|
+
const std::string SerializeKey::URI = "uri";
|
|
43
|
+
const std::string SerializeKey::URITemplate = "uriTemplate";
|
|
44
|
+
const std::string SerializeKey::Assets = "assets";
|
|
45
|
+
const std::string SerializeKey::Actions = "actions";
|
|
46
|
+
const std::string SerializeKey::Action = "action";
|
|
47
|
+
const std::string SerializeKey::Relation = "relation";
|
|
48
|
+
const std::string SerializeKey::Attributes = "attributes";
|
|
49
|
+
const std::string SerializeKey::Method = "method";
|
|
50
|
+
const std::string SerializeKey::Examples = "examples";
|
|
51
|
+
const std::string SerializeKey::Requests = "requests";
|
|
52
|
+
const std::string SerializeKey::Responses = "responses";
|
|
53
|
+
const std::string SerializeKey::Body = "body";
|
|
54
|
+
const std::string SerializeKey::Schema = "schema";
|
|
55
|
+
const std::string SerializeKey::Headers = "headers";
|
|
56
|
+
const std::string SerializeKey::Model = "model";
|
|
57
|
+
const std::string SerializeKey::Value = "value";
|
|
58
|
+
const std::string SerializeKey::Parameters = "parameters";
|
|
59
|
+
const std::string SerializeKey::Type = "type";
|
|
60
|
+
const std::string SerializeKey::Required = "required";
|
|
61
|
+
const std::string SerializeKey::Default = "default";
|
|
62
|
+
const std::string SerializeKey::Nullable = "nullable";
|
|
63
|
+
const std::string SerializeKey::Example = "example";
|
|
64
|
+
const std::string SerializeKey::Values = "values";
|
|
65
|
+
|
|
66
|
+
const std::string SerializeKey::Source = "source";
|
|
67
|
+
const std::string SerializeKey::Resolved = "resolved";
|
|
68
|
+
|
|
69
|
+
const std::string SerializeKey::Element = "element";
|
|
70
|
+
const std::string SerializeKey::Role = "role";
|
|
71
|
+
|
|
72
|
+
const std::string SerializeKey::Version = "_version";
|
|
73
|
+
const std::string SerializeKey::Ast = "ast";
|
|
74
|
+
const std::string SerializeKey::Sourcemap= "sourcemap";
|
|
75
|
+
const std::string SerializeKey::Error = "error";
|
|
76
|
+
const std::string SerializeKey::Warning = "warning";
|
|
77
|
+
const std::string SerializeKey::Warnings = "warnings";
|
|
78
|
+
const std::string SerializeKey::AnnotationCode = "code";
|
|
79
|
+
const std::string SerializeKey::AnnotationMessage = "message";
|
|
80
|
+
const std::string SerializeKey::AnnotationLocation = "location";
|
|
81
|
+
const std::string SerializeKey::AnnotationLocationIndex = "index";
|
|
82
|
+
const std::string SerializeKey::AnnotationLocationLength = "length";
|
|
83
|
+
|
|
84
|
+
const std::string SerializeKey::Variable = "variable";
|
|
85
|
+
const std::string SerializeKey::Content = "content";
|
|
86
|
+
const std::string SerializeKey::Meta = "meta";
|
|
87
|
+
const std::string SerializeKey::Title = "title";
|
|
88
|
+
const std::string SerializeKey::Classes = "classes";
|
|
89
|
+
const std::string SerializeKey::Samples = "samples";
|
|
90
|
+
const std::string SerializeKey::TypeAttributes = "typeAttributes";
|
|
91
|
+
const std::string SerializeKey::Optional = "optional";
|
|
92
|
+
const std::string SerializeKey::Fixed = "fixed";
|
|
93
|
+
const std::string SerializeKey::FixedType = "fixedType";
|
|
94
|
+
const std::string SerializeKey::True = "true";
|
|
95
|
+
const std::string SerializeKey::Generic = "generic";
|
|
96
|
+
const std::string SerializeKey::Enum = "enum";
|
|
97
|
+
const std::string SerializeKey::Ref = "ref";
|
|
98
|
+
const std::string SerializeKey::Href = "href";
|
|
99
|
+
const std::string SerializeKey::Path = "path";
|
|
100
|
+
|
|
101
|
+
const std::string SerializeKey::Category = "category";
|
|
102
|
+
const std::string SerializeKey::Copy = "copy";
|
|
103
|
+
const std::string SerializeKey::API = "api";
|
|
104
|
+
const std::string SerializeKey::User = "user";
|
|
105
|
+
const std::string SerializeKey::Transition = "transition";
|
|
106
|
+
const std::string SerializeKey::HrefVariables = "hrefVariables";
|
|
107
|
+
const std::string SerializeKey::HTTPHeaders = "httpHeaders";
|
|
108
|
+
const std::string SerializeKey::HTTPTransaction = "httpTransaction";
|
|
109
|
+
const std::string SerializeKey::ContentType = "contentType";
|
|
110
|
+
const std::string SerializeKey::HTTPResponse = "httpResponse";
|
|
111
|
+
const std::string SerializeKey::HTTPRequest = "httpRequest";
|
|
112
|
+
const std::string SerializeKey::StatusCode = "statusCode";
|
|
113
|
+
const std::string SerializeKey::Asset = "asset";
|
|
114
|
+
const std::string SerializeKey::MessageBody = "messageBody";
|
|
115
|
+
const std::string SerializeKey::MessageBodySchema = "messageBodySchema";
|
|
116
|
+
const std::string SerializeKey::Data = "data";
|
|
117
|
+
|
|
118
|
+
const std::string SerializeKey::ParseResult = "parseResult";
|
|
119
|
+
const std::string SerializeKey::Annotation = "annotation";
|
|
120
|
+
const std::string SerializeKey::SourceMap = "sourceMap";
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
namespace drafter {
|
|
124
|
+
|
|
125
|
+
template <>
|
|
126
|
+
std::pair<bool, bool> LiteralTo<bool>(const mson::Literal& literal)
|
|
127
|
+
{
|
|
128
|
+
bool valid = false;
|
|
129
|
+
if (literal == "true" || literal == "false") {
|
|
130
|
+
valid = true;
|
|
131
|
+
}
|
|
132
|
+
return std::make_pair(valid, literal == SerializeKey::True);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
template <>
|
|
136
|
+
std::pair<bool, double> LiteralTo<double>(const mson::Literal& literal)
|
|
137
|
+
{
|
|
138
|
+
char* pos = 0;
|
|
139
|
+
bool valid = false;
|
|
140
|
+
double value = 0;
|
|
141
|
+
|
|
142
|
+
value = std::strtod(literal.c_str(), &pos);
|
|
143
|
+
const char* end = literal.c_str() + literal.length();
|
|
144
|
+
if (pos == end) {
|
|
145
|
+
valid = true;
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// check for trailing whitespaces
|
|
149
|
+
valid = (literal.end() != std::find_if(literal.begin() + (end-pos), literal.end(), ::isspace));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return std::make_pair(valid, value);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
template <>
|
|
156
|
+
std::pair<bool, std::string> LiteralTo<std::string>(const mson::Literal& literal)
|
|
157
|
+
{
|
|
158
|
+
return std::make_pair(!literal.empty(), literal);
|
|
159
|
+
}
|
|
160
|
+
};
|