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,276 @@
|
|
|
1
|
+
//
|
|
2
|
+
// CodeBlockUtility.h
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Zdenek Nemec on 11/10/13.
|
|
6
|
+
// Copyright (c) 2013 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef SNOWCRASH_CODEBLOCKUTILITY_H
|
|
10
|
+
#define SNOWCRASH_CODEBLOCKUTILITY_H
|
|
11
|
+
|
|
12
|
+
#include <sstream>
|
|
13
|
+
#include "Section.h"
|
|
14
|
+
#include "StringUtility.h"
|
|
15
|
+
|
|
16
|
+
namespace snowcrash {
|
|
17
|
+
|
|
18
|
+
struct CodeBlockUtility {
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* \brief Expected indentation level of a code block.
|
|
22
|
+
*
|
|
23
|
+
* \param type Section type to retrieve the indentation level for
|
|
24
|
+
* \return Indentation level (number of tabs) for a block to be
|
|
25
|
+
* considered a pre-formatted code block in given section.
|
|
26
|
+
*/
|
|
27
|
+
static size_t codeBlockIndentationLevel(const SectionType& type)
|
|
28
|
+
{
|
|
29
|
+
if (type == BlueprintSectionType ||
|
|
30
|
+
type == ResourceGroupSectionType ||
|
|
31
|
+
type == ResourceSectionType ||
|
|
32
|
+
type == ActionSectionType) {
|
|
33
|
+
|
|
34
|
+
return 1;
|
|
35
|
+
}
|
|
36
|
+
else if (type == RequestBodySectionType ||
|
|
37
|
+
type == ResponseBodySectionType ||
|
|
38
|
+
type == ModelBodySectionType) {
|
|
39
|
+
|
|
40
|
+
return 2;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
|
|
44
|
+
return 3;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* \brief Retrieve the textual content of a Markdown node as if it was a code block.
|
|
50
|
+
* \param pd Parser status
|
|
51
|
+
* \param report Report log
|
|
52
|
+
* \param conten The content retrieved
|
|
53
|
+
*/
|
|
54
|
+
static void contentAsCodeBlock(const MarkdownNodeIterator& node,
|
|
55
|
+
const SectionParserData& pd,
|
|
56
|
+
Report& report,
|
|
57
|
+
mdp::ByteBuffer& content) {
|
|
58
|
+
|
|
59
|
+
checkPossibleReference(node, pd, report);
|
|
60
|
+
|
|
61
|
+
if (node->type == mdp::CodeMarkdownNodeType) {
|
|
62
|
+
content += node->text;
|
|
63
|
+
|
|
64
|
+
checkExcessiveIndentation(node, pd, report);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Other blocks, process & warn
|
|
69
|
+
content += mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
|
|
70
|
+
|
|
71
|
+
// WARN: Not a preformatted code block
|
|
72
|
+
size_t level = codeBlockIndentationLevel(pd.parentSectionContext());
|
|
73
|
+
std::stringstream ss;
|
|
74
|
+
ss << SectionName(pd.sectionContext());
|
|
75
|
+
|
|
76
|
+
if (pd.sectionContext() == BodySectionType) {
|
|
77
|
+
ss << " asset";
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
ss << " is expected to be a pre-formatted code block, every of its line indented by exactly ";
|
|
81
|
+
ss << level * 4 << " spaces or " << level << " tabs";
|
|
82
|
+
|
|
83
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
84
|
+
report.warnings.push_back(Warning(ss.str(),
|
|
85
|
+
IndentationWarning,
|
|
86
|
+
sourceMap));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** \brief Retrieve the textual content of a signature markdown */
|
|
90
|
+
static void signatureContentAsCodeBlock(const MarkdownNodeIterator& node,
|
|
91
|
+
const SectionParserData& pd,
|
|
92
|
+
Report& report,
|
|
93
|
+
mdp::ByteBuffer& content) {
|
|
94
|
+
|
|
95
|
+
mdp::ByteBuffer remainingContent;
|
|
96
|
+
GetFirstLine(node->text, remainingContent);
|
|
97
|
+
|
|
98
|
+
if (remainingContent.empty())
|
|
99
|
+
return;
|
|
100
|
+
|
|
101
|
+
content += remainingContent;
|
|
102
|
+
content += "\n";
|
|
103
|
+
|
|
104
|
+
// WARN: Not a preformatted code block but multiline signature
|
|
105
|
+
size_t level = codeBlockIndentationLevel(pd.parentSectionContext());
|
|
106
|
+
std::stringstream ss;
|
|
107
|
+
|
|
108
|
+
ss << SectionName(pd.sectionContext());
|
|
109
|
+
|
|
110
|
+
if (pd.sectionContext() == BodySectionType) {
|
|
111
|
+
ss << " asset";
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
ss << " is expected to be a pre-formatted code block, separate it by a newline and ";
|
|
115
|
+
ss << "indent every of its line by ";
|
|
116
|
+
ss << level * 4 << " spaces or " << level << " tabs";
|
|
117
|
+
|
|
118
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
119
|
+
report.warnings.push_back(Warning(ss.str(),
|
|
120
|
+
IndentationWarning,
|
|
121
|
+
sourceMap));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* \brief Check for potential excessive indentation of a list section
|
|
126
|
+
* \return True if code block contains a recognized list section, false otherwise.
|
|
127
|
+
*/
|
|
128
|
+
static bool checkExcessiveIndentation(const MarkdownNodeIterator& node,
|
|
129
|
+
const SectionParserData& pd,
|
|
130
|
+
Report& report) {
|
|
131
|
+
|
|
132
|
+
// Check for possible superfluous indentation of a recognized list items.
|
|
133
|
+
mdp::ByteBuffer r;
|
|
134
|
+
mdp::ByteBuffer line = GetFirstLine(node->text, r);
|
|
135
|
+
TrimString(line);
|
|
136
|
+
|
|
137
|
+
// If line appears to be a Markdown list.
|
|
138
|
+
if (line.empty() ||
|
|
139
|
+
(line[0] != '-' && line[0] != '+' && line[0] != '*'))
|
|
140
|
+
return false;
|
|
141
|
+
|
|
142
|
+
// Skip leading Markdown list item mark
|
|
143
|
+
std::string signature = line.substr(1, std::string::npos);
|
|
144
|
+
TrimStringStart(signature);
|
|
145
|
+
|
|
146
|
+
SectionType type = RecognizeCodeBlockFirstLine(signature);
|
|
147
|
+
|
|
148
|
+
if (type != UndefinedSectionType) {
|
|
149
|
+
|
|
150
|
+
// Check signature.
|
|
151
|
+
size_t level = codeBlockIndentationLevel(pd.sectionContext());
|
|
152
|
+
--level;
|
|
153
|
+
|
|
154
|
+
// WARN: Superfluous indentation
|
|
155
|
+
std::stringstream ss;
|
|
156
|
+
ss << "excessive indentation, ";
|
|
157
|
+
ss << SectionName(type) << " ";
|
|
158
|
+
|
|
159
|
+
if (level) {
|
|
160
|
+
ss << "section is expected to be indented by just ";
|
|
161
|
+
ss << level * 4 << " spaces or " << level << " tab";
|
|
162
|
+
|
|
163
|
+
if (level > 1)
|
|
164
|
+
ss << "s";
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
ss << "section is not expected to be indented";
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
171
|
+
report.warnings.push_back(Warning(ss.str(),
|
|
172
|
+
IndentationWarning,
|
|
173
|
+
sourceMap));
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* \brief Parse one line of raw `key:value` data.
|
|
181
|
+
* \param line A line to parse
|
|
182
|
+
* \param keyValuePair The output buffer to place the parsed data into
|
|
183
|
+
* \return True on success, false otherwise
|
|
184
|
+
*/
|
|
185
|
+
static bool keyValueFromLine(const mdp::ByteBuffer& line,
|
|
186
|
+
KeyValuePair& keyValuePair) {
|
|
187
|
+
|
|
188
|
+
std::vector<std::string> rawMetadata = SplitOnFirst(line, ':');
|
|
189
|
+
if (rawMetadata.size() != 2)
|
|
190
|
+
return false;
|
|
191
|
+
|
|
192
|
+
keyValuePair = std::make_pair(rawMetadata[0], rawMetadata[1]);
|
|
193
|
+
TrimString(keyValuePair.first);
|
|
194
|
+
TrimString(keyValuePair.second);
|
|
195
|
+
|
|
196
|
+
return (!keyValuePair.first.empty() && !keyValuePair.second.empty());
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* \brief Add dangling message body asset to the given string
|
|
201
|
+
* \param out The string to which the dangling asset should be added
|
|
202
|
+
* \param outSM The source map to which source map should be added
|
|
203
|
+
* \return asset The value of the asset
|
|
204
|
+
*/
|
|
205
|
+
static mdp::ByteBuffer addDanglingAsset(const MarkdownNodeIterator& node,
|
|
206
|
+
SectionParserData& pd,
|
|
207
|
+
SectionType& sectionType,
|
|
208
|
+
Report& report,
|
|
209
|
+
mdp::ByteBuffer& out) {
|
|
210
|
+
|
|
211
|
+
mdp::ByteBuffer asset;
|
|
212
|
+
|
|
213
|
+
if (node->type == mdp::CodeMarkdownNodeType) {
|
|
214
|
+
asset = node->text;
|
|
215
|
+
} else {
|
|
216
|
+
asset = mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
TwoNewLines(asset);
|
|
220
|
+
out += asset;
|
|
221
|
+
|
|
222
|
+
size_t level = CodeBlockUtility::codeBlockIndentationLevel(sectionType);
|
|
223
|
+
|
|
224
|
+
if (node->type == mdp::CodeMarkdownNodeType)
|
|
225
|
+
level--; // Deduct one level for a code block
|
|
226
|
+
|
|
227
|
+
checkPossibleReference(node, pd, report);
|
|
228
|
+
|
|
229
|
+
if (level) {
|
|
230
|
+
// WARN: Dangling asset
|
|
231
|
+
std::stringstream ss;
|
|
232
|
+
ss << "dangling message-body asset, expected a pre-formatted code block, ";
|
|
233
|
+
ss << "indent every of it's line by " << level*4 << " spaces or " << level << " tabs";
|
|
234
|
+
|
|
235
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
236
|
+
report.warnings.push_back(Warning(ss.str(),
|
|
237
|
+
IndentationWarning,
|
|
238
|
+
sourceMap));
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return asset;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* \brief Check for potential resource model reference and warn about not recognizing them
|
|
246
|
+
* \return True if code block contains a resource model reference, false otherwise.
|
|
247
|
+
*/
|
|
248
|
+
static bool checkPossibleReference(const MarkdownNodeIterator& node,
|
|
249
|
+
const SectionParserData& pd,
|
|
250
|
+
Report& report) {
|
|
251
|
+
|
|
252
|
+
mdp::ByteBuffer source = node->text;
|
|
253
|
+
Identifier symbol;
|
|
254
|
+
|
|
255
|
+
TrimString(source);
|
|
256
|
+
|
|
257
|
+
if(GetModelReference(source, symbol)) {
|
|
258
|
+
|
|
259
|
+
std::stringstream ss;
|
|
260
|
+
ss << "found a possible '" << symbol << "' model reference, ";
|
|
261
|
+
ss << "a reference must be directly in the " << SectionName(pd.sectionContext()) << " section, indented by 4 spaces or 1 tab, without any additional sections";
|
|
262
|
+
|
|
263
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
264
|
+
report.warnings.push_back(Warning(ss.str(),
|
|
265
|
+
IgnoringWarning,
|
|
266
|
+
sourceMap));
|
|
267
|
+
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
#endif
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
//
|
|
2
|
+
// DataStructureGroupParser.h
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Pavan Kumar Sunkara on 02/12/14.
|
|
6
|
+
// Copyright (c) 2014 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef SNOWCRASH_DATASTRUCTUREGROUPPARSER_H
|
|
10
|
+
#define SNOWCRASH_DATASTRUCTUREGROUPPARSER_H
|
|
11
|
+
|
|
12
|
+
#include "MSONNamedTypeParser.h"
|
|
13
|
+
|
|
14
|
+
using namespace scpl;
|
|
15
|
+
|
|
16
|
+
namespace snowcrash {
|
|
17
|
+
|
|
18
|
+
/** Data structure group matching regex */
|
|
19
|
+
const char* const DataStructureGroupRegex = "^[[:blank:]]*[Dd]ata[[:blank:]]+[Ss]tructures?[[:blank:]]*$";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Data structure group section processor
|
|
23
|
+
*/
|
|
24
|
+
template<>
|
|
25
|
+
struct SectionProcessor<DataStructureGroup> : public SectionProcessorBase<DataStructureGroup> {
|
|
26
|
+
|
|
27
|
+
NO_SECTION_DESCRIPTION(DataStructureGroup)
|
|
28
|
+
|
|
29
|
+
static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
|
|
30
|
+
const MarkdownNodes& siblings,
|
|
31
|
+
SectionParserData& pd,
|
|
32
|
+
const ParseResultRef<DataStructureGroup>& out) {
|
|
33
|
+
|
|
34
|
+
MarkdownNodeIterator cur = node;
|
|
35
|
+
|
|
36
|
+
if (pd.sectionContext() == MSONNamedTypeSectionType) {
|
|
37
|
+
|
|
38
|
+
IntermediateParseResult<mson::NamedType> namedType(out.report);
|
|
39
|
+
cur = MSONNamedTypeParser::parse(node, siblings, pd, namedType);
|
|
40
|
+
|
|
41
|
+
if (isNamedTypeDuplicate(pd.blueprint, namedType.node.name.symbol.literal)) {
|
|
42
|
+
|
|
43
|
+
// WARN: duplicate named type
|
|
44
|
+
std::stringstream ss;
|
|
45
|
+
ss << "named type with name '" << namedType.node.name.symbol.literal << "' already exists";
|
|
46
|
+
|
|
47
|
+
mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
|
|
48
|
+
out.report.warnings.push_back(Warning(ss.str(),
|
|
49
|
+
DuplicateWarning,
|
|
50
|
+
sourceMap));
|
|
51
|
+
return cur;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
Element element(Element::DataStructureElement);
|
|
55
|
+
element.content.dataStructure = namedType.node;
|
|
56
|
+
|
|
57
|
+
out.node.content.elements().push_back(element);
|
|
58
|
+
|
|
59
|
+
if (pd.exportSourceMap()) {
|
|
60
|
+
|
|
61
|
+
SourceMap<Element> elementSM(Element::DataStructureElement);
|
|
62
|
+
|
|
63
|
+
elementSM.content.dataStructure.name = namedType.sourceMap.name;
|
|
64
|
+
elementSM.content.dataStructure.typeDefinition = namedType.sourceMap.typeDefinition;
|
|
65
|
+
elementSM.content.dataStructure.sections = namedType.sourceMap.sections;
|
|
66
|
+
|
|
67
|
+
out.sourceMap.content.elements().collection.push_back(elementSM);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return cur;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static void finalize(const MarkdownNodeIterator& node,
|
|
75
|
+
SectionParserData& pd,
|
|
76
|
+
const ParseResultRef<DataStructureGroup>& out) {
|
|
77
|
+
|
|
78
|
+
out.node.element = Element::CategoryElement;
|
|
79
|
+
out.node.category = Element::DataStructureGroupCategory;
|
|
80
|
+
|
|
81
|
+
if (pd.exportSourceMap()) {
|
|
82
|
+
|
|
83
|
+
out.sourceMap.element = out.node.element;
|
|
84
|
+
out.sourceMap.category = out.node.category;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
static SectionType sectionType(const MarkdownNodeIterator& node) {
|
|
89
|
+
|
|
90
|
+
if (node->type == mdp::HeaderMarkdownNodeType &&
|
|
91
|
+
!node->text.empty()) {
|
|
92
|
+
|
|
93
|
+
mdp::ByteBuffer remaining, subject = node->text;
|
|
94
|
+
|
|
95
|
+
subject = GetFirstLine(subject, remaining);
|
|
96
|
+
TrimString(subject);
|
|
97
|
+
|
|
98
|
+
if (RegexMatch(subject, DataStructureGroupRegex)) {
|
|
99
|
+
return DataStructureGroupSectionType;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return UndefinedSectionType;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
static SectionType nestedSectionType(const MarkdownNodeIterator& node) {
|
|
107
|
+
|
|
108
|
+
return SectionProcessor<mson::NamedType>::sectionType(node);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static SectionTypes upperSectionTypes() {
|
|
112
|
+
return {DataStructureGroupSectionType, ResourceGroupSectionType, ResourceSectionType};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* \brief Check if a named type already exists with the given name
|
|
117
|
+
*
|
|
118
|
+
* \param blueprint The blueprint which is formed until now
|
|
119
|
+
* \param name The named type name to be checked
|
|
120
|
+
*/
|
|
121
|
+
static bool isNamedTypeDuplicate(const Blueprint& blueprint,
|
|
122
|
+
mdp::ByteBuffer& name) {
|
|
123
|
+
|
|
124
|
+
for (Elements::const_iterator it = blueprint.content.elements().begin();
|
|
125
|
+
it != blueprint.content.elements().end();
|
|
126
|
+
++it) {
|
|
127
|
+
|
|
128
|
+
if (it->element == Element::CategoryElement) {
|
|
129
|
+
|
|
130
|
+
for (Elements::const_iterator subIt = it->content.elements().begin();
|
|
131
|
+
subIt != it->content.elements().end();
|
|
132
|
+
++subIt) {
|
|
133
|
+
|
|
134
|
+
if (subIt->element == Element::ResourceElement &&
|
|
135
|
+
subIt->content.resource.attributes.name.symbol.literal == name) {
|
|
136
|
+
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (subIt->element == Element::DataStructureElement &&
|
|
141
|
+
subIt->content.dataStructure.name.symbol.literal == name) {
|
|
142
|
+
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
/** Data Structures Parser */
|
|
154
|
+
typedef SectionParser<DataStructureGroup, HeaderSectionAdapter> DataStructureGroupParser;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
#endif
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//
|
|
2
|
+
// HTTP.cc
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Zdenek Nemec on 7/11/13.
|
|
6
|
+
// Copyright (c) 2013 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#include "HTTP.h"
|
|
10
|
+
|
|
11
|
+
using namespace snowcrash;
|
|
12
|
+
|
|
13
|
+
const std::string HTTPHeaderName::Accept = "Accept";
|
|
14
|
+
const std::string HTTPHeaderName::ContentLength = "Content-Length";
|
|
15
|
+
const std::string HTTPHeaderName::ContentType = "Content-Type";
|
|
16
|
+
const std::string HTTPHeaderName::TransferEncoding = "Transfer-Encoding";
|
|
17
|
+
|
|
18
|
+
const std::string HTTPHeaderName::SetCookie = "Set-Cookie";
|
|
19
|
+
const std::string HTTPHeaderName::Link = "Link";
|
|
20
|
+
|
|
21
|
+
const std::string HTTPMethodName::Head = "HEAD";
|
|
22
|
+
const std::string HTTPMethodName::Connect = "CONNECT";
|
|
23
|
+
|
|
24
|
+
StatusCodeTraits snowcrash::GetStatusCodeTrait(HTTPStatusCode code)
|
|
25
|
+
{
|
|
26
|
+
StatusCodeTraits traits;
|
|
27
|
+
traits.code = code;
|
|
28
|
+
|
|
29
|
+
// Following status codes MUST NOT contain response body
|
|
30
|
+
if (code == 204 || code == 304 || code/100 == 1) {
|
|
31
|
+
traits.allowBody = false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return traits;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
HTTPMethodTraits snowcrash::GetMethodTrait(HTTPMethod method)
|
|
38
|
+
{
|
|
39
|
+
HTTPMethodTraits traits;
|
|
40
|
+
traits.method = method;
|
|
41
|
+
|
|
42
|
+
// Following HTTP methods MUST NOT contain response body
|
|
43
|
+
// FIXME: When refactoring traits don't forget that 'CONNECT' has no body only when 1xx-2xx
|
|
44
|
+
if (method == HTTPMethodName::Head || method == HTTPMethodName::Connect) {
|
|
45
|
+
traits.allowBody = false;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return traits;
|
|
49
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
//
|
|
2
|
+
// HTTP.h
|
|
3
|
+
// snowcrash
|
|
4
|
+
//
|
|
5
|
+
// Created by Zdenek Nemec on 7/11/13.
|
|
6
|
+
// Copyright (c) 2013 Apiary Inc. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifndef SNOWCRASH_HTTP_H
|
|
10
|
+
#define SNOWCRASH_HTTP_H
|
|
11
|
+
|
|
12
|
+
#include <string>
|
|
13
|
+
#include "Blueprint.h"
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* \brief HTTP Methods
|
|
17
|
+
*
|
|
18
|
+
* Technical note: Using preprocessor macro instead of strict
|
|
19
|
+
* defined type due to C++98 string concatenation limitations.
|
|
20
|
+
* FIXME: To be improved with migration to C++11.
|
|
21
|
+
*/
|
|
22
|
+
#define HTTP_REQUEST_METHOD "(GET|POST|PUT|DELETE|OPTIONS|PATCH|PROPPATCH|LOCK|UNLOCK|COPY|MOVE|MKCOL|HEAD|LINK|UNLINK|CONNECT)"
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* \brief URI Template.
|
|
26
|
+
*
|
|
27
|
+
* See previous technical note (using macro).
|
|
28
|
+
*/
|
|
29
|
+
#define URI_TEMPLATE "(/.*)"
|
|
30
|
+
|
|
31
|
+
namespace snowcrash {
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Selected HTTP Header names.
|
|
35
|
+
*/
|
|
36
|
+
struct HTTPHeaderName {
|
|
37
|
+
static const std::string Accept;
|
|
38
|
+
static const std::string ContentLength;
|
|
39
|
+
static const std::string ContentType;
|
|
40
|
+
static const std::string TransferEncoding;
|
|
41
|
+
|
|
42
|
+
static const std::string SetCookie;
|
|
43
|
+
static const std::string Link;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Selected HTTP Method names.
|
|
48
|
+
*/
|
|
49
|
+
struct HTTPMethodName {
|
|
50
|
+
static const std::string Head;
|
|
51
|
+
static const std::string Connect;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* A HTTP Status code.
|
|
56
|
+
*/
|
|
57
|
+
typedef unsigned int HTTPStatusCode;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Traits of a HTTP response.
|
|
61
|
+
*/
|
|
62
|
+
struct HTTPResponseTraits {
|
|
63
|
+
|
|
64
|
+
bool allowBody; /// < Response body is allowed.
|
|
65
|
+
|
|
66
|
+
HTTPResponseTraits() : allowBody(true) {}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Response traits for a HTTP method.
|
|
71
|
+
*
|
|
72
|
+
* HTTP request method related response prescription
|
|
73
|
+
* Ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
|
|
74
|
+
*/
|
|
75
|
+
struct HTTPMethodTraits : HTTPResponseTraits
|
|
76
|
+
{
|
|
77
|
+
HTTPMethod method;
|
|
78
|
+
HTTPMethodTraits() : method("") {}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Response traits for a HTTP status code.
|
|
83
|
+
*
|
|
84
|
+
* Status-related response prescription.
|
|
85
|
+
* Ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
|
86
|
+
*/
|
|
87
|
+
struct StatusCodeTraits : HTTPResponseTraits
|
|
88
|
+
{
|
|
89
|
+
HTTPStatusCode code;
|
|
90
|
+
StatusCodeTraits() : code(0) {}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* \brief Retrieve response traits for given HTTP method.
|
|
95
|
+
* \param method HTTP method to retrieve traits for.
|
|
96
|
+
* \return A %HTTPMethodTraits for given method.
|
|
97
|
+
*/
|
|
98
|
+
extern HTTPMethodTraits GetMethodTrait(HTTPMethod method);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* \brief Retrieve response traits for given status code.
|
|
102
|
+
* \param code A HTTP status code to retrieve traits for.
|
|
103
|
+
* \return A %StatusCodeTraits for given code.
|
|
104
|
+
*/
|
|
105
|
+
extern StatusCodeTraits GetStatusCodeTrait(HTTPStatusCode code);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#endif
|