redsnow 0.3.7 → 0.4.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 (302) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/Rakefile +4 -4
  4. data/ext/drafter/Makefile +54 -0
  5. data/ext/drafter/appveyor.yml +10 -0
  6. data/ext/drafter/bin/drafter +0 -0
  7. data/ext/{snowcrash → drafter}/build/Makefile +29 -14
  8. data/ext/{snowcrash/build/snowcrash.Makefile → drafter/build/drafter.Makefile} +1 -1
  9. data/ext/{snowcrash/build/snowcrash.target.mk → drafter/build/drafter.target.mk} +25 -23
  10. data/ext/{snowcrash/build → drafter/build/ext/snowcrash}/libmarkdownparser.target.mk +7 -7
  11. data/ext/drafter/build/ext/snowcrash/libsnowcrash.target.mk +152 -0
  12. data/ext/{snowcrash/build → drafter/build/ext/snowcrash}/libsundown.target.mk +13 -13
  13. data/ext/{snowcrash/build → drafter/build/ext/snowcrash}/perf-libsnowcrash.target.mk +14 -20
  14. data/ext/drafter/build/ext/snowcrash/snowcrash.Makefile +6 -0
  15. data/ext/{snowcrash → drafter}/build/gyp-mac-tool +0 -0
  16. data/ext/{snowcrash/build/libsnowcrash.target.mk → drafter/build/libdrafter.target.mk} +29 -36
  17. data/ext/drafter/build/libsos.target.mk +133 -0
  18. data/ext/drafter/build/out/Release/drafter +0 -0
  19. data/ext/drafter/build/out/Release/libdrafter.dylib +0 -0
  20. data/ext/drafter/build/out/Release/libmarkdownparser.a +0 -0
  21. data/ext/drafter/build/out/Release/libsnowcrash.a +0 -0
  22. data/ext/drafter/build/out/Release/libsos.a +0 -0
  23. data/ext/{snowcrash → drafter}/build/out/Release/libsundown.a +0 -0
  24. data/ext/{snowcrash → drafter}/build/out/Release/linker.lock +0 -0
  25. data/ext/drafter/build/out/Release/obj.target/drafter/src/config.o +0 -0
  26. data/ext/drafter/build/out/Release/obj.target/drafter/src/main.o +0 -0
  27. data/ext/drafter/build/out/Release/obj.target/drafter/src/reporting.o +0 -0
  28. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Serialize.o +0 -0
  29. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeAST.o +0 -0
  30. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeResult.o +0 -0
  31. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeSourcemap.o +0 -0
  32. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/cdrafter.o +0 -0
  33. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter.o +0 -0
  34. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o +0 -0
  35. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o +0 -0
  36. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o +0 -0
  37. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Blueprint.o +0 -0
  38. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/BlueprintSourcemap.o +0 -0
  39. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HTTP.o +0 -0
  40. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HeadersParser.o +0 -0
  41. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSON.o +0 -0
  42. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONOneOfParser.o +0 -0
  43. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONSourcemap.o +0 -0
  44. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONTypeSectionParser.o +0 -0
  45. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONValueMemberParser.o +0 -0
  46. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Section.o +0 -0
  47. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Signature.o +0 -0
  48. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/UriTemplateParser.o +0 -0
  49. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/posix/RegexMatch.o +0 -0
  50. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/snowcrash.o +0 -0
  51. data/ext/drafter/build/out/Release/obj.target/libsos/ext/sos/src/sos.o +0 -0
  52. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o +0 -0
  53. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o +0 -0
  54. data/ext/{snowcrash/build/out/Release/obj.target/libsundown → drafter/build/out/Release/obj.target/libsundown/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/html.o +0 -0
  55. data/ext/{snowcrash/build/out/Release/obj.target/libsundown → drafter/build/out/Release/obj.target/libsundown/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/html_smartypants.o +0 -0
  56. data/ext/{snowcrash/build/out/Release/obj.target/libsundown → drafter/build/out/Release/obj.target/libsundown/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/autolink.o +0 -0
  57. data/ext/{snowcrash/build/out/Release/obj.target/libsundown → drafter/build/out/Release/obj.target/libsundown/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/buffer.o +0 -0
  58. data/ext/{snowcrash/build/out/Release/obj.target/libsundown → drafter/build/out/Release/obj.target/libsundown/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/markdown.o +0 -0
  59. data/ext/{snowcrash/build/out/Release/obj.target/libsundown → drafter/build/out/Release/obj.target/libsundown/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/src_map.o +0 -0
  60. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o +0 -0
  61. data/ext/drafter/circle.yml +12 -0
  62. data/ext/{snowcrash → drafter}/config.gypi +1 -1
  63. data/ext/{snowcrash → drafter}/config.mk +0 -0
  64. data/ext/{snowcrash → drafter}/configure +16 -5
  65. data/ext/drafter/drafter.gyp +118 -0
  66. data/ext/{snowcrash → drafter/ext/snowcrash}/Makefile +4 -12
  67. data/ext/{snowcrash → drafter/ext/snowcrash}/Vagrantfile +14 -4
  68. data/ext/drafter/ext/snowcrash/appveyor.yml +7 -0
  69. data/ext/{snowcrash → drafter/ext/snowcrash}/common.gypi +0 -0
  70. data/ext/drafter/ext/snowcrash/configure +197 -0
  71. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/Makefile +0 -0
  72. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/CONTRIBUTING.md +0 -0
  73. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/Makefile +0 -0
  74. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/Makefile.win +0 -0
  75. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/examples/smartypants.c +0 -0
  76. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/examples/sundown.c +0 -0
  77. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/houdini.h +0 -0
  78. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/houdini_href_e.c +0 -0
  79. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/houdini_html_e.c +0 -0
  80. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/html.c +0 -0
  81. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/html.h +0 -0
  82. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/html/html_smartypants.c +0 -0
  83. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/html_block_names.txt +0 -0
  84. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/autolink.c +0 -0
  85. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/autolink.h +0 -0
  86. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/buffer.c +0 -0
  87. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/buffer.h +0 -0
  88. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/html_blocks.h +0 -0
  89. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/markdown.c +0 -0
  90. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/markdown.h +0 -0
  91. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/src_map.c +0 -0
  92. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/src_map.h +0 -0
  93. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/stack.c +0 -0
  94. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/src/stack.h +0 -0
  95. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/ext/sundown/sundown.def +0 -0
  96. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/msvc/markdown/markdown.vcproj +0 -0
  97. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/msvc/msvc.sln +0 -0
  98. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/msvc/sundown/sundown.vcproj +0 -0
  99. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/src/ByteBuffer.cc +0 -0
  100. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/src/ByteBuffer.h +0 -0
  101. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/src/MarkdownNode.cc +0 -0
  102. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/src/MarkdownNode.h +0 -0
  103. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/src/MarkdownParser.cc +0 -0
  104. data/ext/{snowcrash → drafter/ext/snowcrash}/ext/markdown-parser/src/MarkdownParser.h +10 -2
  105. data/ext/{snowcrash → drafter/ext/snowcrash}/provisioning.sh +0 -0
  106. data/ext/{snowcrash → drafter/ext/snowcrash}/snowcrash.gyp +41 -39
  107. data/ext/{snowcrash → drafter/ext/snowcrash}/snowcrash.xcworkspace/contents.xcworkspacedata +0 -0
  108. data/ext/{snowcrash → drafter/ext/snowcrash}/src/ActionParser.h +50 -6
  109. data/ext/{snowcrash → drafter/ext/snowcrash}/src/AssetParser.h +1 -12
  110. data/ext/drafter/ext/snowcrash/src/AttributesParser.h +121 -0
  111. data/ext/drafter/ext/snowcrash/src/Blueprint.cc +90 -0
  112. data/ext/{snowcrash → drafter/ext/snowcrash}/src/Blueprint.h +169 -33
  113. data/ext/{snowcrash → drafter/ext/snowcrash}/src/BlueprintParser.h +305 -48
  114. data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.cc +81 -0
  115. data/ext/{snowcrash → drafter/ext/snowcrash}/src/BlueprintSourcemap.h +130 -39
  116. data/ext/{snowcrash → drafter/ext/snowcrash}/src/BlueprintUtility.h +10 -4
  117. data/ext/{snowcrash → drafter/ext/snowcrash}/src/CodeBlockUtility.h +1 -1
  118. data/ext/drafter/ext/snowcrash/src/DataStructureGroupParser.h +154 -0
  119. data/ext/{snowcrash → drafter/ext/snowcrash}/src/HTTP.cc +0 -0
  120. data/ext/{snowcrash → drafter/ext/snowcrash}/src/HTTP.h +0 -0
  121. data/ext/drafter/ext/snowcrash/src/HeadersParser.cc +110 -0
  122. data/ext/{snowcrash → drafter/ext/snowcrash}/src/HeadersParser.h +123 -54
  123. data/ext/drafter/ext/snowcrash/src/MSON.cc +272 -0
  124. data/ext/drafter/ext/snowcrash/src/MSON.h +399 -0
  125. data/ext/drafter/ext/snowcrash/src/MSONMixinParser.h +95 -0
  126. data/ext/drafter/ext/snowcrash/src/MSONNamedTypeParser.h +108 -0
  127. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.cc +132 -0
  128. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.h +80 -0
  129. data/ext/drafter/ext/snowcrash/src/MSONParameterParser.h +232 -0
  130. data/ext/drafter/ext/snowcrash/src/MSONPropertyMemberParser.h +91 -0
  131. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.cc +141 -0
  132. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.h +181 -0
  133. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.cc +209 -0
  134. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.h +213 -0
  135. data/ext/drafter/ext/snowcrash/src/MSONUtility.h +423 -0
  136. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.cc +179 -0
  137. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.h +346 -0
  138. data/ext/drafter/ext/snowcrash/src/ModelTable.h +87 -0
  139. data/ext/{snowcrash → drafter/ext/snowcrash}/src/ParameterParser.h +120 -61
  140. data/ext/{snowcrash → drafter/ext/snowcrash}/src/ParametersParser.h +17 -18
  141. data/ext/{snowcrash → drafter/ext/snowcrash}/src/PayloadParser.h +36 -18
  142. data/ext/{snowcrash → drafter/ext/snowcrash}/src/Platform.h +0 -0
  143. data/ext/{snowcrash → drafter/ext/snowcrash}/src/RegexMatch.h +0 -0
  144. data/ext/drafter/ext/snowcrash/src/RelationParser.h +75 -0
  145. data/ext/{snowcrash → drafter/ext/snowcrash}/src/ResourceGroupParser.h +127 -33
  146. data/ext/{snowcrash → drafter/ext/snowcrash}/src/ResourceParser.h +126 -33
  147. data/ext/{snowcrash → drafter/ext/snowcrash}/src/Section.cc +6 -0
  148. data/ext/{snowcrash → drafter/ext/snowcrash}/src/Section.h +15 -2
  149. data/ext/{snowcrash → drafter/ext/snowcrash}/src/SectionParser.h +3 -1
  150. data/ext/{snowcrash → drafter/ext/snowcrash}/src/SectionParserData.h +15 -5
  151. data/ext/{snowcrash → drafter/ext/snowcrash}/src/SectionProcessor.h +24 -0
  152. data/ext/{snowcrash → drafter/ext/snowcrash}/src/Signature.cc +14 -0
  153. data/ext/drafter/ext/snowcrash/src/Signature.h +80 -0
  154. data/ext/drafter/ext/snowcrash/src/SignatureSectionProcessor.h +439 -0
  155. data/ext/{snowcrash → drafter/ext/snowcrash}/src/SourceAnnotation.h +3 -2
  156. data/ext/{snowcrash → drafter/ext/snowcrash}/src/StringUtility.h +103 -6
  157. data/ext/{snowcrash → drafter/ext/snowcrash}/src/UriTemplateParser.cc +0 -0
  158. data/ext/{snowcrash → drafter/ext/snowcrash}/src/UriTemplateParser.h +0 -0
  159. data/ext/{snowcrash → drafter/ext/snowcrash}/src/ValuesParser.h +1 -13
  160. data/ext/{snowcrash → drafter/ext/snowcrash}/src/posix/RegexMatch.cc +0 -0
  161. data/ext/{snowcrash → drafter/ext/snowcrash}/src/snowcrash.cc +0 -0
  162. data/ext/{snowcrash → drafter/ext/snowcrash}/src/snowcrash.h +0 -0
  163. data/ext/{snowcrash → drafter/ext/snowcrash}/src/win/RegexMatch.cc +0 -0
  164. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/AUTHORS +0 -0
  165. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/DEPS +0 -0
  166. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/OWNERS +0 -0
  167. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/PRESUBMIT.py +0 -0
  168. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/buildbot/buildbot_run.py +0 -0
  169. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/codereview.settings +0 -0
  170. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/data/win/large-pdb-shim.cc +0 -0
  171. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/gyp +0 -0
  172. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/gyp.bat +0 -0
  173. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/gyp_main.py +0 -0
  174. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/MSVSNew.py +0 -0
  175. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/MSVSProject.py +0 -0
  176. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/MSVSSettings.py +0 -0
  177. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/MSVSToolFile.py +0 -0
  178. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/MSVSUserFile.py +0 -0
  179. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/MSVSUtil.py +0 -0
  180. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/MSVSVersion.py +0 -0
  181. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/__init__.py +0 -0
  182. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/__init__.pyc +0 -0
  183. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/common.py +0 -0
  184. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
  185. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/easy_xml.py +0 -0
  186. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/flock_tool.py +0 -0
  187. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/__init__.py +0 -0
  188. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
  189. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/android.py +0 -0
  190. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/cmake.py +0 -0
  191. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -0
  192. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/eclipse.py +0 -0
  193. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/gypd.py +0 -0
  194. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/gypsh.py +0 -0
  195. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/make.py +0 -0
  196. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
  197. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/msvs.py +0 -0
  198. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/ninja.py +0 -0
  199. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/xcode.py +0 -0
  200. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
  201. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/input.py +0 -0
  202. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/input.pyc +0 -0
  203. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/mac_tool.py +0 -0
  204. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/msvs_emulation.py +0 -0
  205. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/ninja_syntax.py +0 -0
  206. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/ordered_dict.py +0 -0
  207. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/win_tool.py +0 -0
  208. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/xcode_emulation.py +0 -0
  209. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
  210. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/xcodeproj_file.py +0 -0
  211. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
  212. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylib/gyp/xml_fix.py +0 -0
  213. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/pylintrc +0 -0
  214. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/samples/samples +0 -0
  215. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/samples/samples.bat +0 -0
  216. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/setup.py +0 -0
  217. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/tools/Xcode/Specifications/gyp.pbfilespec +0 -0
  218. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/tools/Xcode/Specifications/gyp.xclangspec +0 -0
  219. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/tools/emacs/gyp.el +0 -0
  220. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/tools/graphviz.py +0 -0
  221. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/tools/pretty_gyp.py +0 -0
  222. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/tools/pretty_sln.py +0 -0
  223. data/ext/{snowcrash → drafter/ext/snowcrash}/tools/gyp/tools/pretty_vcproj.py +0 -0
  224. data/ext/drafter/ext/snowcrash/vcbuild.bat +139 -0
  225. data/ext/drafter/ext/sos/Makefile +57 -0
  226. data/ext/drafter/ext/sos/src/sos.cc +200 -0
  227. data/ext/drafter/ext/sos/src/sos.h +179 -0
  228. data/ext/drafter/ext/sos/src/sosJSON.h +105 -0
  229. data/ext/drafter/ext/sos/src/sosYAML.h +104 -0
  230. data/ext/{snowcrash → drafter}/src/Serialize.cc +30 -15
  231. data/ext/drafter/src/Serialize.h +135 -0
  232. data/ext/drafter/src/SerializeAST.cc +775 -0
  233. data/ext/drafter/src/SerializeAST.h +19 -0
  234. data/ext/drafter/src/SerializeResult.cc +67 -0
  235. data/ext/drafter/src/SerializeResult.h +26 -0
  236. data/ext/drafter/src/SerializeSourcemap.cc +446 -0
  237. data/ext/drafter/src/SerializeSourcemap.h +19 -0
  238. data/ext/drafter/src/Version.h +38 -0
  239. data/ext/drafter/src/cdrafter.cc +44 -0
  240. data/ext/drafter/src/cdrafter.h +55 -0
  241. data/ext/drafter/src/config.cc +80 -0
  242. data/ext/drafter/src/config.h +35 -0
  243. data/ext/drafter/src/drafter.cc +22 -0
  244. data/ext/drafter/src/drafter.h +38 -0
  245. data/ext/drafter/src/main.cc +91 -0
  246. data/ext/drafter/src/reporting.cc +162 -0
  247. data/ext/drafter/src/reporting.h +28 -0
  248. data/ext/drafter/src/stream.h +146 -0
  249. data/ext/drafter/tools/homebrew/drafter.rb +12 -0
  250. data/ext/{snowcrash → drafter}/vcbuild.bat +3 -3
  251. data/lib/redsnow.rb +6 -11
  252. data/lib/redsnow/binding.rb +11 -201
  253. data/lib/redsnow/blueprint.rb +104 -169
  254. data/lib/redsnow/parseresult.rb +28 -42
  255. data/lib/redsnow/sourcemap.rb +92 -177
  256. data/lib/redsnow/version.rb +1 -1
  257. data/redsnow.gemspec +1 -1
  258. metadata +249 -197
  259. data/ext/snowcrash/bin/snowcrash +0 -0
  260. data/ext/snowcrash/build/out/Release/libmarkdownparser.a +0 -0
  261. data/ext/snowcrash/build/out/Release/libsnowcrash.dylib +0 -0
  262. data/ext/snowcrash/build/out/Release/obj.target/libmarkdownparser/ext/markdown-parser/src/ByteBuffer.o +0 -0
  263. data/ext/snowcrash/build/out/Release/obj.target/libmarkdownparser/ext/markdown-parser/src/MarkdownNode.o +0 -0
  264. data/ext/snowcrash/build/out/Release/obj.target/libmarkdownparser/ext/markdown-parser/src/MarkdownParser.o +0 -0
  265. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/CBlueprint.o +0 -0
  266. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/CBlueprintSourcemap.o +0 -0
  267. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/CSourceAnnotation.o +0 -0
  268. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/HTTP.o +0 -0
  269. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/Section.o +0 -0
  270. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/Serialize.o +0 -0
  271. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/SerializeJSON.o +0 -0
  272. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/SerializeYAML.o +0 -0
  273. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/Signature.o +0 -0
  274. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/UriTemplateParser.o +0 -0
  275. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/csnowcrash.o +0 -0
  276. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/posix/RegexMatch.o +0 -0
  277. data/ext/snowcrash/build/out/Release/obj.target/libsnowcrash/src/snowcrash.o +0 -0
  278. data/ext/snowcrash/build/out/Release/obj.target/libsundown/ext/markdown-parser/ext/sundown/html/houdini_href_e.o +0 -0
  279. data/ext/snowcrash/build/out/Release/obj.target/libsundown/ext/markdown-parser/ext/sundown/html/houdini_html_e.o +0 -0
  280. data/ext/snowcrash/build/out/Release/obj.target/libsundown/ext/markdown-parser/ext/sundown/src/stack.o +0 -0
  281. data/ext/snowcrash/build/out/Release/obj.target/snowcrash/src/snowcrash/snowcrash.o +0 -0
  282. data/ext/snowcrash/build/out/Release/snowcrash +0 -0
  283. data/ext/snowcrash/src/CBlueprint.cc +0 -628
  284. data/ext/snowcrash/src/CBlueprint.h +0 -366
  285. data/ext/snowcrash/src/CBlueprintSourcemap.cc +0 -630
  286. data/ext/snowcrash/src/CBlueprintSourcemap.h +0 -351
  287. data/ext/snowcrash/src/CSourceAnnotation.cc +0 -154
  288. data/ext/snowcrash/src/CSourceAnnotation.h +0 -106
  289. data/ext/snowcrash/src/Serialize.h +0 -71
  290. data/ext/snowcrash/src/SerializeJSON.cc +0 -1221
  291. data/ext/snowcrash/src/SerializeJSON.h +0 -24
  292. data/ext/snowcrash/src/SerializeYAML.cc +0 -702
  293. data/ext/snowcrash/src/SerializeYAML.h +0 -24
  294. data/ext/snowcrash/src/Signature.h +0 -32
  295. data/ext/snowcrash/src/SymbolTable.h +0 -94
  296. data/ext/snowcrash/src/Version.h +0 -39
  297. data/ext/snowcrash/src/csnowcrash.cc +0 -29
  298. data/ext/snowcrash/src/csnowcrash.h +0 -40
  299. data/ext/snowcrash/src/snowcrash/snowcrash.cc +0 -200
  300. data/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
  301. data/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
  302. data/ext/snowcrash/tools/homebrew/snowcrash.rb +0 -12
@@ -0,0 +1,179 @@
1
+ //
2
+ // MSONValueMemberParser.cc
3
+ // snowcrash
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 11/13/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "MSONOneOfParser.h"
10
+ #include "MSONPropertyMemberParser.h"
11
+
12
+ namespace snowcrash {
13
+
14
+ /** Implementation of nestedSectionType */
15
+ SectionType SectionProcessor<mson::ValueMember>::nestedSectionType(const MarkdownNodeIterator& node) {
16
+
17
+ SectionType nestedType = UndefinedSectionType;
18
+
19
+ // Check if mson type section section
20
+ nestedType = SectionProcessor<mson::TypeSection>::sectionType(node);
21
+
22
+ if (nestedType != UndefinedSectionType) {
23
+ return nestedType;
24
+ }
25
+
26
+ // Check if mson mixin section
27
+ nestedType = SectionProcessor<mson::Mixin>::sectionType(node);
28
+
29
+ if (nestedType != UndefinedSectionType) {
30
+ return nestedType;
31
+ }
32
+
33
+ // Check if mson one of section
34
+ nestedType = SectionProcessor<mson::OneOf>::sectionType(node);
35
+
36
+ if (nestedType != UndefinedSectionType) {
37
+ return nestedType;
38
+ }
39
+
40
+ return MSONSectionType;
41
+ }
42
+
43
+ /** Implementation of resolveAndProcessMSONSection */
44
+ MarkdownNodeIterator SectionProcessor<mson::ValueMember>::processMSONSection(const MarkdownNodeIterator& node,
45
+ const MarkdownNodes& siblings,
46
+ SectionParserData& pd,
47
+ const ParseResultRef<mson::TypeSections>& sections,
48
+ mson::BaseType& baseType) {
49
+
50
+ MarkdownNodeIterator cur = node;
51
+
52
+ // If we encounter a header node, stop parsing. Headers which are not
53
+ // type section signatures are ineligible to be nested sections of a MSON section
54
+ if (node->type == mdp::HeaderMarkdownNodeType) {
55
+ return cur;
56
+ }
57
+
58
+ // If the nodes follow after some block description without member
59
+ // seperator, then they are treated as description
60
+ if (!sections.node.empty() && sections.node.back().klass == mson::TypeSection::BlockDescriptionClass) {
61
+ return SectionProcessor<mson::ValueMember>::blockDescription(node, pd, sections.node, sections.sourceMap);
62
+ }
63
+
64
+ // Try to resolve base type if not given
65
+ resolveImplicitBaseType(node, pd.sectionContext(), baseType);
66
+
67
+ // Build a section to indicate nested members
68
+ if (sections.node.empty() ||
69
+ (!sections.node.empty() && sections.node.back().klass != mson::TypeSection::MemberTypeClass)) {
70
+
71
+ mson::TypeSection typeSection(mson::TypeSection::MemberTypeClass);
72
+
73
+ typeSection.baseType = baseType;
74
+ sections.node.push_back(typeSection);
75
+
76
+ if (pd.exportSourceMap()) {
77
+
78
+ SourceMap<mson::TypeSection> typeSectionSM;
79
+ sections.sourceMap.collection.push_back(typeSectionSM);
80
+ }
81
+ }
82
+
83
+ mson::Element element;
84
+ SourceMap<mson::Element> elementSM;
85
+
86
+ if (pd.sectionContext() == MSONMixinSectionType) {
87
+
88
+ IntermediateParseResult<mson::Mixin> mixin(sections.report);
89
+ cur = MSONMixinParser::parse(node, siblings, pd, mixin);
90
+
91
+ element.build(mixin.node);
92
+
93
+ if (pd.exportSourceMap()) {
94
+ elementSM.mixin = mixin.sourceMap;
95
+ }
96
+ }
97
+ else if (pd.sectionContext() == MSONOneOfSectionType) {
98
+
99
+ if (baseType != mson::ObjectBaseType &&
100
+ baseType != mson::ImplicitObjectBaseType) {
101
+
102
+ // WARN: One of can not be a nested member for a non object structure type
103
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
104
+ sections.report.warnings.push_back(Warning("one of may be a nested member of a object sub-types only",
105
+ LogicalErrorWarning,
106
+ sourceMap));
107
+
108
+ return cur;
109
+ }
110
+
111
+ IntermediateParseResult<mson::OneOf> oneOf(sections.report);
112
+ cur = MSONOneOfParser::parse(node, siblings, pd, oneOf);
113
+
114
+ element.build(oneOf.node);
115
+
116
+ if (pd.exportSourceMap()) {
117
+ elementSM = oneOf.sourceMap;
118
+ }
119
+ }
120
+ else {
121
+
122
+ if ((baseType == mson::ValueBaseType ||
123
+ baseType == mson::ImplicitValueBaseType) &&
124
+ node->type == mdp::ListItemMarkdownNodeType) {
125
+
126
+ IntermediateParseResult<mson::ValueMember> valueMember(sections.report);
127
+ cur = MSONValueMemberParser::parse(node, siblings, pd, valueMember);
128
+
129
+ element.build(valueMember.node);
130
+
131
+ if (pd.exportSourceMap()) {
132
+ elementSM.value = valueMember.sourceMap;
133
+ }
134
+ }
135
+ else if ((baseType == mson::ObjectBaseType ||
136
+ baseType == mson::ImplicitObjectBaseType) &&
137
+ node->type == mdp::ListItemMarkdownNodeType) {
138
+
139
+ IntermediateParseResult<mson::PropertyMember> propertyMember(sections.report);
140
+ cur = MSONPropertyMemberParser::parse(node, siblings, pd, propertyMember);
141
+
142
+ element.build(propertyMember.node);
143
+
144
+ if (pd.exportSourceMap()) {
145
+ elementSM.property = propertyMember.sourceMap;
146
+ }
147
+ }
148
+ else if (baseType == mson::PrimitiveBaseType ||
149
+ baseType == mson::ImplicitPrimitiveBaseType) {
150
+
151
+ // WARN: Primitive type members should not have nested members
152
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
153
+ sections.report.warnings.push_back(Warning("sub-types of primitive types should not have nested members",
154
+ LogicalErrorWarning,
155
+ sourceMap));
156
+ }
157
+ else {
158
+
159
+ // WARN: Ignoring unrecognized block in mson nested members
160
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
161
+ sections.report.warnings.push_back(Warning("ignorning unrecognized block",
162
+ IgnoringWarning,
163
+ sourceMap));
164
+
165
+ cur = ++MarkdownNodeIterator(node);
166
+ }
167
+ }
168
+
169
+ if (element.klass != mson::Element::UndefinedClass) {
170
+ sections.node.back().content.elements().push_back(element);
171
+
172
+ if (pd.exportSourceMap()) {
173
+ sections.sourceMap.collection.back().elements().collection.push_back(elementSM);
174
+ }
175
+ }
176
+
177
+ return cur;
178
+ }
179
+ }
@@ -0,0 +1,346 @@
1
+ //
2
+ // MSONValueMemberParser.h
3
+ // snowcrash
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 10/22/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_MSONVALUEMEMBERPARSER_H
10
+ #define SNOWCRASH_MSONVALUEMEMBERPARSER_H
11
+
12
+ #include "SectionParser.h"
13
+ #include "MSONUtility.h"
14
+ #include "MSONTypeSectionParser.h"
15
+
16
+ using namespace scpl;
17
+
18
+ namespace snowcrash {
19
+
20
+ /**
21
+ * MSON Value Member Section Processor
22
+ */
23
+ template<>
24
+ struct SectionProcessor<mson::ValueMember> : public SignatureSectionProcessorBase<mson::ValueMember> {
25
+
26
+ static SignatureTraits signatureTraits() {
27
+
28
+ SignatureTraits signatureTraits(SignatureTraits::ValuesTrait |
29
+ SignatureTraits::AttributesTrait |
30
+ SignatureTraits::ContentTrait);
31
+
32
+ return signatureTraits;
33
+ }
34
+
35
+ static MarkdownNodeIterator finalizeSignature(const MarkdownNodeIterator& node,
36
+ SectionParserData& pd,
37
+ const Signature& signature,
38
+ const ParseResultRef<mson::ValueMember>& out) {
39
+
40
+ return SectionProcessor<mson::ValueMember>::useSignatureData(node, pd, signature, out.report, out.node, out.sourceMap);
41
+ }
42
+
43
+ static MarkdownNodeIterator processDescription(const MarkdownNodeIterator& node,
44
+ const MarkdownNodes& siblings,
45
+ SectionParserData& pd,
46
+ const ParseResultRef<mson::ValueMember>& out) {
47
+
48
+ return SectionProcessor<mson::ValueMember>::blockDescription(node, pd, out.node.sections, out.sourceMap.sections);
49
+ }
50
+
51
+ static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
52
+ const MarkdownNodes& siblings,
53
+ SectionParserData& pd,
54
+ const ParseResultRef<mson::ValueMember>& out) {
55
+
56
+ ParseResultRef<mson::TypeSections> typeSections(out.report, out.node.sections, out.sourceMap.sections);
57
+
58
+ return SectionProcessor<mson::ValueMember>
59
+ ::processNestedMembers<MSONTypeSectionListParser>(node, siblings, pd, typeSections,
60
+ out.node.valueDefinition.typeDefinition.baseType);
61
+ }
62
+
63
+ static bool isDescriptionNode(const MarkdownNodeIterator& node,
64
+ SectionType sectionType) {
65
+
66
+ if (SectionProcessor<mson::ValueMember>::nestedSectionType(node) != MSONSectionType ||
67
+ node->type == mdp::HeaderMarkdownNodeType) {
68
+
69
+ return false;
70
+ }
71
+
72
+ if (node->type != mdp::ListItemMarkdownNodeType) {
73
+ return true;
74
+ }
75
+
76
+ return SectionProcessorBase<mson::ValueMember>::isDescriptionNode(node, sectionType);
77
+ }
78
+
79
+ static SectionType nestedSectionType(const MarkdownNodeIterator&);
80
+
81
+ static void finalize(const MarkdownNodeIterator& node,
82
+ SectionParserData& pd,
83
+ const ParseResultRef<mson::ValueMember>& out) {
84
+
85
+ SectionProcessor<mson::ValueMember>::finalizeImplicitBaseType(out.node.valueDefinition.typeDefinition.baseType);
86
+ }
87
+
88
+ /**
89
+ * \brief Use signature data to fill up the AST
90
+ *
91
+ * \param node Node to process
92
+ * \param pd Section Parser Data
93
+ * \param signature Signature data
94
+ * \param report Parse result report
95
+ * \param valueMember MSON Value Member
96
+ * \param sourceMap MSON Value Member source map
97
+ */
98
+ static MarkdownNodeIterator useSignatureData(const MarkdownNodeIterator& node,
99
+ SectionParserData& pd,
100
+ const Signature& signature,
101
+ Report& report,
102
+ mson::ValueMember& valueMember,
103
+ SourceMap<mson::ValueMember>& sourceMap) {
104
+
105
+ valueMember.description = signature.content;
106
+
107
+ if (pd.exportSourceMap() && !signature.content.empty()) {
108
+ sourceMap.description.sourceMap = node->sourceMap;
109
+ }
110
+
111
+ mson::parseTypeDefinition(node, pd, signature.attributes, report, valueMember.valueDefinition.typeDefinition);
112
+ parseRemainingContent(node, pd, signature.remainingContent, valueMember.sections, sourceMap.sections);
113
+
114
+ if (signature.values.size() > 1) {
115
+
116
+ if (valueMember.valueDefinition.typeDefinition.baseType == mson::PrimitiveBaseType) {
117
+
118
+ valueMember.valueDefinition.values.push_back(mson::parseValue(signature.value));
119
+
120
+ if (pd.exportSourceMap()) {
121
+ sourceMap.valueDefinition.sourceMap = node->sourceMap;
122
+ }
123
+
124
+ return ++MarkdownNodeIterator(node);
125
+ }
126
+ else if (valueMember.valueDefinition.typeDefinition.baseType == mson::UndefinedBaseType) {
127
+ valueMember.valueDefinition.typeDefinition.baseType = mson::ImplicitValueBaseType;
128
+ }
129
+ }
130
+
131
+ for (std::vector<mdp::ByteBuffer>::const_iterator it = signature.values.begin();
132
+ it != signature.values.end();
133
+ it++) {
134
+
135
+ valueMember.valueDefinition.values.push_back(mson::parseValue(*it));
136
+ }
137
+
138
+ if (pd.exportSourceMap() && !valueMember.valueDefinition.empty()) {
139
+ sourceMap.valueDefinition.sourceMap = node->sourceMap;
140
+ }
141
+
142
+ return ++MarkdownNodeIterator(node);
143
+ }
144
+
145
+ /**
146
+ * \brief Parse the signature's remaining content
147
+ *
148
+ * \param node Node to process
149
+ * \param pd Section Parser Data
150
+ * \param remainingContent Signature's remaining content
151
+ * \param sections MSON Type Section collection
152
+ * \param sourceMap MSON Type Section collection source map
153
+ */
154
+ static void parseRemainingContent(const MarkdownNodeIterator& node,
155
+ SectionParserData& pd,
156
+ const mdp::ByteBuffer& remainingContent,
157
+ mson::TypeSections& sections,
158
+ SourceMap<mson::TypeSections>& sourceMap) {
159
+
160
+ if (remainingContent.empty()) {
161
+ return;
162
+ }
163
+
164
+ mson::TypeSection typeSection(mson::TypeSection::BlockDescriptionClass);
165
+
166
+ typeSection.content.description = remainingContent;
167
+ sections.push_back(typeSection);
168
+
169
+ if (pd.exportSourceMap()) {
170
+
171
+ SourceMap<mson::TypeSection> typeSectionSM;
172
+
173
+ typeSectionSM.description.sourceMap = node->sourceMap;
174
+ sourceMap.collection.push_back(typeSectionSM);
175
+ }
176
+ }
177
+
178
+ /**
179
+ * \brief Add block description to the mson member
180
+ *
181
+ * \param node Node to process
182
+ * \param pd Section Parser Data
183
+ * \param sections MSON Type Section collection
184
+ * \param sourceMap MSON Type Section collection source map
185
+ */
186
+ static MarkdownNodeIterator blockDescription(const MarkdownNodeIterator& node,
187
+ SectionParserData& pd,
188
+ mson::TypeSections& sections,
189
+ SourceMap<mson::TypeSections>& sourceMap) {
190
+
191
+ if (sections.empty() ||
192
+ (sections.size() == 1 &&
193
+ sections[0].klass == mson::TypeSection::BlockDescriptionClass)) {
194
+
195
+ if (sections.empty()) {
196
+
197
+ mson::TypeSection typeSection(mson::TypeSection::BlockDescriptionClass);
198
+ sections.push_back(typeSection);
199
+
200
+ if (pd.exportSourceMap()) {
201
+
202
+ SourceMap<mson::TypeSection> typeSectionSM;
203
+ sourceMap.collection.push_back(typeSectionSM);
204
+ }
205
+ }
206
+
207
+ if (!sections[0].content.description.empty()) {
208
+ TwoNewLines(sections[0].content.description);
209
+ }
210
+
211
+ mdp::ByteBuffer content = mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
212
+ sections[0].content.description += content;
213
+
214
+ if (pd.exportSourceMap() && !content.empty()) {
215
+ sourceMap.collection[0].description.sourceMap.append(node->sourceMap);
216
+ }
217
+
218
+ return ++MarkdownNodeIterator(node);
219
+ }
220
+
221
+ return node;
222
+ }
223
+
224
+ /**
225
+ * \brief Process nested member types for a member (either property or value) and Named Type.
226
+ *
227
+ * \param node Node to process
228
+ * \param siblings Siblings of the node being processed
229
+ * \param pd Section Parser Data
230
+ * \param sections MSON Type Section collection Parse Result
231
+ * \param baseType Base Type of the MSON member to be sent for nested type sections
232
+ */
233
+ template<typename PARSER>
234
+ static MarkdownNodeIterator processNestedMembers(const MarkdownNodeIterator& node,
235
+ const MarkdownNodes& siblings,
236
+ SectionParserData& pd,
237
+ const ParseResultRef<mson::TypeSections>& sections,
238
+ mson::BaseType& baseType) {
239
+
240
+ MarkdownNodeIterator cur = node;
241
+
242
+ if (pd.sectionContext() == MSONSectionType ||
243
+ pd.sectionContext() == MSONMixinSectionType ||
244
+ pd.sectionContext() == MSONOneOfSectionType) {
245
+
246
+ cur = processMSONSection(node, siblings, pd, sections, baseType);
247
+ }
248
+ else {
249
+
250
+ // Try to resolve base type if not given before parsing further
251
+ resolveImplicitBaseType(node, pd.sectionContext(), baseType);
252
+
253
+ IntermediateParseResult<mson::TypeSection> typeSection(sections.report);
254
+ typeSection.node.baseType = baseType;
255
+
256
+ cur = PARSER::parse(node, siblings, pd, typeSection);
257
+
258
+ if (typeSection.node.klass != mson::TypeSection::UndefinedClass) {
259
+ sections.node.push_back(typeSection.node);
260
+
261
+ if (pd.exportSourceMap()) {
262
+ sections.sourceMap.collection.push_back(typeSection.sourceMap);
263
+ }
264
+ }
265
+ }
266
+
267
+ return cur;
268
+ }
269
+
270
+ /**
271
+ * \brief Given a MSONSectionType nested section, process it
272
+ *
273
+ * \param node Node to process
274
+ * \param siblings Siblings of the node being processed
275
+ * \param pd Section Parser Data
276
+ * \param sections MSON Type Section collection Parse Result
277
+ * \param baseType Base Type of the MSON member to be sent for nested type sections
278
+ */
279
+ static MarkdownNodeIterator processMSONSection(const MarkdownNodeIterator& node,
280
+ const MarkdownNodes& siblings,
281
+ SectionParserData& pd,
282
+ const ParseResultRef<mson::TypeSections>& sections,
283
+ mson::BaseType& baseType);
284
+
285
+ /**
286
+ * \brief If base type is still undefined, make it implicit string
287
+ *
288
+ * \param MSON member base type
289
+ */
290
+ static void finalizeImplicitBaseType(mson::BaseType& baseType) {
291
+
292
+ if (baseType == mson::UndefinedBaseType) {
293
+ baseType = mson::ImplicitPrimitiveBaseType;
294
+ }
295
+ }
296
+
297
+ /**
298
+ * \brief Resolve base types if possible, based on nested node given
299
+ *
300
+ * \param node Node to process
301
+ * \param sectionType Section Type
302
+ * \param baseType Base Type of the MSON member that needs to be resolved
303
+ */
304
+ static void resolveImplicitBaseType(const MarkdownNodeIterator& node,
305
+ const SectionType& sectionType,
306
+ mson::BaseType& baseType) {
307
+
308
+ if (baseType != mson::UndefinedBaseType) {
309
+ return;
310
+ }
311
+
312
+ switch (sectionType) {
313
+ case MSONSectionType:
314
+ case MSONOneOfSectionType:
315
+ case MSONMixinSectionType:
316
+ {
317
+ if (node->type == mdp::ListItemMarkdownNodeType) {
318
+ baseType = mson::ImplicitObjectBaseType;
319
+ }
320
+
321
+ break;
322
+ }
323
+
324
+ case MSONPropertyMembersSectionType:
325
+ {
326
+ baseType = mson::ImplicitObjectBaseType;
327
+ break;
328
+ }
329
+
330
+ case MSONSampleDefaultSectionType:
331
+ {
332
+ baseType = mson::ImplicitPrimitiveBaseType;
333
+ break;
334
+ }
335
+
336
+ default:
337
+ break;
338
+ }
339
+ }
340
+ };
341
+
342
+ /** MSON Value Member Section Parser */
343
+ typedef SectionParser<mson::ValueMember, ListSectionAdapter> MSONValueMemberParser;
344
+ }
345
+
346
+ #endif