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.
Files changed (348) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +2 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +33 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +50 -0
  10. data/Rakefile +43 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/circle.yml +14 -0
  14. data/ext/drafter/CHANGELOG.md +278 -0
  15. data/ext/drafter/Dockerfile +17 -0
  16. data/ext/drafter/Makefile +62 -0
  17. data/ext/drafter/appveyor.yml +17 -0
  18. data/ext/drafter/bin/drafter +0 -0
  19. data/ext/drafter/build/Makefile +387 -0
  20. data/ext/drafter/build/drafter.Makefile +6 -0
  21. data/ext/drafter/build/drafter.target.mk +159 -0
  22. data/ext/drafter/build/ext/snowcrash/libmarkdownparser.target.mk +141 -0
  23. data/ext/drafter/build/ext/snowcrash/libsnowcrash.target.mk +154 -0
  24. data/ext/drafter/build/ext/snowcrash/libsundown.target.mk +149 -0
  25. data/ext/drafter/build/ext/snowcrash/perf-libsnowcrash.target.mk +147 -0
  26. data/ext/drafter/build/ext/snowcrash/snowcrash.Makefile +6 -0
  27. data/ext/drafter/build/gyp-mac-tool +606 -0
  28. data/ext/drafter/build/libdrafter.target.mk +186 -0
  29. data/ext/drafter/build/libsos.target.mk +137 -0
  30. data/ext/drafter/build/out/Release/drafter +0 -0
  31. data/ext/drafter/build/out/Release/libdrafter.dylib +0 -0
  32. data/ext/drafter/build/out/Release/libmarkdownparser.a +0 -0
  33. data/ext/drafter/build/out/Release/libsnowcrash.a +0 -0
  34. data/ext/drafter/build/out/Release/libsos.a +0 -0
  35. data/ext/drafter/build/out/Release/libsundown.a +0 -0
  36. data/ext/drafter/build/out/Release/obj.target/drafter/src/config.o +0 -0
  37. data/ext/drafter/build/out/Release/obj.target/drafter/src/main.o +0 -0
  38. data/ext/drafter/build/out/Release/obj.target/drafter/src/reporting.o +0 -0
  39. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/ConversionContext.o +0 -0
  40. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/NamedTypesRegistry.o +0 -0
  41. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractAPI.o +0 -0
  42. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractDataStructure.o +0 -0
  43. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractElementFactory.o +0 -0
  44. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractSourceMap.o +0 -0
  45. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Render.o +0 -0
  46. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Serialize.o +0 -0
  47. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeAST.o +0 -0
  48. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeResult.o +0 -0
  49. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeSourcemap.o +0 -0
  50. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter.o +0 -0
  51. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter_private.o +0 -0
  52. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ComparableVisitor.o +0 -0
  53. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Element.o +0 -0
  54. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ExpandVisitor.o +0 -0
  55. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/IsExpandableVisitor.o +0 -0
  56. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/JSONSchemaVisitor.o +0 -0
  57. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/PrintVisitor.o +0 -0
  58. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Query.o +0 -0
  59. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Registry.o +0 -0
  60. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/RenderJSONVisitor.o +0 -0
  61. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeCompactVisitor.o +0 -0
  62. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeVisitor.o +0 -0
  63. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/TypeQueryVisitor.o +0 -0
  64. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/VisitorUtils.o +0 -0
  65. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o +0 -0
  66. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o +0 -0
  67. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o +0 -0
  68. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Blueprint.o +0 -0
  69. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/BlueprintSourcemap.o +0 -0
  70. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HTTP.o +0 -0
  71. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HeadersParser.o +0 -0
  72. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSON.o +0 -0
  73. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONOneOfParser.o +0 -0
  74. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONSourcemap.o +0 -0
  75. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONTypeSectionParser.o +0 -0
  76. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONValueMemberParser.o +0 -0
  77. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Section.o +0 -0
  78. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Signature.o +0 -0
  79. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/UriTemplateParser.o +0 -0
  80. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/posix/RegexMatch.o +0 -0
  81. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/snowcrash.o +0 -0
  82. data/ext/drafter/build/out/Release/obj.target/libsos/ext/sos/src/sos.o +0 -0
  83. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o +0 -0
  84. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o +0 -0
  85. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o +0 -0
  86. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o +0 -0
  87. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o +0 -0
  88. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o +0 -0
  89. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o +0 -0
  90. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o +0 -0
  91. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o +0 -0
  92. data/ext/drafter/circle.yml +32 -0
  93. data/ext/drafter/config.gypi +10 -0
  94. data/ext/drafter/config.mk +5 -0
  95. data/ext/drafter/configure +224 -0
  96. data/ext/drafter/drafter.gyp +189 -0
  97. data/ext/drafter/drafter.xcworkspace/contents.xcworkspacedata +13 -0
  98. data/ext/drafter/ext/snowcrash/Makefile +58 -0
  99. data/ext/drafter/ext/snowcrash/appveyor.yml +7 -0
  100. data/ext/drafter/ext/snowcrash/common.gypi +165 -0
  101. data/ext/drafter/ext/snowcrash/configure +197 -0
  102. data/ext/drafter/ext/snowcrash/ext/markdown-parser/Makefile +90 -0
  103. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/CONTRIBUTING.md +10 -0
  104. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile +84 -0
  105. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile.win +33 -0
  106. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/smartypants.c +72 -0
  107. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/sundown.c +80 -0
  108. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini.h +37 -0
  109. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.c +108 -0
  110. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.c +84 -0
  111. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.c +647 -0
  112. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.h +77 -0
  113. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.c +389 -0
  114. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html_block_names.txt +25 -0
  115. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.c +297 -0
  116. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.h +51 -0
  117. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.c +225 -0
  118. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.h +96 -0
  119. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/html_blocks.h +206 -0
  120. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.c +2726 -0
  121. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.h +147 -0
  122. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.c +204 -0
  123. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.h +58 -0
  124. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.c +81 -0
  125. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.h +29 -0
  126. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/sundown.def +20 -0
  127. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/markdown/markdown.vcproj +188 -0
  128. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/msvc.sln +38 -0
  129. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/sundown/sundown.vcproj +206 -0
  130. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.cc +160 -0
  131. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.h +90 -0
  132. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc +152 -0
  133. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h +103 -0
  134. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc +388 -0
  135. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h +106 -0
  136. data/ext/drafter/ext/snowcrash/snowcrash.gyp +196 -0
  137. data/ext/drafter/ext/snowcrash/src/ActionParser.h +560 -0
  138. data/ext/drafter/ext/snowcrash/src/AssetParser.h +123 -0
  139. data/ext/drafter/ext/snowcrash/src/AttributesParser.h +123 -0
  140. data/ext/drafter/ext/snowcrash/src/Blueprint.cc +90 -0
  141. data/ext/drafter/ext/snowcrash/src/Blueprint.h +489 -0
  142. data/ext/drafter/ext/snowcrash/src/BlueprintParser.h +845 -0
  143. data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.cc +81 -0
  144. data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.h +345 -0
  145. data/ext/drafter/ext/snowcrash/src/BlueprintUtility.h +111 -0
  146. data/ext/drafter/ext/snowcrash/src/CodeBlockUtility.h +276 -0
  147. data/ext/drafter/ext/snowcrash/src/DataStructureGroupParser.h +157 -0
  148. data/ext/drafter/ext/snowcrash/src/HTTP.cc +49 -0
  149. data/ext/drafter/ext/snowcrash/src/HTTP.h +108 -0
  150. data/ext/drafter/ext/snowcrash/src/HeadersParser.cc +117 -0
  151. data/ext/drafter/ext/snowcrash/src/HeadersParser.h +377 -0
  152. data/ext/drafter/ext/snowcrash/src/MSON.cc +272 -0
  153. data/ext/drafter/ext/snowcrash/src/MSON.h +405 -0
  154. data/ext/drafter/ext/snowcrash/src/MSONMixinParser.h +103 -0
  155. data/ext/drafter/ext/snowcrash/src/MSONNamedTypeParser.h +135 -0
  156. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.cc +132 -0
  157. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.h +80 -0
  158. data/ext/drafter/ext/snowcrash/src/MSONParameterParser.h +166 -0
  159. data/ext/drafter/ext/snowcrash/src/MSONPropertyMemberParser.h +106 -0
  160. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.cc +141 -0
  161. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.h +181 -0
  162. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.cc +209 -0
  163. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.h +213 -0
  164. data/ext/drafter/ext/snowcrash/src/MSONUtility.h +506 -0
  165. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.cc +214 -0
  166. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.h +390 -0
  167. data/ext/drafter/ext/snowcrash/src/ModelTable.h +87 -0
  168. data/ext/drafter/ext/snowcrash/src/ParameterParser.h +516 -0
  169. data/ext/drafter/ext/snowcrash/src/ParametersParser.h +222 -0
  170. data/ext/drafter/ext/snowcrash/src/PayloadParser.h +733 -0
  171. data/ext/drafter/ext/snowcrash/src/Platform.h +33 -0
  172. data/ext/drafter/ext/snowcrash/src/RegexMatch.h +32 -0
  173. data/ext/drafter/ext/snowcrash/src/RelationParser.h +87 -0
  174. data/ext/drafter/ext/snowcrash/src/ResourceGroupParser.h +297 -0
  175. data/ext/drafter/ext/snowcrash/src/ResourceParser.h +536 -0
  176. data/ext/drafter/ext/snowcrash/src/Section.cc +48 -0
  177. data/ext/drafter/ext/snowcrash/src/Section.h +60 -0
  178. data/ext/drafter/ext/snowcrash/src/SectionParser.h +246 -0
  179. data/ext/drafter/ext/snowcrash/src/SectionParserData.h +109 -0
  180. data/ext/drafter/ext/snowcrash/src/SectionProcessor.h +299 -0
  181. data/ext/drafter/ext/snowcrash/src/Signature.cc +75 -0
  182. data/ext/drafter/ext/snowcrash/src/Signature.h +103 -0
  183. data/ext/drafter/ext/snowcrash/src/SignatureSectionProcessor.h +442 -0
  184. data/ext/drafter/ext/snowcrash/src/SourceAnnotation.h +166 -0
  185. data/ext/drafter/ext/snowcrash/src/StringUtility.h +323 -0
  186. data/ext/drafter/ext/snowcrash/src/UriTemplateParser.cc +195 -0
  187. data/ext/drafter/ext/snowcrash/src/UriTemplateParser.h +240 -0
  188. data/ext/drafter/ext/snowcrash/src/ValuesParser.h +111 -0
  189. data/ext/drafter/ext/snowcrash/src/posix/RegexMatch.cc +99 -0
  190. data/ext/drafter/ext/snowcrash/src/snowcrash.cc +90 -0
  191. data/ext/drafter/ext/snowcrash/src/snowcrash.h +44 -0
  192. data/ext/drafter/ext/snowcrash/src/win/RegexMatch.cc +78 -0
  193. data/ext/drafter/ext/snowcrash/tools/gyp/AUTHORS +12 -0
  194. data/ext/drafter/ext/snowcrash/tools/gyp/DEPS +23 -0
  195. data/ext/drafter/ext/snowcrash/tools/gyp/OWNERS +1 -0
  196. data/ext/drafter/ext/snowcrash/tools/gyp/PRESUBMIT.py +137 -0
  197. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/buildbot_run.py +136 -0
  198. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/OWNERS +6 -0
  199. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/cq_config.json +15 -0
  200. data/ext/drafter/ext/snowcrash/tools/gyp/codereview.settings +10 -0
  201. data/ext/drafter/ext/snowcrash/tools/gyp/data/win/large-pdb-shim.cc +12 -0
  202. data/ext/drafter/ext/snowcrash/tools/gyp/gyp +8 -0
  203. data/ext/drafter/ext/snowcrash/tools/gyp/gyp.bat +5 -0
  204. data/ext/drafter/ext/snowcrash/tools/gyp/gyp_main.py +16 -0
  205. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSNew.py +340 -0
  206. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSProject.py +208 -0
  207. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSSettings.py +1096 -0
  208. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSToolFile.py +58 -0
  209. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUserFile.py +147 -0
  210. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.py +270 -0
  211. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.pyc +0 -0
  212. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.py +445 -0
  213. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.pyc +0 -0
  214. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.py +548 -0
  215. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.pyc +0 -0
  216. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.py +608 -0
  217. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
  218. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/easy_xml.py +157 -0
  219. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/flock_tool.py +54 -0
  220. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.py +0 -0
  221. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
  222. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/analyzer.py +741 -0
  223. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/android.py +1069 -0
  224. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/cmake.py +1248 -0
  225. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/dump_dependency_json.py +99 -0
  226. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/eclipse.py +425 -0
  227. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypd.py +94 -0
  228. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypsh.py +56 -0
  229. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.py +2218 -0
  230. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
  231. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/msvs.py +3467 -0
  232. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.py +2427 -0
  233. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.pyc +0 -0
  234. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.py +1300 -0
  235. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
  236. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.py +2899 -0
  237. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.pyc +0 -0
  238. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/mac_tool.py +605 -0
  239. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.py +1093 -0
  240. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.pyc +0 -0
  241. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.py +160 -0
  242. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.pyc +0 -0
  243. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ordered_dict.py +289 -0
  244. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.py +46 -0
  245. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.pyc +0 -0
  246. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/win_tool.py +314 -0
  247. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.py +1664 -0
  248. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
  249. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.py +276 -0
  250. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.pyc +0 -0
  251. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.py +2927 -0
  252. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
  253. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xml_fix.py +69 -0
  254. data/ext/drafter/ext/snowcrash/tools/gyp/pylintrc +307 -0
  255. data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples +81 -0
  256. data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples.bat +5 -0
  257. data/ext/drafter/ext/snowcrash/tools/gyp/setup.py +19 -0
  258. data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.pbfilespec +27 -0
  259. data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.xclangspec +226 -0
  260. data/ext/drafter/ext/snowcrash/tools/gyp/tools/emacs/gyp.el +275 -0
  261. data/ext/drafter/ext/snowcrash/tools/gyp/tools/graphviz.py +100 -0
  262. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_gyp.py +155 -0
  263. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_sln.py +169 -0
  264. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_vcproj.py +329 -0
  265. data/ext/drafter/ext/snowcrash/vcbuild.bat +139 -0
  266. data/ext/drafter/ext/sos/Makefile +62 -0
  267. data/ext/drafter/ext/sos/src/sos.cc +235 -0
  268. data/ext/drafter/ext/sos/src/sos.h +188 -0
  269. data/ext/drafter/ext/sos/src/sosJSON.h +121 -0
  270. data/ext/drafter/ext/sos/src/sosYAML.h +105 -0
  271. data/ext/drafter/src/ConversionContext.cc +39 -0
  272. data/ext/drafter/src/ConversionContext.h +34 -0
  273. data/ext/drafter/src/NamedTypesRegistry.cc +405 -0
  274. data/ext/drafter/src/NamedTypesRegistry.h +28 -0
  275. data/ext/drafter/src/NodeInfo.h +143 -0
  276. data/ext/drafter/src/RefractAPI.cc +579 -0
  277. data/ext/drafter/src/RefractAPI.h +28 -0
  278. data/ext/drafter/src/RefractDataStructure.cc +1199 -0
  279. data/ext/drafter/src/RefractDataStructure.h +26 -0
  280. data/ext/drafter/src/RefractElementFactory.cc +107 -0
  281. data/ext/drafter/src/RefractElementFactory.h +67 -0
  282. data/ext/drafter/src/RefractSourceMap.cc +29 -0
  283. data/ext/drafter/src/RefractSourceMap.h +57 -0
  284. data/ext/drafter/src/Render.cc +157 -0
  285. data/ext/drafter/src/Render.h +40 -0
  286. data/ext/drafter/src/Serialize.cc +160 -0
  287. data/ext/drafter/src/Serialize.h +289 -0
  288. data/ext/drafter/src/SerializeAST.cc +507 -0
  289. data/ext/drafter/src/SerializeAST.h +29 -0
  290. data/ext/drafter/src/SerializeResult.cc +170 -0
  291. data/ext/drafter/src/SerializeResult.h +34 -0
  292. data/ext/drafter/src/SerializeSourcemap.cc +331 -0
  293. data/ext/drafter/src/SerializeSourcemap.h +21 -0
  294. data/ext/drafter/src/Version.h +40 -0
  295. data/ext/drafter/src/config.cc +91 -0
  296. data/ext/drafter/src/config.h +38 -0
  297. data/ext/drafter/src/drafter.cc +137 -0
  298. data/ext/drafter/src/drafter.h +102 -0
  299. data/ext/drafter/src/drafter_private.cc +85 -0
  300. data/ext/drafter/src/drafter_private.h +34 -0
  301. data/ext/drafter/src/main.cc +137 -0
  302. data/ext/drafter/src/refract/AppendDecorator.h +58 -0
  303. data/ext/drafter/src/refract/Build.h +67 -0
  304. data/ext/drafter/src/refract/ComparableVisitor.cc +43 -0
  305. data/ext/drafter/src/refract/ComparableVisitor.h +62 -0
  306. data/ext/drafter/src/refract/Element.cc +409 -0
  307. data/ext/drafter/src/refract/Element.h +656 -0
  308. data/ext/drafter/src/refract/ElementFwd.h +37 -0
  309. data/ext/drafter/src/refract/ElementInserter.h +59 -0
  310. data/ext/drafter/src/refract/Exception.h +31 -0
  311. data/ext/drafter/src/refract/ExpandVisitor.cc +359 -0
  312. data/ext/drafter/src/refract/ExpandVisitor.h +58 -0
  313. data/ext/drafter/src/refract/FilterVisitor.h +52 -0
  314. data/ext/drafter/src/refract/IsExpandableVisitor.cc +140 -0
  315. data/ext/drafter/src/refract/IsExpandableVisitor.h +31 -0
  316. data/ext/drafter/src/refract/Iterate.h +160 -0
  317. data/ext/drafter/src/refract/JSONSchemaVisitor.cc +675 -0
  318. data/ext/drafter/src/refract/JSONSchemaVisitor.h +73 -0
  319. data/ext/drafter/src/refract/PrintVisitor.cc +164 -0
  320. data/ext/drafter/src/refract/PrintVisitor.h +50 -0
  321. data/ext/drafter/src/refract/Query.cc +13 -0
  322. data/ext/drafter/src/refract/Query.h +38 -0
  323. data/ext/drafter/src/refract/Registry.cc +114 -0
  324. data/ext/drafter/src/refract/Registry.h +43 -0
  325. data/ext/drafter/src/refract/RenderJSONVisitor.cc +255 -0
  326. data/ext/drafter/src/refract/RenderJSONVisitor.h +51 -0
  327. data/ext/drafter/src/refract/SerializeCompactVisitor.cc +167 -0
  328. data/ext/drafter/src/refract/SerializeCompactVisitor.h +56 -0
  329. data/ext/drafter/src/refract/SerializeVisitor.cc +214 -0
  330. data/ext/drafter/src/refract/SerializeVisitor.h +55 -0
  331. data/ext/drafter/src/refract/TypeQueryVisitor.cc +46 -0
  332. data/ext/drafter/src/refract/TypeQueryVisitor.h +110 -0
  333. data/ext/drafter/src/refract/Visitor.h +126 -0
  334. data/ext/drafter/src/refract/VisitorUtils.cc +63 -0
  335. data/ext/drafter/src/refract/VisitorUtils.h +231 -0
  336. data/ext/drafter/src/reporting.cc +263 -0
  337. data/ext/drafter/src/reporting.h +39 -0
  338. data/ext/drafter/src/stream.h +148 -0
  339. data/ext/drafter/tools/homebrew/drafter.rb +18 -0
  340. data/ext/drafter/tools/make-tarball.sh +39 -0
  341. data/ext/drafter/tools/refract-filter.py +96 -0
  342. data/ext/drafter/tools/release.sh +17 -0
  343. data/ext/drafter/vcbuild.bat +203 -0
  344. data/lib/lounge_lizard/binding.rb +29 -0
  345. data/lib/lounge_lizard/version.rb +3 -0
  346. data/lib/lounge_lizard.rb +18 -0
  347. data/lounge_lizard.gemspec +37 -0
  348. metadata +547 -0
@@ -0,0 +1,246 @@
1
+ //
2
+ // SectionParser.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 5/4/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_SECTIONPARSER_H
10
+ #define SNOWCRASH_SECTIONPARSER_H
11
+
12
+ #include <stdexcept>
13
+ #include "SignatureSectionProcessor.h"
14
+
15
+ namespace snowcrash {
16
+
17
+ /**
18
+ * Blueprint section parser
19
+ */
20
+ template<typename T, typename Adapter>
21
+ struct SectionParser {
22
+
23
+
24
+ /**
25
+ * \brief Parse a section of blueprint
26
+ * \param node Initial node to start parsing at
27
+ * \param siblings Siblings of the initial node
28
+ * \param pd Parser data
29
+ * \param T Parsed output
30
+ * \return Iterator to the first unparsed block
31
+ */
32
+ static MarkdownNodeIterator parse(const MarkdownNodeIterator& node,
33
+ const MarkdownNodes& siblings,
34
+ SectionParserData& pd,
35
+ const ParseResultRef<T>& out) {
36
+
37
+ SectionLayout layout = DefaultSectionLayout;
38
+ MarkdownNodeIterator cur = Adapter::startingNode(node, pd);
39
+ const MarkdownNodes& collection = Adapter::startingNodeSiblings(node, siblings);
40
+
41
+ // Signature node
42
+ MarkdownNodeIterator lastCur = cur;
43
+ cur = SectionProcessor<T>::processSignature(cur, collection, pd, layout, out);
44
+
45
+ // Exclusive Nested Sections Layout
46
+ if (layout == ExclusiveNestedSectionLayout) {
47
+
48
+ cur = parseNestedSections(cur, collection, pd, out);
49
+
50
+ SectionProcessor<T>::finalize(node, pd, out);
51
+
52
+ return Adapter::nextStartingNode(node, siblings, cur);
53
+ }
54
+
55
+ // Parser redirect layout
56
+ if (layout == RedirectSectionLayout) {
57
+ SectionProcessor<T>::finalize(node, pd, out);
58
+
59
+ return Adapter::nextStartingNode(node, siblings, cur);
60
+ }
61
+
62
+ // Default layout
63
+ if (lastCur == cur)
64
+ return Adapter::nextStartingNode(node, siblings, cur);
65
+
66
+ // Description nodes
67
+ while(cur != collection.end() &&
68
+ SectionProcessor<T>::isDescriptionNode(cur, pd.sectionContext())) {
69
+
70
+ lastCur = cur;
71
+ cur = SectionProcessor<T>::processDescription(cur, collection, pd, out);
72
+
73
+ if (lastCur == cur)
74
+ return Adapter::nextStartingNode(node, siblings, cur);
75
+ }
76
+
77
+ // Content nodes
78
+ while(cur != collection.end() &&
79
+ SectionProcessor<T>::isContentNode(cur, pd.sectionContext())) {
80
+
81
+ lastCur = cur;
82
+ cur = SectionProcessor<T>::processContent(cur, collection, pd, out);
83
+
84
+ if (lastCur == cur)
85
+ return Adapter::nextStartingNode(node, siblings, cur);
86
+ }
87
+
88
+ // Nested Sections
89
+ cur = parseNestedSections(cur, collection, pd, out);
90
+
91
+ SectionProcessor<T>::finalize(node, pd, out);
92
+
93
+ return Adapter::nextStartingNode(node, siblings, cur);
94
+ }
95
+
96
+
97
+ /** Parse nested sections */
98
+ static MarkdownNodeIterator parseNestedSections(const MarkdownNodeIterator& node,
99
+ const MarkdownNodes& collection,
100
+ SectionParserData& pd,
101
+ const ParseResultRef<T>& out) {
102
+
103
+ MarkdownNodeIterator cur = node;
104
+ MarkdownNodeIterator lastCur = cur;
105
+
106
+ SectionType lastSectionType = UndefinedSectionType;
107
+
108
+ SectionProcessor<T>::preprocessNestedSections(node, collection, pd, out);
109
+
110
+ // Nested sections
111
+ while (cur != collection.end()) {
112
+
113
+ lastCur = cur;
114
+ SectionType nestedType = SectionProcessor<T>::nestedSectionType(cur);
115
+
116
+ pd.sectionsContext.push_back(nestedType);
117
+
118
+ if (nestedType != UndefinedSectionType) {
119
+ cur = SectionProcessor<T>::processNestedSection(cur, collection, pd, out);
120
+ }
121
+ else if (Adapter::nextSkipsUnexpected ||
122
+ SectionProcessor<T>::isUnexpectedNode(cur, pd.sectionContext())) {
123
+
124
+ cur = SectionProcessor<T>::processUnexpectedNode(cur, collection, pd, lastSectionType, out);
125
+ }
126
+
127
+ if (cur != collection.end() &&
128
+ (pd.sectionContext() != UndefinedSectionType ||
129
+ (cur->type != mdp::ParagraphMarkdownNodeType &&
130
+ cur->type != mdp::CodeMarkdownNodeType))) {
131
+
132
+ lastSectionType = pd.sectionContext();
133
+ }
134
+
135
+ pd.sectionsContext.pop_back();
136
+
137
+ if (lastCur == cur)
138
+ break;
139
+ }
140
+
141
+ return cur;
142
+ }
143
+ };
144
+
145
+ /** Parser Adapter for parsing header-defined sections */
146
+ struct HeaderSectionAdapter {
147
+
148
+ /** \return Node to start parsing with */
149
+ static const MarkdownNodeIterator startingNode(const MarkdownNodeIterator& seed,
150
+ const SectionParserData& pd) {
151
+ if (seed->type != mdp::HeaderMarkdownNodeType) {
152
+ // ERR: Expected header
153
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(seed->sourceMap, pd.sourceCharacterIndex);
154
+ throw Error("expected header block, e.g. '# <text>'", BusinessError, sourceMap);
155
+ }
156
+
157
+ return seed;
158
+ }
159
+
160
+ /** \return Collection of siblings to starting Node */
161
+ static const MarkdownNodes& startingNodeSiblings(const MarkdownNodeIterator& seed,
162
+ const MarkdownNodes& siblings) {
163
+ return siblings;
164
+ }
165
+
166
+ /** \return Starting node for next parsing */
167
+ static const MarkdownNodeIterator nextStartingNode(const MarkdownNodeIterator& seed,
168
+ const MarkdownNodes& siblings,
169
+ const MarkdownNodeIterator& cur) {
170
+ return cur;
171
+ }
172
+
173
+ /**
174
+ * \brief Adapter Markdown node skipping behavior trait.
175
+ *
176
+ * Adapter trait signalizing that the adapter can possibly skip some Markdown nodes on a nextStartingNode() call.
177
+ * If set to true, a call to nextStartingNode() can skip some nodes causing some information loss. False otherwise.
178
+ */
179
+ static const bool nextSkipsUnexpected = false;
180
+ };
181
+
182
+ /** Parser Adapter for parsing list-defined sections */
183
+ struct ListSectionAdapter {
184
+
185
+ static const MarkdownNodeIterator startingNode(const MarkdownNodeIterator& seed,
186
+ const SectionParserData& pd) {
187
+ if (seed->type != mdp::ListItemMarkdownNodeType) {
188
+ // ERR: Expected list item
189
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(seed->sourceMap, pd.sourceCharacterIndex);
190
+ throw Error("expected list item block, e.g. '+ <text>'", BusinessError, sourceMap);
191
+ }
192
+
193
+ for (auto it = seed->children().begin() ; it != seed->children().end() ; ++it) {
194
+ if (it->sourceMap.begin()->length != 0) {
195
+ return it;
196
+ }
197
+ }
198
+
199
+ // there are no parseable items, let it pass in old manner
200
+ return seed->children().begin();
201
+ }
202
+
203
+ static const MarkdownNodes& startingNodeSiblings(const MarkdownNodeIterator& seed,
204
+ const MarkdownNodes& siblings) {
205
+ return seed->children();
206
+ }
207
+
208
+ static const MarkdownNodeIterator nextStartingNode(const MarkdownNodeIterator& seed,
209
+ const MarkdownNodes& siblings,
210
+ const MarkdownNodeIterator& cur) {
211
+ if (seed == siblings.end())
212
+ return seed;
213
+
214
+ return ++MarkdownNodeIterator(seed);
215
+ }
216
+
217
+ static const bool nextSkipsUnexpected = true;
218
+ };
219
+
220
+ /** Parser Adapter for parsing blueprint sections */
221
+ struct BlueprintSectionAdapter {
222
+
223
+ /** \return Node to start parsing with */
224
+ static const MarkdownNodeIterator startingNode(const MarkdownNodeIterator& seed,
225
+ const SectionParserData& pd) {
226
+ return seed;
227
+ }
228
+
229
+ /** \return Collection of siblings to starting Node */
230
+ static const MarkdownNodes& startingNodeSiblings(const MarkdownNodeIterator& seed,
231
+ const MarkdownNodes& siblings) {
232
+ return siblings;
233
+ }
234
+
235
+ /** \return Starting node for next parsing */
236
+ static const MarkdownNodeIterator nextStartingNode(const MarkdownNodeIterator& seed,
237
+ const MarkdownNodes& siblings,
238
+ const MarkdownNodeIterator& cur) {
239
+ return cur;
240
+ }
241
+
242
+ static const bool nextSkipsUnexpected = false;
243
+ };
244
+ }
245
+
246
+ #endif
@@ -0,0 +1,109 @@
1
+ //
2
+ // SectionParserData.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 5/21/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_SECTIONPARSERDATA_H
10
+ #define SNOWCRASH_SECTIONPARSERDATA_H
11
+
12
+ #include "ModelTable.h"
13
+ #include "BlueprintSourcemap.h"
14
+ #include "Section.h"
15
+
16
+ namespace snowcrash {
17
+
18
+ /**
19
+ * \brief Blueprint Parser Options.
20
+ *
21
+ * Controls blueprint parser behavior.
22
+ */
23
+ enum BlueprintParserOption {
24
+ RenderDescriptionsOption = (1 << 0), /// < Render Markdown in description.
25
+ RequireBlueprintNameOption = (1 << 1), /// < Treat missing blueprint name as error
26
+ ExportSourcemapOption = (1 << 2) /// < Export source maps AST
27
+ };
28
+
29
+ typedef unsigned int BlueprintParserOptions;
30
+
31
+ /**
32
+ * \brief Section Parser Data
33
+ *
34
+ * State of the parser.
35
+ */
36
+ struct SectionParserData {
37
+ SectionParserData(BlueprintParserOptions opts,
38
+ const mdp::ByteBuffer& src,
39
+ const Blueprint& bp)
40
+ : options(opts), sourceData(src), blueprint(bp) {}
41
+
42
+ /** Parser Options */
43
+ BlueprintParserOptions options;
44
+
45
+ /** Named Types */
46
+ std::vector<mson::NamedType> msonTypesTable;
47
+
48
+ /** Table of named types and resolved base types */
49
+ mson::NamedTypeBaseTable namedTypeBaseTable;
50
+
51
+ /** Table mapping named type to sub types */
52
+ mson::NamedTypeInheritanceTable namedTypeInheritanceTable;
53
+
54
+ /** Table mapping named types to their dependent named types */
55
+ mson::NamedTypeDependencyTable namedTypeDependencyTable;
56
+
57
+ /** Variable to store the current named type */
58
+ mson::Literal namedTypeContext;
59
+
60
+ /** Model Table */
61
+ ModelTable modelTable;
62
+
63
+ /** Model Table Sourcemap */
64
+ ModelSourceMapTable modelSourceMapTable;
65
+
66
+ /** Source Data */
67
+ const mdp::ByteBuffer& sourceData;
68
+
69
+ /** Source - map of bytes to character position - performance optimalization */
70
+ mdp::ByteBufferCharacterIndex sourceCharacterIndex;
71
+
72
+ /** AST being parsed **/
73
+ const Blueprint& blueprint;
74
+
75
+ /** Sections Context */
76
+ typedef std::vector<SectionType> SectionsStack;
77
+ SectionsStack sectionsContext;
78
+
79
+ /** \returns Actual Section Context */
80
+ SectionType sectionContext() const {
81
+ return (sectionsContext.empty()) ? UndefinedSectionType : sectionsContext.back();
82
+ }
83
+
84
+ /** \returns Parent Section Context */
85
+ SectionType parentSectionContext() const {
86
+ if (sectionsContext.empty())
87
+ return UndefinedSectionType;
88
+
89
+ size_t size = sectionsContext.size();
90
+
91
+ if (size == 1)
92
+ return sectionsContext.back();
93
+ else
94
+ return sectionsContext[size-2];
95
+ }
96
+
97
+ /** \returns True if exporting source maps */
98
+ bool exportSourceMap() const {
99
+ return options & ExportSourcemapOption;
100
+ }
101
+
102
+ private:
103
+ SectionParserData();
104
+ SectionParserData(const SectionParserData&);
105
+ SectionParserData& operator=(const SectionParserData&);
106
+ };
107
+ }
108
+
109
+ #endif
@@ -0,0 +1,299 @@
1
+ //
2
+ // SectionProcessor.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 5/14/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_SECTIONPROCESSOR_H
10
+ #define SNOWCRASH_SECTIONPROCESSOR_H
11
+
12
+ #include "SectionParserData.h"
13
+ #include "SourceAnnotation.h"
14
+ #include "Signature.h"
15
+
16
+ // Use the following macro whenever a section doesn't have description
17
+ #define NO_SECTION_DESCRIPTION(T)\
18
+ static MarkdownNodeIterator processDescription(const MarkdownNodeIterator& node,\
19
+ const MarkdownNodes& siblings,\
20
+ SectionParserData& pd,\
21
+ const ParseResultRef<T>& out) {\
22
+ return node;\
23
+ }\
24
+ \
25
+ static bool isDescriptionNode(const MarkdownNodeIterator& node,\
26
+ SectionType sectionType) {\
27
+ return false;\
28
+ }\
29
+
30
+ namespace snowcrash {
31
+
32
+ using mdp::MarkdownNode;
33
+ using mdp::MarkdownNodes;
34
+ using mdp::MarkdownNodeIterator;
35
+
36
+ typedef Collection<SectionType>::type SectionTypes;
37
+
38
+ /**
39
+ * Layout of the section being parsed
40
+ */
41
+ enum SectionLayout {
42
+ DefaultSectionLayout, /// Default Section Layout: Signature > Description > Content > Nested
43
+ ExclusiveNestedSectionLayout, /// Section is composed of nested sections only
44
+ RedirectSectionLayout /// Section should be parsed by another parser as whole
45
+ };
46
+
47
+ /**
48
+ * \brief Complete compound product of parsing
49
+ *
50
+ * This structure owns all of the product data. As such
51
+ * it shouldn't be used internally unless there is a need
52
+ * for storing complete parser data. See %IntermediateParseResult.
53
+ */
54
+ template<typename T>
55
+ struct ParseResult {
56
+
57
+ ParseResult(const Report& report_ = Report())
58
+ : report(report_) {}
59
+
60
+ Report report; /// Parser's report
61
+ T node; /// Parsed AST node
62
+ SourceMap<T> sourceMap; /// Parsed AST node source map
63
+ };
64
+
65
+ /**
66
+ * \brief Partial product of parsing.
67
+ *
68
+ * This structure owns the node being parsed and its source map.
69
+ * Unlike %ParseResult it relies on shared parser report data making it
70
+ * ideal for holding temporary results while parsing items of a collection.
71
+ */
72
+ template<typename T>
73
+ struct IntermediateParseResult {
74
+
75
+ explicit IntermediateParseResult(Report& report_)
76
+ : report(report_) {}
77
+
78
+ Report& report;
79
+ T node;
80
+ SourceMap<T> sourceMap;
81
+ };
82
+
83
+ /**
84
+ * \brief Reference wrapper for parsing data product
85
+ *
86
+ * Reference wrapper for %ParseResult and %IntermediateParseResult.
87
+ */
88
+ template<typename T>
89
+ struct ParseResultRef {
90
+
91
+ ParseResultRef(ParseResult<T>& parseResult)
92
+ : report(parseResult.report), node(parseResult.node), sourceMap(parseResult.sourceMap) {}
93
+
94
+ ParseResultRef(IntermediateParseResult<T>& parseResult)
95
+ : report(parseResult.report), node(parseResult.node), sourceMap(parseResult.sourceMap) {}
96
+
97
+ ParseResultRef(Report& report_, T& node_, SourceMap<T>& sourceMap_)
98
+ : report(report_), node(node_), sourceMap(sourceMap_) {}
99
+
100
+ Report& report;
101
+ T& node;
102
+ SourceMap<T>& sourceMap;
103
+
104
+ private:
105
+ ParseResultRef();
106
+ };
107
+
108
+ /*
109
+ * Forward Declarations
110
+ */
111
+ template<typename T>
112
+ struct SectionProcessor;
113
+
114
+ /**
115
+ * \brief Section Processor Base
116
+ *
117
+ * Defines section processor interface alongised with its default
118
+ * behavior.
119
+ */
120
+ template<typename T>
121
+ struct SectionProcessorBase {
122
+
123
+ /**
124
+ * \brief Process section signature Markdown node
125
+ * \param node Node to process
126
+ * \param siblings Siblings of the node being processed
127
+ * \param pd Section parser state
128
+ * \param report Process log report
129
+ * \param out Processed output
130
+ * \return Result of the process operation
131
+ */
132
+ static MarkdownNodeIterator processSignature(const MarkdownNodeIterator& node,
133
+ const MarkdownNodes& siblings,
134
+ SectionParserData& pd,
135
+ SectionLayout& layout,
136
+ const ParseResultRef<T>& out) {
137
+
138
+ return ++MarkdownNodeIterator(node);
139
+ }
140
+
141
+ /** Process section description Markdown node */
142
+ static MarkdownNodeIterator processDescription(const MarkdownNodeIterator& node,
143
+ const MarkdownNodes& siblings,
144
+ SectionParserData& pd,
145
+ const ParseResultRef<T>& out) {
146
+
147
+ if (!out.node.description.empty()) {
148
+ TwoNewLines(out.node.description);
149
+ }
150
+
151
+ mdp::ByteBuffer content = mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
152
+
153
+ if (pd.exportSourceMap() && !content.empty()) {
154
+ out.sourceMap.description.sourceMap.append(node->sourceMap);
155
+ }
156
+
157
+ TrimString(content);
158
+ out.node.description += content;
159
+
160
+ return ++MarkdownNodeIterator(node);
161
+ }
162
+
163
+ /** Process section-specific content Markdown node */
164
+ static MarkdownNodeIterator processContent(const MarkdownNodeIterator& node,
165
+ const MarkdownNodes& siblings,
166
+ SectionParserData& pd,
167
+ const ParseResultRef<T>& out) {
168
+
169
+ return ++MarkdownNodeIterator(node);
170
+ }
171
+
172
+ /**
173
+ * Pre-process for nested sections, basically a look-ahead before processing nested sections
174
+ * Only used by BlueprintParser for now
175
+ */
176
+ static void preprocessNestedSections(const MarkdownNodeIterator& node,
177
+ const MarkdownNodes& siblings,
178
+ SectionParserData& pd,
179
+ const ParseResultRef<T>& out) {
180
+ }
181
+
182
+ /**
183
+ * \brief Process nested sections Markdown node(s)
184
+ * \param node Node to process
185
+ * \param siblings Siblings of the node being processed
186
+ * \param pd Section parser state
187
+ * \param report Process log report
188
+ * \param out Processed output
189
+ */
190
+ static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
191
+ const MarkdownNodes& siblings,
192
+ SectionParserData& pd,
193
+ const ParseResultRef<T>& out) {
194
+
195
+ return node;
196
+ }
197
+
198
+ /** Process unexpected Markdown node */
199
+ static MarkdownNodeIterator processUnexpectedNode(const MarkdownNodeIterator& node,
200
+ const MarkdownNodes& siblings,
201
+ SectionParserData& pd,
202
+ SectionType& lastSectionType,
203
+ const ParseResultRef<T>& out) {
204
+
205
+ // WARN: Ignoring unexpected node
206
+ std::stringstream ss;
207
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
208
+
209
+ if (node->type == mdp::HeaderMarkdownNodeType) {
210
+ ss << "unexpected header block, expected a group, resource or an action definition";
211
+ ss << ", e.g. '# Group <name>', '# <resource name> [<URI>]' or '# <HTTP method> <URI>'";
212
+ } else {
213
+ ss << "ignoring unrecognized block";
214
+ }
215
+
216
+ out.report.warnings.push_back(Warning(ss.str(),
217
+ IgnoringWarning,
218
+ sourceMap));
219
+
220
+ return ++MarkdownNodeIterator(node);
221
+ }
222
+
223
+ /** Final validation after processing */
224
+ static void finalize(const MarkdownNodeIterator& node,
225
+ SectionParserData& pd,
226
+ const ParseResultRef<T>& out) {
227
+ }
228
+
229
+ /** \return True if the node is a section description node */
230
+ static bool isDescriptionNode(const MarkdownNodeIterator& node,
231
+ SectionType sectionType) {
232
+
233
+ if (SectionProcessor<T>::isContentNode(node, sectionType) ||
234
+ SectionProcessor<T>::nestedSectionType(node) != UndefinedSectionType) {
235
+ return false;
236
+ }
237
+
238
+ SectionType keywordSectionType = SectionKeywordSignature(node);
239
+
240
+ if (keywordSectionType == UndefinedSectionType) {
241
+ return true;
242
+ }
243
+
244
+ SectionTypes upperTypes = SectionProcessor<T>::upperSectionTypes();
245
+
246
+ if (std::find(upperTypes.begin(), upperTypes.end(), keywordSectionType) != upperTypes.end()) {
247
+ // Node is a keyword defined section defined in an upper level section
248
+ return false;
249
+ }
250
+
251
+ return true;
252
+ }
253
+
254
+ /** \return True if the node is a section-specific content node */
255
+ static bool isContentNode(const MarkdownNodeIterator& node,
256
+ SectionType sectionType) {
257
+ return false;
258
+ }
259
+
260
+ /** \return True if the node is unexpected in the current context */
261
+ static bool isUnexpectedNode(const MarkdownNodeIterator& node,
262
+ SectionType sectionType) {
263
+
264
+ SectionType keywordSectionType = SectionKeywordSignature(node);
265
+ SectionTypes upperTypes = SectionProcessor<T>::upperSectionTypes();
266
+
267
+ if (std::find(upperTypes.begin(), upperTypes.end(), keywordSectionType) == upperTypes.end()) {
268
+ // Node is not a section that is upper level
269
+ return true;
270
+ }
271
+
272
+ return (keywordSectionType == UndefinedSectionType);
273
+ }
274
+
275
+ /** \return All upper level sections of the section */
276
+ static SectionTypes upperSectionTypes() {
277
+ return SectionTypes();
278
+ }
279
+
280
+ /** \return %SectionType of the node */
281
+ static SectionType sectionType(const MarkdownNodeIterator& node) {
282
+ return UndefinedSectionType;
283
+ }
284
+
285
+ /** \return Nested %SectionType of the node */
286
+ static SectionType nestedSectionType(const MarkdownNodeIterator& node) {
287
+ return UndefinedSectionType;
288
+ }
289
+ };
290
+
291
+ /**
292
+ * Default Section Processor
293
+ */
294
+ template<typename T>
295
+ struct SectionProcessor : public SectionProcessorBase<T> {
296
+ };
297
+ }
298
+
299
+ #endif