redsnow 0.3.7 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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,87 @@
1
+ //
2
+ // ModelTable.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 6/9/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_MODELTABLE_H
10
+ #define SNOWCRASH_MODELTABLE_H
11
+
12
+ #include <string>
13
+ #include <map>
14
+ #include "ByteBuffer.h"
15
+ #include "RegexMatch.h"
16
+
17
+ #ifdef DEBUG
18
+ #include <iostream>
19
+ #endif
20
+
21
+ #include "BlueprintSourcemap.h"
22
+ #include "StringUtility.h"
23
+
24
+ // Symbol identifier regex
25
+ #define SYMBOL_IDENTIFIER "([^][()]+)"
26
+
27
+ namespace snowcrash {
28
+
29
+ /** Symbol reference matching regex */
30
+ const char* const ModelReferenceRegex("^[[:blank:]]*\\[" SYMBOL_IDENTIFIER "]\\[][[:blank:]]*$");
31
+
32
+ // Resource Object Model Table
33
+ typedef std::map<Identifier, ResourceModel> ModelTable;
34
+
35
+ // Resource Object Model Table source map
36
+ typedef std::map<Identifier, SourceMap<ResourceModel> > ModelSourceMapTable;
37
+
38
+ // Checks whether given source data represents reference to a symbol returning true if so,
39
+ // false otherwise. If source data is represent reference referred symbol name is filled in.
40
+ inline bool GetModelReference(const mdp::ByteBuffer& sourceData,
41
+ Identifier& referredModel) {
42
+
43
+ CaptureGroups captureGroups;
44
+
45
+ if (RegexCapture(sourceData, ModelReferenceRegex, captureGroups, 3)) {
46
+ referredModel = captureGroups[1];
47
+ TrimString(referredModel);
48
+ return true;
49
+ }
50
+
51
+ return false;
52
+ }
53
+
54
+ #ifdef DEBUG
55
+ // Escape new lines
56
+ inline std::string EscapeNewlines(const std::string &input) {
57
+
58
+ size_t pos = 0;
59
+ std::string target(input);
60
+
61
+ while ((pos = target.find("\n", pos)) != std::string::npos) {
62
+ target.replace(pos, 1, "\\n");
63
+ pos += 2;
64
+ }
65
+
66
+ return target;
67
+ }
68
+
69
+ // Prints markdown block recursively to stdout
70
+ inline void PrintModelTable(const ModelTable& modelTable) {
71
+
72
+ std::cout << "Resource Model Symbols:\n";
73
+
74
+ for (ModelTable::const_iterator it = modelTable.begin();
75
+ it != modelTable.end();
76
+ ++it) {
77
+
78
+ std::cout << "- " << it->first << " - body: '" << EscapeNewlines(it->second.body) << "'\n";
79
+ }
80
+
81
+ std::cout << std::endl;
82
+ }
83
+ #endif
84
+
85
+ }
86
+
87
+ #endif
@@ -49,6 +49,14 @@ namespace snowcrash {
49
49
  /** Parameter description delimiter */
50
50
  const std::string DescriptionIdentifier = "...";
51
51
 
52
+ /** Parameter Definition Type */
53
+ enum ParameterType {
54
+ NotParameterType = 0,
55
+ OldParameterType, /// Parameter defined using the old syntax
56
+ NewParameterType, /// Parameter defined using the new MSON-like syntax
57
+ UndefinedParameterType = -1
58
+ };
59
+
52
60
  /**
53
61
  * Parameter section processor
54
62
  */
@@ -124,7 +132,7 @@ namespace snowcrash {
124
132
  if ((!out.node.exampleValue.empty() || !out.node.defaultValue.empty()) &&
125
133
  !out.node.values.empty()) {
126
134
 
127
- checkExampleAndDefaultValue(node, pd, out);
135
+ checkExampleAndDefaultValue<Parameter>(node, pd, out);
128
136
  }
129
137
 
130
138
  return ++MarkdownNodeIterator(node);
@@ -139,9 +147,15 @@ namespace snowcrash {
139
147
  subject = GetFirstLine(node->children().front().text, remainingContent);
140
148
  TrimString(subject);
141
149
 
142
- if (isValidParameterSignature(subject)) {
150
+ ParameterType parameterType = getParameterType(subject);
151
+
152
+ if (parameterType == OldParameterType) {
143
153
  return ParameterSectionType;
144
154
  }
155
+
156
+ if (parameterType == NewParameterType) {
157
+ return MSONParameterSectionType;
158
+ }
145
159
  }
146
160
 
147
161
  return UndefinedSectionType;
@@ -166,12 +180,9 @@ namespace snowcrash {
166
180
  const ParseResultRef<Parameter>& out) {
167
181
 
168
182
  out.node.use = UndefinedParameterUse;
169
-
170
183
  TrimString(signature);
171
184
 
172
- CaptureGroups captureGroups;
173
-
174
- if (isValidParameterSignature(signature)) {
185
+ if (pd.sectionContext() == ParameterSectionType) {
175
186
 
176
187
  mdp::ByteBuffer innerSignature = signature;
177
188
  innerSignature = TrimString(innerSignature);
@@ -238,21 +249,9 @@ namespace snowcrash {
238
249
  }
239
250
  }
240
251
 
241
- // Check possible required vs default clash
242
- if (out.node.use != OptionalParameterUse &&
243
- !out.node.defaultValue.empty()) {
244
-
245
- // WARN: Required vs default clash
246
- std::stringstream ss;
247
- ss << "specifying parameter '" << out.node.name << "' as required supersedes its default value"\
248
- ", declare the parameter as 'optional' to specify its default value";
249
-
250
- mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
251
- out.report.warnings.push_back(Warning(ss.str(),
252
- LogicalErrorWarning,
253
- sourceMap));
254
- }
255
- } else {
252
+ checkDefaultAndRequiredClash<Parameter>(node, pd, out);
253
+ }
254
+ else {
256
255
  // ERR: unable to parse
257
256
  mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
258
257
  out.report.error = Error("unable to parse parameter specification",
@@ -349,9 +348,31 @@ namespace snowcrash {
349
348
  }
350
349
  }
351
350
 
351
+ template<typename T>
352
+ static void checkDefaultAndRequiredClash(const mdp::MarkdownNodeIterator& node,
353
+ SectionParserData& pd,
354
+ const ParseResultRef<T>& out) {
355
+
356
+ // Check possible required vs default clash
357
+ if (out.node.use != OptionalParameterUse &&
358
+ !out.node.defaultValue.empty()) {
359
+
360
+ // WARN: Required vs default clash
361
+ std::stringstream ss;
362
+ ss << "specifying parameter '" << out.node.name << "' as required supersedes its default value"\
363
+ ", declare the parameter as 'optional' to specify its default value";
364
+
365
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
366
+ out.report.warnings.push_back(Warning(ss.str(),
367
+ LogicalErrorWarning,
368
+ sourceMap));
369
+ }
370
+ }
371
+
372
+ template<typename T>
352
373
  static void checkExampleAndDefaultValue(const mdp::MarkdownNodeIterator& node,
353
374
  SectionParserData& pd,
354
- const ParseResultRef<Parameter>& out) {
375
+ const ParseResultRef<T>& out) {
355
376
 
356
377
  bool isExampleFound = false;
357
378
  bool isDefaultFound = false;
@@ -396,72 +417,110 @@ namespace snowcrash {
396
417
  }
397
418
  }
398
419
 
399
- /** Determine if a signature is a valid parameter*/
400
- static bool isValidParameterSignature(const mdp::ByteBuffer& signature) {
420
+ /**
421
+ * \brief Determine the type of parameter using the signature
422
+ */
423
+ static ParameterType getParameterType(const mdp::ByteBuffer& signature) {
401
424
 
402
425
  mdp::ByteBuffer innerSignature = signature;
403
- innerSignature = TrimString(innerSignature);
426
+ CaptureGroups captureGroups;
427
+
428
+ TrimString(innerSignature);
404
429
 
405
- if (innerSignature.length() == 0) {
406
- return false; // Empty string, invalid
430
+ if (innerSignature.empty()) {
431
+ return NotParameterType; // Empty string, invalid
407
432
  }
408
433
 
409
- size_t firstSpace = innerSignature.find(" ");
434
+ if (RegexCapture(innerSignature, "^" PARAMETER_IDENTIFIER "[[:blank:]]*:?", captureGroups) &&
435
+ !captureGroups[0].empty()) {
410
436
 
411
- if (firstSpace == std::string::npos) {
412
- return RegexMatch(innerSignature, "^" PARAMETER_IDENTIFIER "$");
413
- }
437
+ innerSignature = innerSignature.substr(captureGroups[0].size());
438
+
439
+ // If last char is ':', don't strip it from signature
440
+ if (captureGroups[0].substr(captureGroups[0].size() - 1) == ":") {
441
+ innerSignature = ":" + innerSignature;
442
+ }
414
443
 
415
- std::string paramName = innerSignature.substr(0, firstSpace);
444
+ TrimString(innerSignature);
445
+ }
446
+ else {
447
+ return NotParameterType;
448
+ }
416
449
 
417
- if (!RegexMatch(paramName, "^" PARAMETER_IDENTIFIER "$")) {
418
- return false; // Invalid param name
450
+ // If contains only parameter name
451
+ if (innerSignature.empty()) {
452
+ return OldParameterType;
419
453
  }
420
454
 
421
- // Remove param name
422
- innerSignature = innerSignature.substr(firstSpace + 1);
423
- size_t descriptionPos = innerSignature.find(snowcrash::DescriptionIdentifier);
455
+ std::string firstChar = innerSignature.substr(0, 1);
424
456
 
425
- // Remove description
426
- if (descriptionPos != std::string::npos) {
427
- innerSignature = innerSignature.substr(0, descriptionPos);
428
- innerSignature = TrimString(innerSignature);
457
+ // If first char is ':' or `=`
458
+ if (firstChar == ":" || firstChar == "=") {
459
+
460
+ innerSignature = innerSignature.substr(1);
461
+ TrimString(innerSignature);
462
+
463
+ if (innerSignature.empty()) {
464
+ return NotParameterType; // No sample or default value
465
+ }
466
+
467
+ // Traverse over the value
468
+ while (!innerSignature.empty()) {
469
+
470
+ std::string first = innerSignature.substr(0, 1);
471
+
472
+ if (first == "`") {
473
+ RetrieveEscaped(innerSignature);
474
+ TrimString(innerSignature);
475
+ }
476
+ else if (first == "(") {
477
+ break;
478
+ }
479
+ else {
480
+ innerSignature = innerSignature.substr(1);
481
+ }
482
+ }
483
+
484
+ return firstChar == ":" ? NewParameterType : OldParameterType;
429
485
  }
430
486
 
431
- size_t attributesPos = innerSignature.find("(");
487
+ if (innerSignature.substr(0, 1) == "(") {
432
488
 
433
- if (attributesPos != std::string::npos) {
489
+ // We should use `matchBrackets` if the parameters are supported to be more complex
434
490
  size_t endOfAttributesPos = innerSignature.find_last_of(")");
435
491
 
436
492
  if (endOfAttributesPos == std::string::npos) {
437
- return false; // Expecting close of attributes
493
+ return NotParameterType; // Expecting close of attributes
438
494
  }
439
495
 
440
- // Remove attributes
441
- innerSignature = innerSignature.substr(0, attributesPos);
442
- innerSignature = TrimString(innerSignature);
443
- }
496
+ std::string attributes = innerSignature.substr(1, endOfAttributesPos);
444
497
 
445
- if (innerSignature.length() == 0) {
446
- return true;
447
- }
448
-
449
- if (innerSignature.substr(0,1) == "=") {
450
- innerSignature = innerSignature.substr(1);
451
- innerSignature = TrimString(innerSignature);
498
+ if (RegexMatch(attributes, "enum\\[[^][]+]")) {
499
+ return NewParameterType;
500
+ }
452
501
 
453
- if (innerSignature.length() == 0) {
454
- return false; // No default value
502
+ if (RegexMatch(attributes, "`")) {
503
+ return OldParameterType;
455
504
  }
456
505
 
457
- if (innerSignature.substr(0,1) == "`" && innerSignature.substr(innerSignature.length()-1,1) == "`") {
458
- return true;
506
+ innerSignature = innerSignature.substr(endOfAttributesPos + 1);
507
+ TrimString(innerSignature);
508
+
509
+ if (innerSignature.empty()) {
510
+ return OldParameterType;
459
511
  }
460
512
  }
461
513
 
462
- return false;
463
- }
514
+ if (innerSignature.substr(0, 1) == "-") {
515
+ return NewParameterType;
516
+ }
464
517
 
518
+ if (innerSignature.substr(0, 3) == "...") {
519
+ return OldParameterType;
520
+ }
521
+
522
+ return NotParameterType;
523
+ }
465
524
  };
466
525
 
467
526
  /** Parameter Section Parser */
@@ -11,6 +11,7 @@
11
11
 
12
12
  #include "SectionParser.h"
13
13
  #include "ParameterParser.h"
14
+ #include "MSONParameterParser.h"
14
15
  #include "RegexMatch.h"
15
16
  #include "StringUtility.h"
16
17
  #include "BlueprintUtility.h"
@@ -58,26 +59,30 @@ namespace snowcrash {
58
59
  return ++MarkdownNodeIterator(node);
59
60
  }
60
61
 
61
- static MarkdownNodeIterator processDescription(const MarkdownNodeIterator& node,
62
- const MarkdownNodes& siblings,
63
- SectionParserData& pd,
64
- const ParseResultRef<Parameters>& out) {
65
-
66
- return node;
67
- }
62
+ NO_SECTION_DESCRIPTION(Parameters)
68
63
 
69
64
  static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
70
65
  const MarkdownNodes& siblings,
71
66
  SectionParserData& pd,
72
67
  const ParseResultRef<Parameters>& out) {
73
68
 
74
- if (pd.sectionContext() != ParameterSectionType) {
75
- return node;
76
- }
77
-
78
69
  IntermediateParseResult<Parameter> parameter(out.report);
70
+ IntermediateParseResult<MSONParameter> msonParameter(out.report);
79
71
 
80
- ParameterParser::parse(node, siblings, pd, parameter);
72
+ if (pd.sectionContext() == ParameterSectionType) {
73
+ ParameterParser::parse(node, siblings, pd, parameter);
74
+ }
75
+ else if (pd.sectionContext() == MSONParameterSectionType) {
76
+ MSONParameterParser::parse(node, siblings, pd, msonParameter);
77
+
78
+ // Copy values from MSON Parameter to normal parameter
79
+ parameter.report = msonParameter.report;
80
+ parameter.node = msonParameter.node;
81
+ parameter.sourceMap = msonParameter.sourceMap;
82
+ }
83
+ else {
84
+ return node;
85
+ }
81
86
 
82
87
  if (!out.node.empty()) {
83
88
 
@@ -105,12 +110,6 @@ namespace snowcrash {
105
110
  return ++MarkdownNodeIterator(node);
106
111
  }
107
112
 
108
- static bool isDescriptionNode(const MarkdownNodeIterator& node,
109
- SectionType sectionType) {
110
-
111
- return false;
112
- }
113
-
114
113
  static SectionType sectionType(const MarkdownNodeIterator& node) {
115
114
 
116
115
  if (node->type == mdp::ListItemMarkdownNodeType
@@ -14,6 +14,7 @@
14
14
  #include "AssetParser.h"
15
15
  #include "HeadersParser.h"
16
16
  #include "ParametersParser.h"
17
+ #include "AttributesParser.h"
17
18
 
18
19
  /** Media type in brackets regex */
19
20
  #define MEDIA_TYPE "([[:blank:]]*\\(([^\\)]*)\\))"
@@ -77,7 +78,7 @@ namespace snowcrash {
77
78
  if (pd.exportSourceMap() && !out.node.description.empty()) {
78
79
  out.sourceMap.description.sourceMap.append(node->sourceMap);
79
80
  }
80
- } else if (!parseSymbolReference(node, pd, remainingContent, out)) {
81
+ } else if (!parseModelReference(node, pd, remainingContent, out)) {
81
82
 
82
83
  // NOTE: NOT THE CORRECT WAY TO DO THIS
83
84
  // https://github.com/apiaryio/snowcrash/commit/a7c5868e62df0048a85e2f9aeeb42c3b3e0a2f07#commitcomment-7322085
@@ -102,11 +103,11 @@ namespace snowcrash {
102
103
  mdp::ByteBuffer content;
103
104
 
104
105
  if (!out.node.reference.id.empty()) {
105
- //WARN: ignoring extraneous content after symbol reference
106
+ //WARN: ignoring extraneous content after model reference
106
107
  std::stringstream ss;
107
108
 
108
- ss << "ignoring extraneous content after symbol reference";
109
- ss << ", expected symbol reference only e.g. '[" << out.node.reference.id << "][]'";
109
+ ss << "ignoring extraneous content after model reference";
110
+ ss << ", expected model reference only e.g. '[" << out.node.reference.id << "][]'";
110
111
 
111
112
  mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceData);
112
113
  out.report.warnings.push_back(Warning(ss.str(),
@@ -116,7 +117,7 @@ namespace snowcrash {
116
117
 
117
118
  if (!out.node.body.empty() ||
118
119
  node->type != mdp::ParagraphMarkdownNodeType ||
119
- !parseSymbolReference(node, pd, node->text, out)) {
120
+ !parseModelReference(node, pd, node->text, out)) {
120
121
 
121
122
  // NOTE: NOT THE CORRECT WAY TO DO THIS
122
123
  // https://github.com/apiaryio/snowcrash/commit/a7c5868e62df0048a85e2f9aeeb42c3b3e0a2f07#commitcomment-7322085
@@ -147,6 +148,12 @@ namespace snowcrash {
147
148
  return HeadersParser::parse(node, siblings, pd, headers);
148
149
  }
149
150
 
151
+ case AttributesSectionType:
152
+ {
153
+ ParseResultRef<Attributes> attributes(out.report, out.node.attributes, out.sourceMap.attributes);
154
+ return AttributesParser::parse(node, siblings, pd, attributes);
155
+ }
156
+
150
157
  case BodySectionType:
151
158
  {
152
159
  if (!out.node.body.empty()) {
@@ -276,6 +283,13 @@ namespace snowcrash {
276
283
  return nestedType;
277
284
  }
278
285
 
286
+ // Check if attributes section
287
+ nestedType = SectionProcessor<Attributes>::sectionType(node);
288
+
289
+ if (nestedType != UndefinedSectionType) {
290
+ return nestedType;
291
+ }
292
+
279
293
  return UndefinedSectionType;
280
294
  }
281
295
 
@@ -285,6 +299,7 @@ namespace snowcrash {
285
299
  nested.push_back(HeadersSectionType);
286
300
  nested.push_back(BodySectionType);
287
301
  nested.push_back(SchemaSectionType);
302
+ nested.push_back(AttributesSectionType);
288
303
 
289
304
  // Parameters & descendants
290
305
  nested.push_back(ParametersSectionType);
@@ -303,7 +318,8 @@ namespace snowcrash {
303
318
  if (sectionType == RequestSectionType || sectionType == RequestBodySectionType) {
304
319
 
305
320
  checkRequest(node, pd, out);
306
- } else if (sectionType == ResponseSectionType || sectionType == ResponseBodySectionType) {
321
+ }
322
+ else if (sectionType == ResponseSectionType || sectionType == ResponseBodySectionType) {
307
323
 
308
324
  checkResponse(node, pd, out);
309
325
  }
@@ -467,28 +483,28 @@ namespace snowcrash {
467
483
  return true;
468
484
  }
469
485
 
470
- /** Given the reference id(name), initializes reference of the payload accordingly(if possible resolve it) */
471
- static bool parseSymbolReference(const MarkdownNodeIterator& node,
472
- SectionParserData& pd,
473
- mdp::ByteBuffer& source,
474
- const ParseResultRef<Payload>& out) {
486
+ /** Given the reference id(name), initializes reference of the payload accordingly (if possible resolve it) */
487
+ static bool parseModelReference(const MarkdownNodeIterator& node,
488
+ SectionParserData& pd,
489
+ mdp::ByteBuffer& source,
490
+ const ParseResultRef<Payload>& out) {
475
491
 
476
492
  Identifier symbol;
477
493
 
478
494
  TrimString(source);
479
495
 
480
- if (GetSymbolReference(source, symbol)) {
496
+ if (GetModelReference(source, symbol)) {
481
497
 
482
498
  out.node.reference.id = symbol;
483
499
  out.node.reference.meta.node = node;
484
- out.node.reference.type = Reference::SymbolReference;
500
+ out.node.reference.type = Reference::ModelReference;
485
501
 
486
502
  if (pd.exportSourceMap() && !symbol.empty()) {
487
503
  out.sourceMap.reference.sourceMap = node->sourceMap;
488
504
  }
489
505
 
490
- // If symbol has not been defined yet in symbol table
491
- if (pd.symbolTable.resourceModels.find(symbol) == pd.symbolTable.resourceModels.end()) {
506
+ // If model has not been defined yet in model table
507
+ if (pd.modelTable.find(symbol) == pd.modelTable.end()) {
492
508
 
493
509
  out.node.reference.meta.state = Reference::StatePending;
494
510
 
@@ -514,7 +530,7 @@ namespace snowcrash {
514
530
  const ParseResultRef<Payload>& out) {
515
531
 
516
532
  SourceMap<ResourceModel> modelSM;
517
- ResourceModel model = pd.symbolTable.resourceModels.at(out.node.reference.id);
533
+ ResourceModel model = pd.modelTable.find(out.node.reference.id)->second;
518
534
 
519
535
 
520
536
  out.node.description = model.description;
@@ -553,7 +569,7 @@ namespace snowcrash {
553
569
 
554
570
  if (pd.exportSourceMap()) {
555
571
 
556
- modelSM = pd.symbolSourceMapTable.resourceModels.at(out.node.reference.id);
572
+ modelSM = pd.modelSourceMapTable.at(out.node.reference.id);
557
573
 
558
574
  out.sourceMap.description = modelSM.description;
559
575
  out.sourceMap.parameters = modelSM.parameters;
@@ -596,7 +612,9 @@ namespace snowcrash {
596
612
  }
597
613
  }
598
614
 
599
- if (out.node.body.empty() && out.node.reference.meta.state != Reference::StatePending) {
615
+
616
+ if (out.node.body.empty() && out.node.attributes.empty() &&
617
+ out.node.reference.meta.state != Reference::StatePending) {
600
618
 
601
619
  // Warn when content-length or transfer-encoding is specified or both headers and body are empty
602
620
  if (out.node.headers.empty()) {