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,152 @@
1
+ //
2
+ // MarkdownNode.cc
3
+ // markdownparser
4
+ //
5
+ // Created by Zdenek Nemec on 4/19/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "MarkdownNode.h"
10
+
11
+ using namespace mdp;
12
+
13
+ MarkdownNode::MarkdownNode(MarkdownNodeType type_, MarkdownNode *parent_, const ByteBuffer& text_, const Data& data_)
14
+ : type(type_), text(text_), data(data_), m_parent(parent_)
15
+ {
16
+ m_children.reset(::new MarkdownNodes);
17
+ }
18
+
19
+ MarkdownNode::MarkdownNode(const MarkdownNode& rhs)
20
+ {
21
+ this->type = rhs.type;
22
+ this->text = rhs.text;
23
+ this->data = rhs.data;
24
+ this->sourceMap = rhs.sourceMap;
25
+ this->m_children.reset(::new MarkdownNodes(*rhs.m_children.get()));
26
+ this->m_parent = rhs.m_parent;
27
+ }
28
+
29
+ MarkdownNode& MarkdownNode::operator=(const MarkdownNode& rhs)
30
+ {
31
+ this->type = rhs.type;
32
+ this->text = rhs.text;
33
+ this->data = rhs.data;
34
+ this->sourceMap = rhs.sourceMap;
35
+ this->m_children.reset(::new MarkdownNodes(*rhs.m_children.get()));
36
+ this->m_parent = rhs.m_parent;
37
+ return *this;
38
+ }
39
+
40
+ MarkdownNode::~MarkdownNode()
41
+ {
42
+ }
43
+
44
+ MarkdownNode& MarkdownNode::parent()
45
+ {
46
+ if (!hasParent())
47
+ throw "no parent set";
48
+ return *m_parent;
49
+ }
50
+
51
+ const MarkdownNode& MarkdownNode::parent() const
52
+ {
53
+ if (!hasParent())
54
+ throw "no parent set";
55
+ return *m_parent;
56
+ }
57
+
58
+ void MarkdownNode::setParent(MarkdownNode *parent)
59
+ {
60
+ m_parent = parent;
61
+ }
62
+
63
+ bool MarkdownNode::hasParent() const
64
+ {
65
+ return (m_parent != NULL);
66
+ }
67
+
68
+ MarkdownNodes& MarkdownNode::children()
69
+ {
70
+ if (!m_children.get())
71
+ throw "no children set";
72
+
73
+ return *m_children;
74
+ }
75
+
76
+ const MarkdownNodes& MarkdownNode::children() const
77
+ {
78
+ if (!m_children.get())
79
+ throw "no children set";
80
+
81
+ return *m_children;
82
+ }
83
+
84
+ void MarkdownNode::printNode(size_t level) const
85
+ {
86
+ using std::cout;
87
+ for (size_t i = 0; i < level; ++i)
88
+ std::cout << " ";
89
+
90
+ cout << "+ ";
91
+ switch (type) {
92
+ case RootMarkdownNodeType:
93
+ cout << "root";
94
+ break;
95
+
96
+ case CodeMarkdownNodeType:
97
+ cout << "code";
98
+ break;
99
+
100
+ case QuoteMarkdownNodeType:
101
+ cout << "quote";
102
+ break;
103
+
104
+ case HTMLMarkdownNodeType:
105
+ cout << "HTML";
106
+ break;
107
+
108
+ case HeaderMarkdownNodeType:
109
+ cout << "header";
110
+ break;
111
+
112
+ case HRuleMarkdownNodeType:
113
+ cout << "hrul";
114
+ break;
115
+
116
+ case ListItemMarkdownNodeType:
117
+ cout << "list item";
118
+ break;
119
+
120
+ case ParagraphMarkdownNodeType:
121
+ cout << "paragraph";
122
+ break;
123
+
124
+ default:
125
+ cout << "undefined";
126
+ break;
127
+ }
128
+
129
+ cout << " (type " << type << ", data " << data << ") - ";
130
+ cout << "`" << text << "`";
131
+
132
+ if (!sourceMap.empty()) {
133
+ for (mdp::BytesRangeSet::const_iterator it = sourceMap.begin();
134
+ it != sourceMap.end();
135
+ ++it) {
136
+ std::cout << ((it == sourceMap.begin()) ? " :" : ";");
137
+ std::cout << it->location << ":" << it->length;
138
+ }
139
+ }
140
+
141
+ cout << std::endl;
142
+
143
+ for (MarkdownNodeIterator it = m_children->begin();
144
+ it != m_children->end();
145
+ ++it) {
146
+ it->printNode(level + 1);
147
+ }
148
+
149
+ if (level == 0)
150
+ cout << std::endl << std::endl;
151
+ }
152
+
@@ -0,0 +1,103 @@
1
+ //
2
+ // MarkdownNode.h
3
+ // markdownparser
4
+ //
5
+ // Created by Zdenek Nemec on 4/16/14.
6
+ // Copyright (c) 2014 Apiary. All rights reserved.
7
+ //
8
+
9
+ #ifndef MARKDOWNPARSER_NODE_H
10
+ #define MARKDOWNPARSER_NODE_H
11
+
12
+ #include <deque>
13
+ #include <memory>
14
+ #include <iostream>
15
+ #include "ByteBuffer.h"
16
+
17
+ namespace mdp {
18
+
19
+ /**
20
+ * AST block node types
21
+ */
22
+ enum MarkdownNodeType {
23
+ RootMarkdownNodeType = 0,
24
+ CodeMarkdownNodeType,
25
+ QuoteMarkdownNodeType,
26
+ HTMLMarkdownNodeType,
27
+ HeaderMarkdownNodeType,
28
+ HRuleMarkdownNodeType,
29
+ ListItemMarkdownNodeType,
30
+ ParagraphMarkdownNodeType,
31
+ TableMarkdownNodeType,
32
+ TableRowMarkdownNodeType,
33
+ TableCellMarkdownNodeType,
34
+ UndefinedMarkdownNodeType = -1
35
+ };
36
+
37
+ /* Forward declaration of AST Node */
38
+ class MarkdownNode;
39
+
40
+ /** Markdown AST nodes collection */
41
+ typedef std::deque<MarkdownNode> MarkdownNodes;
42
+
43
+ /**
44
+ * AST node
45
+ */
46
+ class MarkdownNode {
47
+ public:
48
+ typedef int Data;
49
+
50
+ /** Node type */
51
+ MarkdownNodeType type;
52
+
53
+ /** Textual content, where applicable */
54
+ ByteBuffer text;
55
+
56
+ /** Additinonal data, if applicable */
57
+ Data data;
58
+
59
+ /** Source map of the node including any and all children */
60
+ BytesRangeSet sourceMap;
61
+
62
+ /** Parent node, throws exception if no parent is defined */
63
+ MarkdownNode& parent();
64
+ const MarkdownNode& parent() const;
65
+
66
+ /** Sets parent node */
67
+ void setParent(MarkdownNode *parent);
68
+
69
+ /** True if section's parent is specified, false otherwise */
70
+ bool hasParent() const;
71
+
72
+ /** Children nodes */
73
+ MarkdownNodes& children();
74
+ const MarkdownNodes& children() const;
75
+
76
+ /** Constructor */
77
+ MarkdownNode(MarkdownNodeType type_ = UndefinedMarkdownNodeType,
78
+ MarkdownNode *parent_ = NULL,
79
+ const ByteBuffer& text_ = ByteBuffer(),
80
+ const Data& data_ = Data());
81
+
82
+ /** Copy constructor */
83
+ MarkdownNode(const MarkdownNode& rhs);
84
+
85
+ /** Assignment operator */
86
+ MarkdownNode& operator=(const MarkdownNode& rhs);
87
+
88
+ /** Destructor */
89
+ ~MarkdownNode();
90
+
91
+ /** Prints the node to the stdout */
92
+ void printNode(size_t level = 0) const;
93
+
94
+ private:
95
+ MarkdownNode* m_parent;
96
+ std::unique_ptr<MarkdownNodes> m_children;
97
+ };
98
+
99
+ /** Markdown AST nodes collection iterator */
100
+ typedef MarkdownNodes::iterator MarkdownNodeIterator;
101
+ }
102
+
103
+ #endif
@@ -0,0 +1,388 @@
1
+ //
2
+ // MarkdownParser.cc
3
+ // markdownparser
4
+ //
5
+ // Created by Zdenek Nemec on 4/18/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include <cstring>
10
+ #include <stdexcept>
11
+ #include "MarkdownParser.h"
12
+
13
+ using namespace mdp;
14
+
15
+ const size_t MarkdownParser::OutputUnitSize = 64;
16
+ const size_t MarkdownParser::MaxNesting = 128;
17
+ const int MarkdownParser::ParserExtensions = MKDEXT_FENCED_CODE | MKDEXT_NO_INTRA_EMPHASIS | MKDEXT_LAX_SPACING /*| MKDEXT_TABLES */;
18
+
19
+ #define NO_WORKING_NODE_ERR std::logic_error("no working node")
20
+ #define WORKING_NODE_MISMATCH_ERR std::logic_error("working node mismatch")
21
+
22
+ /**
23
+ * \brief Create a byte buffer from a sundown buffer
24
+ */
25
+ static ByteBuffer ByteBufferFromSundown(const struct buf *text)
26
+ {
27
+ if (!text || !text->data || !text->size)
28
+ return ByteBuffer();
29
+
30
+ return ByteBuffer(reinterpret_cast<char *>(text->data), text->size);
31
+ }
32
+
33
+ MarkdownParser::MarkdownParser()
34
+ : m_workingNode(NULL), m_listBlockContext(false), m_source(NULL), m_sourceLength(0)
35
+ {
36
+ }
37
+
38
+ void MarkdownParser::parse(const ByteBuffer& source, MarkdownNode& ast)
39
+ {
40
+ ast = MarkdownNode();
41
+ m_workingNode = &ast;
42
+ m_workingNode->type = RootMarkdownNodeType;
43
+ m_workingNode->sourceMap.push_back(BytesRange(0, source.length()));
44
+ m_source = &source;
45
+ m_sourceLength = source.length();
46
+ m_listBlockContext = false;
47
+
48
+ RenderCallbacks callbacks = renderCallbacks();
49
+
50
+ ::sd_markdown *sundown = ::sd_markdown_new(ParserExtensions, MaxNesting, &callbacks, renderCallbackData());
51
+ ::buf *output = ::bufnew(OutputUnitSize);
52
+
53
+ ::sd_markdown_render(output, reinterpret_cast<const uint8_t *>(source.c_str()), source.length(), sundown);
54
+
55
+ ::bufrelease(output);
56
+ ::sd_markdown_free(sundown);
57
+
58
+ m_workingNode = NULL;
59
+ m_source = NULL;
60
+ m_sourceLength = 0;
61
+ m_listBlockContext = false;
62
+
63
+ #ifdef DEBUG
64
+ ast.printNode();
65
+ #endif
66
+ }
67
+
68
+ MarkdownParser::RenderCallbacks MarkdownParser::renderCallbacks()
69
+ {
70
+ RenderCallbacks callbacks;
71
+ ::memset(&callbacks, 0, sizeof(RenderCallbacks));
72
+
73
+ callbacks.blockcode = &MarkdownParser::renderBlockCode;
74
+ callbacks.blockquote = &MarkdownParser::renderQuote;
75
+ callbacks.blockhtml = &MarkdownParser::renderHTML;
76
+ callbacks.header = &MarkdownParser::renderHeader;
77
+ callbacks.hrule = &MarkdownParser::renderHorizontalRule;
78
+ callbacks.list = &MarkdownParser::renderList;
79
+ callbacks.listitem = &MarkdownParser::renderListItem;
80
+ callbacks.paragraph = &MarkdownParser::renderParagraph;
81
+
82
+ callbacks.table = NULL;
83
+ callbacks.table_row = NULL;
84
+ callbacks.table_cell = NULL;
85
+
86
+ callbacks.blockquote_begin = &MarkdownParser::beginQuote;
87
+ callbacks.list_begin = &MarkdownParser::beginList;
88
+ callbacks.listitem_begin = &MarkdownParser::beginListItem;
89
+
90
+ callbacks.block_did_parse = &MarkdownParser::blockDidParse;
91
+
92
+ return callbacks;
93
+ }
94
+
95
+ MarkdownParser::RenderCallbackData MarkdownParser::renderCallbackData()
96
+ {
97
+ return this;
98
+ }
99
+
100
+ void MarkdownParser::renderHeader(struct buf *ob, const struct buf *text, int level, void *opaque)
101
+ {
102
+ if (!opaque)
103
+ return;
104
+
105
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
106
+ p->renderHeader(ByteBufferFromSundown(text), level);
107
+ }
108
+
109
+ void MarkdownParser::renderHeader(const ByteBuffer& text, int level)
110
+ {
111
+ if (!m_workingNode)
112
+ throw NO_WORKING_NODE_ERR;
113
+
114
+ MarkdownNode node(HeaderMarkdownNodeType, m_workingNode, text, level);
115
+ m_workingNode->children().push_back(node);
116
+ }
117
+
118
+ void MarkdownParser::beginList(int flags, void *opaque)
119
+ {
120
+ if (!opaque)
121
+ return;
122
+
123
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
124
+ p->beginList(flags);
125
+ }
126
+
127
+ void MarkdownParser::beginList(int flags)
128
+ {
129
+ if (!m_workingNode)
130
+ throw NO_WORKING_NODE_ERR;
131
+ }
132
+
133
+ void MarkdownParser::renderList(struct buf *ob, const struct buf *text, int flags, void *opaque)
134
+ {
135
+ if (!opaque)
136
+ return;
137
+
138
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
139
+ p->renderList(ByteBufferFromSundown(text), flags);
140
+ }
141
+
142
+ void MarkdownParser::renderList(const ByteBuffer& text, int flags)
143
+ {
144
+ m_listBlockContext = true;
145
+ }
146
+
147
+ void MarkdownParser::beginListItem(int flags, void *opaque)
148
+ {
149
+ if (!opaque)
150
+ return;
151
+
152
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
153
+ p->beginListItem(flags);
154
+ }
155
+
156
+ void MarkdownParser::beginListItem(int flags)
157
+ {
158
+ if (!m_workingNode)
159
+ throw NO_WORKING_NODE_ERR;
160
+
161
+ MarkdownNode node(ListItemMarkdownNodeType, m_workingNode, ByteBuffer(), flags);
162
+ m_workingNode->children().push_back(node);
163
+
164
+ // Push context
165
+ m_workingNode = &m_workingNode->children().back();
166
+ }
167
+
168
+ void MarkdownParser::renderListItem(struct buf *ob, const struct buf *text, int flags, void *opaque)
169
+ {
170
+ if (!opaque)
171
+ return;
172
+
173
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
174
+ p->renderListItem(ByteBufferFromSundown(text), flags);
175
+ }
176
+
177
+ void MarkdownParser::renderListItem(const ByteBuffer& text, int flags)
178
+ {
179
+ if (!m_workingNode)
180
+ throw NO_WORKING_NODE_ERR;
181
+
182
+ if (m_workingNode->type != ListItemMarkdownNodeType)
183
+ throw WORKING_NODE_MISMATCH_ERR;
184
+
185
+ // No "inline" list items:
186
+ // Instead of storing the text on the list item
187
+ // create the artificial paragraph node to store the text.
188
+ if (m_workingNode->children().empty() ||
189
+ m_workingNode->children().front().type != ParagraphMarkdownNodeType) {
190
+ MarkdownNode textNode(ParagraphMarkdownNodeType, m_workingNode, text);
191
+ m_workingNode->children().push_front(textNode);
192
+ }
193
+
194
+ m_workingNode->data = flags;
195
+
196
+ // Pop context
197
+ m_workingNode = &m_workingNode->parent();
198
+ }
199
+
200
+ void MarkdownParser::renderBlockCode(struct buf *ob, const struct buf *text, const struct buf *lang, void *opaque)
201
+ {
202
+ if (!opaque)
203
+ return;
204
+
205
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
206
+ p->renderBlockCode(ByteBufferFromSundown(text), ByteBufferFromSundown(lang));
207
+ }
208
+
209
+ void MarkdownParser::renderBlockCode(const ByteBuffer& text, const ByteBuffer& language)
210
+ {
211
+ if (!m_workingNode)
212
+ throw NO_WORKING_NODE_ERR;
213
+
214
+ MarkdownNode node(CodeMarkdownNodeType, m_workingNode, text);
215
+ m_workingNode->children().push_back(node);
216
+ }
217
+
218
+ void MarkdownParser::renderParagraph(struct buf *ob, const struct buf *text, void *opaque)
219
+ {
220
+ if (!opaque)
221
+ return;
222
+
223
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
224
+ p->renderParagraph(ByteBufferFromSundown(text));
225
+ }
226
+
227
+ void MarkdownParser::renderParagraph(const ByteBuffer& text)
228
+ {
229
+ if (!m_workingNode)
230
+ throw NO_WORKING_NODE_ERR;
231
+
232
+ MarkdownNode node(ParagraphMarkdownNodeType, m_workingNode, text);
233
+ m_workingNode->children().push_back(node);
234
+ }
235
+
236
+ void MarkdownParser::renderHorizontalRule(struct buf *ob, void *opaque)
237
+ {
238
+ if (!opaque)
239
+ return;
240
+
241
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
242
+ p->renderHorizontalRule();
243
+ }
244
+
245
+ void MarkdownParser::renderHorizontalRule()
246
+ {
247
+ if (!m_workingNode)
248
+ throw NO_WORKING_NODE_ERR;
249
+
250
+ MarkdownNode node(HRuleMarkdownNodeType, m_workingNode, ByteBuffer(), MarkdownNode::Data());
251
+ m_workingNode->children().push_back(node);
252
+ }
253
+
254
+ void MarkdownParser::renderHTML(struct buf *ob, const struct buf *text, void *opaque)
255
+ {
256
+ if (!opaque)
257
+ return;
258
+
259
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
260
+ p->renderHTML(ByteBufferFromSundown(text));
261
+ }
262
+
263
+ void MarkdownParser::renderHTML(const ByteBuffer& text)
264
+ {
265
+ if (!m_workingNode)
266
+ throw NO_WORKING_NODE_ERR;
267
+
268
+ MarkdownNode node(HTMLMarkdownNodeType, m_workingNode, text);
269
+ m_workingNode->children().push_back(node);
270
+ }
271
+
272
+ void MarkdownParser::beginQuote(void *opaque)
273
+ {
274
+ if (!opaque)
275
+ return;
276
+
277
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
278
+ p->beginQuote();
279
+ }
280
+
281
+ void MarkdownParser::beginQuote()
282
+ {
283
+ if (!m_workingNode)
284
+ throw NO_WORKING_NODE_ERR;
285
+
286
+ MarkdownNode node(QuoteMarkdownNodeType, m_workingNode);
287
+ m_workingNode->children().push_back(node);
288
+
289
+ // Push context
290
+ m_workingNode = &m_workingNode->children().back();
291
+ }
292
+
293
+ void MarkdownParser::renderQuote(struct buf *ob, const struct buf *text, void *opaque)
294
+ {
295
+ if (!opaque)
296
+ return;
297
+
298
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
299
+ p->renderQuote(ByteBufferFromSundown(text));
300
+ }
301
+
302
+ void MarkdownParser::renderQuote(const ByteBuffer& text)
303
+ {
304
+ if (!m_workingNode)
305
+ throw NO_WORKING_NODE_ERR;
306
+
307
+ if (m_workingNode->type != QuoteMarkdownNodeType)
308
+ throw WORKING_NODE_MISMATCH_ERR;
309
+
310
+ m_workingNode->text = text;
311
+
312
+ // Pop context
313
+ m_workingNode = &m_workingNode->parent();
314
+ }
315
+
316
+ void MarkdownParser::blockDidParse(const src_map* map, const uint8_t *txt_data, size_t size, void *opaque)
317
+ {
318
+ if (!opaque || !map)
319
+ return;
320
+
321
+ BytesRangeSet sourceMap;
322
+ for (size_t i = 0; i < map->size; ++i) {
323
+ BytesRange byteRange(((range *)map->item[i])->loc, ((range *)map->item[i])->len);
324
+ sourceMap.push_back(byteRange);
325
+ }
326
+
327
+ MarkdownParser *p = static_cast<MarkdownParser *>(opaque);
328
+ p->blockDidParse(sourceMap);
329
+ }
330
+
331
+ void MarkdownParser::blockDidParse(const BytesRangeSet& sourceMap)
332
+ {
333
+ if (m_listBlockContext) {
334
+ m_listBlockContext = false; // ignore list blocks events
335
+ return;
336
+ }
337
+
338
+ if (!m_workingNode)
339
+ throw NO_WORKING_NODE_ERR;
340
+
341
+ if (m_workingNode->children().empty())
342
+ return;
343
+
344
+ MarkdownNode &lMarkdownNode = m_workingNode->children().back();
345
+
346
+ // Sundown +1 newline compensation
347
+ //
348
+ // If new source map would exceed the actual source size
349
+ // this happens when sundown appends an artifical new line
350
+ // truncate the source map length to match the actual size
351
+ if (sourceMap.back().location + sourceMap.back().length > m_sourceLength) {
352
+
353
+ size_t workMapLength = m_sourceLength - sourceMap.back().location;
354
+ if (!workMapLength)
355
+ return; // Ignore any artifical trailing new lines in source maps
356
+
357
+ BytesRangeSet workMap = sourceMap;
358
+ workMap.back().length = workMapLength;
359
+ lMarkdownNode.sourceMap.append(workMap);
360
+ }
361
+ else {
362
+
363
+ lMarkdownNode.sourceMap.append(sourceMap);
364
+ }
365
+
366
+ // No "inline" list items:
367
+ // Share the list item source map with its artifical node, if exists.
368
+ if (lMarkdownNode.type == ListItemMarkdownNodeType &&
369
+ !lMarkdownNode.children().empty() &&
370
+ lMarkdownNode.children().front().sourceMap.empty()) {
371
+
372
+ ByteBuffer& buffer = lMarkdownNode.children().front().text;
373
+ ByteBuffer mapped = MapBytesRangeSet(sourceMap, *m_source);
374
+ size_t pos = mapped.find(buffer);
375
+
376
+ if (pos != mapped.npos) {
377
+ BytesRange range = sourceMap.front();
378
+ range.location += pos;
379
+ range.length = buffer.length();
380
+ BytesRangeSet newMap;
381
+ newMap.push_back(range);
382
+ lMarkdownNode.children().front().sourceMap.append(newMap);
383
+ }
384
+ else {
385
+ lMarkdownNode.children().front().sourceMap.append(sourceMap);
386
+ }
387
+ }
388
+ }