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,104 @@
1
+ //
2
+ // sosYAML.h
3
+ // sos
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 12/01/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SOS_YAML_H
10
+ #define SOS_YAML_H
11
+
12
+ #include "sos.h"
13
+
14
+ namespace sos {
15
+
16
+ struct SerializeYAML : public Serialize {
17
+
18
+ virtual void indent(size_t level, std::ostream& os) {
19
+
20
+ for (size_t i = 0; i < level; ++i) {
21
+ os << " ";
22
+ }
23
+ }
24
+
25
+ virtual void null(std::ostream& os) {
26
+
27
+ os << " " << "null";
28
+ }
29
+
30
+ virtual void string(const std::string& value, std::ostream& os) {
31
+
32
+ std::string normalized = escapeDoubleQuotes(value);
33
+ normalized = escapeNewlines(normalized);
34
+
35
+ os << " " << "\"" << normalized << "\"";
36
+ }
37
+
38
+ virtual void number(double value, std::ostream& os) {
39
+
40
+ os << " " << value;
41
+ }
42
+
43
+ virtual void boolean(bool value, std::ostream& os) {
44
+
45
+ os << " " << (value ? "true" : "false");
46
+ }
47
+
48
+ virtual void array(const Base& value, std::ostream& os, size_t level) {
49
+
50
+ if (!value.array().empty()) {
51
+
52
+ if (level > 0) {
53
+ os << "\n";
54
+ }
55
+
56
+ size_t i = 0;
57
+
58
+ for (Bases::const_iterator it = value.array().begin(); it != value.array().end(); ++i, ++it) {
59
+
60
+ if (i > 0 && i < value.array().size()) {
61
+ os << "\n";
62
+ }
63
+
64
+ indent(level, os);
65
+ os << "-";
66
+ process(*it, os, level + 1);
67
+ }
68
+ }
69
+ else {
70
+ os << " []";
71
+ }
72
+ }
73
+
74
+ virtual void object(const Base& value, std::ostream& os, size_t level) {
75
+
76
+ if (!value.keys.empty()) {
77
+
78
+ if (level > 0) {
79
+ os << "\n";
80
+ }
81
+
82
+ size_t i = 0;
83
+
84
+ for (Keys::const_iterator it = value.keys.begin(); it != value.keys.end(); ++i, ++it) {
85
+
86
+ if (i > 0 && i < value.keys.size()) {
87
+ os << "\n";
88
+ }
89
+
90
+ indent(level, os);
91
+ os << *it;
92
+
93
+ os << ":";
94
+ process(value.object().at(*it), os, level + 1);
95
+ }
96
+ }
97
+ else {
98
+ os << " {}";
99
+ }
100
+ }
101
+ };
102
+ }
103
+
104
+ #endif
@@ -1,21 +1,16 @@
1
1
  //
2
2
  // Serialize.cc
3
- // snowcrash
3
+ // drafter
4
4
  //
5
5
  // Created by Zdenek Nemec on 5/3/13.
6
6
  // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
7
  //
8
8
 
9
- #include <string>
10
- #include <sstream>
11
- #include <algorithm>
12
- #include <iterator>
13
9
  #include "Serialize.h"
14
10
  #include "StringUtility.h"
15
11
 
16
- using namespace snowcrash;
12
+ using namespace drafter;
17
13
 
18
- const std::string SerializeKey::ASTVersion = "_version";
19
14
  const std::string SerializeKey::Metadata = "metadata";
20
15
  const std::string SerializeKey::Reference = "reference";
21
16
  const std::string SerializeKey::Id = "id";
@@ -25,8 +20,11 @@ const std::string SerializeKey::ResourceGroups = "resourceGroups";
25
20
  const std::string SerializeKey::Resources = "resources";
26
21
  const std::string SerializeKey::URI = "uri";
27
22
  const std::string SerializeKey::URITemplate = "uriTemplate";
23
+ const std::string SerializeKey::Assets = "assets";
28
24
  const std::string SerializeKey::Actions = "actions";
29
25
  const std::string SerializeKey::Action = "action";
26
+ const std::string SerializeKey::Relation = "relation";
27
+ const std::string SerializeKey::Attributes = "attributes";
30
28
  const std::string SerializeKey::Method = "method";
31
29
  const std::string SerializeKey::Examples = "examples";
32
30
  const std::string SerializeKey::Requests = "requests";
@@ -43,12 +41,29 @@ const std::string SerializeKey::Default = "default";
43
41
  const std::string SerializeKey::Example = "example";
44
42
  const std::string SerializeKey::Values = "values";
45
43
 
46
- std::string snowcrash::EscapeNewlines(const std::string& input)
47
- {
48
- return ReplaceString(input, "\n", "\\n");
49
- }
44
+ const std::string SerializeKey::Source = "source";
45
+ const std::string SerializeKey::Resolved = "resolved";
50
46
 
51
- std::string snowcrash::EscapeDoubleQuotes(const std::string& input)
52
- {
53
- return ReplaceString(input, "\"", "\\\"");
54
- }
47
+ const std::string SerializeKey::Literal = "literal";
48
+ const std::string SerializeKey::Variable = "variable";
49
+ const std::string SerializeKey::TypeDefinition = "typeDefinition";
50
+ const std::string SerializeKey::TypeSpecification = "typeSpecification";
51
+ const std::string SerializeKey::NestedTypes = "nestedTypes";
52
+ const std::string SerializeKey::Sections = "sections";
53
+ const std::string SerializeKey::Class = "class";
54
+ const std::string SerializeKey::Content = "content";
55
+ const std::string SerializeKey::ValueDefinition = "valueDefinition";
56
+
57
+ const std::string SerializeKey::Element = "element";
58
+ const std::string SerializeKey::Role = "role";
59
+
60
+ const std::string SerializeKey::Version = "_version";
61
+ const std::string SerializeKey::Ast = "ast";
62
+ const std::string SerializeKey::SourceMap= "sourcemap";
63
+ const std::string SerializeKey::Error = "error";
64
+ const std::string SerializeKey::Warnings = "warnings";
65
+ const std::string SerializeKey::AnnotationCode = "code";
66
+ const std::string SerializeKey::AnnotationMessage = "message";
67
+ const std::string SerializeKey::AnnotationLocation = "location";
68
+ const std::string SerializeKey::AnnotationLocationIndex = "index";
69
+ const std::string SerializeKey::AnnotationLocationLength = "length";
@@ -0,0 +1,135 @@
1
+ //
2
+ // Serialize.h
3
+ // drafter
4
+ //
5
+ // Created by Zdenek Nemec on 5/3/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_SERIALIZE_H
10
+ #define DRAFTER_SERIALIZE_H
11
+
12
+ #include <string>
13
+ #include "BlueprintSourcemap.h"
14
+ #include "sos.h"
15
+
16
+ /** Version of API Blueprint serialization */
17
+ #define AST_SERIALIZATION_VERSION "3.0"
18
+ #define PARSE_RESULT_SERIALIZATION_VERSION "2.1"
19
+
20
+ namespace drafter {
21
+
22
+ /**
23
+ * AST entities serialization keys
24
+ */
25
+ struct SerializeKey {
26
+ static const std::string Metadata;
27
+ static const std::string Reference;
28
+ static const std::string Id;
29
+ static const std::string Name;
30
+ static const std::string Description;
31
+ static const std::string ResourceGroups;
32
+ static const std::string Resources;
33
+ static const std::string URI;
34
+ static const std::string URITemplate;
35
+ static const std::string Assets;
36
+ static const std::string Actions;
37
+ static const std::string Action;
38
+ static const std::string Relation;
39
+ static const std::string Attributes;
40
+ static const std::string Examples;
41
+ static const std::string Transaction;
42
+ static const std::string Method;
43
+ static const std::string Requests;
44
+ static const std::string Responses;
45
+ static const std::string Body;
46
+ static const std::string Schema;
47
+ static const std::string Headers;
48
+ static const std::string Model;
49
+ static const std::string Value;
50
+ static const std::string Parameters;
51
+ static const std::string Type;
52
+ static const std::string Required;
53
+ static const std::string Default;
54
+ static const std::string Example;
55
+ static const std::string Values;
56
+
57
+ static const std::string Source;
58
+ static const std::string Resolved;
59
+
60
+ static const std::string Literal;
61
+ static const std::string Variable;
62
+ static const std::string TypeDefinition;
63
+ static const std::string TypeSpecification;
64
+ static const std::string NestedTypes;
65
+ static const std::string Sections;
66
+ static const std::string Class;
67
+ static const std::string Content;
68
+ static const std::string ValueDefinition;
69
+
70
+ static const std::string Element;
71
+ static const std::string Role;
72
+
73
+ static const std::string Version;
74
+ static const std::string Ast;
75
+ static const std::string SourceMap;
76
+ static const std::string Error;
77
+ static const std::string Warnings;
78
+ static const std::string AnnotationCode;
79
+ static const std::string AnnotationMessage;
80
+ static const std::string AnnotationLocation;
81
+ static const std::string AnnotationLocationIndex;
82
+ static const std::string AnnotationLocationLength;
83
+ };
84
+
85
+
86
+ /**
87
+ * \brief functor pattern to translate _collection_ into sos::Array on serialization
88
+ * \requests for collection - must define typedef member ::const_iterator
89
+ *
90
+ * usage:
91
+ *
92
+ * sos::Array elements = WrapCollection<mson::Element>()(getSomeListOfElements(), WrapMSONElement));
93
+ *
94
+ * operator()(const T& collection, Functor &wrapper)
95
+ * \param collection - it come typicaly from snowcrash
96
+ * \param wrapper - adaptee element before push to collection
97
+ * you have to write your own, for example \see SeriallizeAST.cc
98
+ *
99
+ */
100
+ template<typename T, typename R = sos::Array>
101
+ struct WrapCollection {
102
+
103
+ typedef T value_type;
104
+
105
+ template<typename Collection, typename Functor>
106
+ R operator()(const Collection& collection, Functor &wrapper) const {
107
+ typedef typename Collection::const_iterator iterator_type;
108
+ R array;
109
+
110
+ for (iterator_type it = collection.begin(); it != collection.end(); ++it) {
111
+ array.push(wrapper(*it));
112
+ }
113
+
114
+ return array;
115
+ }
116
+
117
+ template<typename Collection, typename Functor, typename Predicate>
118
+ R operator()(const Collection& collection, Functor &wrapper, Predicate &predicate) const {
119
+ typedef typename Collection::const_iterator iterator_type;
120
+ R array;
121
+
122
+ for (iterator_type it = collection.begin(); it != collection.end(); ++it) {
123
+ if (predicate(*it)) {
124
+ array.push(wrapper(*it));
125
+ }
126
+ }
127
+
128
+ return array;
129
+ }
130
+
131
+ };
132
+
133
+ }
134
+
135
+ #endif
@@ -0,0 +1,775 @@
1
+ //
2
+ // SerializeAST.cc
3
+ // drafter
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 18/01/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "StringUtility.h"
10
+ #include "SerializeAST.h"
11
+
12
+ using namespace drafter;
13
+
14
+ using snowcrash::AssetRole;
15
+ using snowcrash::BodyExampleAssetRole;
16
+ using snowcrash::BodySchemaAssetRole;
17
+
18
+ using snowcrash::Element;
19
+ using snowcrash::Elements;
20
+ using snowcrash::KeyValuePair;
21
+ using snowcrash::Metadata;
22
+ using snowcrash::Header;
23
+ using snowcrash::Reference;
24
+ using snowcrash::DataStructure;
25
+ using snowcrash::Asset;
26
+ using snowcrash::Payload;
27
+ using snowcrash::Value;
28
+ using snowcrash::Parameter;
29
+ using snowcrash::TransactionExample;
30
+ using snowcrash::Request;
31
+ using snowcrash::Response;
32
+ using snowcrash::Action;
33
+ using snowcrash::Resource;
34
+ using snowcrash::Blueprint;
35
+
36
+ sos::Object WrapValue(const mson::Value& value)
37
+ {
38
+ sos::Object valueObject;
39
+
40
+ // Literal
41
+ valueObject.set(SerializeKey::Literal, sos::String(value.literal));
42
+
43
+ // Variable
44
+ valueObject.set(SerializeKey::Variable, sos::Boolean(value.variable));
45
+
46
+ return valueObject;
47
+ }
48
+
49
+ sos::Object WrapSymbol(const mson::Symbol& symbol)
50
+ {
51
+ sos::Object symbolObject;
52
+
53
+ // Literal
54
+ symbolObject.set(SerializeKey::Literal, sos::String(symbol.literal));
55
+
56
+ // Variable
57
+ symbolObject.set(SerializeKey::Variable, sos::Boolean(symbol.variable));
58
+
59
+ return symbolObject;
60
+ }
61
+
62
+ sos::Base WrapTypeName(const mson::TypeName& typeName)
63
+ {
64
+ if (typeName.empty()) {
65
+ return sos::Null();
66
+ }
67
+
68
+ if (typeName.base != mson::UndefinedTypeName) {
69
+
70
+ std::string baseTypeName;
71
+
72
+ switch (typeName.base) {
73
+
74
+ case mson::BooleanTypeName:
75
+ baseTypeName = "boolean";
76
+ break;
77
+
78
+ case mson::StringTypeName:
79
+ baseTypeName = "string";
80
+ break;
81
+
82
+ case mson::NumberTypeName:
83
+ baseTypeName = "number";
84
+ break;
85
+
86
+ case mson::ArrayTypeName:
87
+ baseTypeName = "array";
88
+ break;
89
+
90
+ case mson::EnumTypeName:
91
+ baseTypeName = "enum";
92
+ break;
93
+
94
+ case mson::ObjectTypeName:
95
+ baseTypeName = "object";
96
+ break;
97
+
98
+ default:
99
+ break;
100
+ }
101
+
102
+ return sos::String(baseTypeName);
103
+ }
104
+
105
+ return WrapSymbol(typeName.symbol);
106
+ }
107
+
108
+
109
+ sos::Object WrapTypeSpecification(const mson::TypeSpecification& typeSpecification)
110
+ {
111
+ sos::Object typeSpecificationObject;
112
+
113
+ // Name
114
+ typeSpecificationObject.set(SerializeKey::Name, WrapTypeName(typeSpecification.name));
115
+
116
+ // Nested Types
117
+ typeSpecificationObject.set(SerializeKey::NestedTypes,
118
+ WrapCollection<mson::TypeName>()(typeSpecification.nestedTypes, WrapTypeName));
119
+
120
+ return typeSpecificationObject;
121
+ }
122
+
123
+ sos::Array WrapTypeAttributes(const mson::TypeAttributes& typeAttributes)
124
+ {
125
+ sos::Array typeAttributesArray;
126
+
127
+ if (typeAttributes & mson::RequiredTypeAttribute) {
128
+ typeAttributesArray.push(sos::String("required"));
129
+ }
130
+ else if (typeAttributes & mson::OptionalTypeAttribute) {
131
+ typeAttributesArray.push(sos::String("optional"));
132
+ }
133
+ else if (typeAttributes & mson::DefaultTypeAttribute) {
134
+ typeAttributesArray.push(sos::String("default"));
135
+ }
136
+ else if (typeAttributes & mson::SampleTypeAttribute) {
137
+ typeAttributesArray.push(sos::String("sample"));
138
+ }
139
+ else if (typeAttributes & mson::FixedTypeAttribute) {
140
+ typeAttributesArray.push(sos::String("fixed"));
141
+ }
142
+
143
+ return typeAttributesArray;
144
+ }
145
+
146
+ sos::Object WrapTypeDefinition(const mson::TypeDefinition& typeDefinition)
147
+ {
148
+ sos::Object typeDefinitionObject;
149
+
150
+ // Type Specification
151
+ typeDefinitionObject.set(SerializeKey::TypeSpecification, WrapTypeSpecification(typeDefinition.typeSpecification));
152
+
153
+ // Type Attributes
154
+ typeDefinitionObject.set(SerializeKey::Attributes, WrapTypeAttributes(typeDefinition.attributes));
155
+
156
+ return typeDefinitionObject;
157
+ }
158
+
159
+ sos::Object WrapValueDefinition(const mson::ValueDefinition& valueDefinition)
160
+ {
161
+ sos::Object valueDefinitionObject;
162
+
163
+ // Values
164
+ valueDefinitionObject.set(SerializeKey::Values,
165
+ WrapCollection<mson::Value>()(valueDefinition.values, WrapValue));
166
+
167
+ // Type Definition
168
+ valueDefinitionObject.set(SerializeKey::TypeDefinition, WrapTypeDefinition(valueDefinition.typeDefinition));
169
+
170
+ return valueDefinitionObject;
171
+ }
172
+
173
+ sos::Object WrapPropertyName(const mson::PropertyName& propertyName)
174
+ {
175
+ sos::Object propertyNameObject;
176
+
177
+ if (!propertyName.literal.empty()) {
178
+ propertyNameObject.set(SerializeKey::Literal, sos::String(propertyName.literal));
179
+ }
180
+ else if (!propertyName.variable.empty()) {
181
+ propertyNameObject.set(SerializeKey::Variable, WrapValueDefinition(propertyName.variable));
182
+ }
183
+
184
+ return propertyNameObject;
185
+ }
186
+
187
+ // Forward declarations
188
+ sos::Object WrapTypeSection(const mson::TypeSection& typeSection);
189
+
190
+ const sos::String TypeSectionClassToString(const mson::TypeSection::Class& klass)
191
+ {
192
+ switch (klass) {
193
+ case mson::TypeSection::BlockDescriptionClass:
194
+ return sos::String("blockDescription");
195
+
196
+ case mson::TypeSection::MemberTypeClass:
197
+ return sos::String("memberType");
198
+
199
+ case mson::TypeSection::SampleClass:
200
+ return sos::String("sample");
201
+
202
+ case mson::TypeSection::DefaultClass:
203
+ return sos::String("default");
204
+
205
+ default:
206
+ return sos::String();
207
+ }
208
+
209
+ return sos::String();
210
+ }
211
+
212
+ sos::String AssetRoleToString(const AssetRole& role)
213
+ {
214
+ std::string str;
215
+
216
+ switch (role) {
217
+ case BodyExampleAssetRole:
218
+ str = "bodyExample";
219
+ break;
220
+
221
+ case BodySchemaAssetRole:
222
+ str = "bodySchema";
223
+ break;
224
+
225
+ default:
226
+ break;
227
+ }
228
+
229
+ return sos::String(str);
230
+ }
231
+
232
+ sos::String ElementClassToString(const Element::Class& element)
233
+ {
234
+ std::string str;
235
+
236
+ switch (element) {
237
+ case Element::CategoryElement:
238
+ str = "category";
239
+ break;
240
+
241
+ case Element::CopyElement:
242
+ str = "copy";
243
+ break;
244
+
245
+ case Element::ResourceElement:
246
+ str = "resource";
247
+ break;
248
+
249
+ case Element::DataStructureElement:
250
+ str = "dataStructure";
251
+ break;
252
+
253
+ case Element::AssetElement:
254
+ str = "asset";
255
+ break;
256
+
257
+ default:
258
+ break;
259
+ }
260
+
261
+ return sos::String(str);
262
+ }
263
+
264
+ sos::Object WrapNamedType(const mson::NamedType& namedType)
265
+ {
266
+ sos::Object namedTypeObject;
267
+
268
+ // Name
269
+ namedTypeObject.set(SerializeKey::Name, WrapTypeName(namedType.name));
270
+
271
+ // Type Definition
272
+ namedTypeObject.set(SerializeKey::TypeDefinition, WrapTypeDefinition(namedType.typeDefinition));
273
+
274
+ // Type Sections
275
+ namedTypeObject.set(SerializeKey::Sections,
276
+ WrapCollection<mson::TypeSection>()(namedType.sections, WrapTypeSection));
277
+
278
+ return namedTypeObject;
279
+ }
280
+
281
+ sos::Object WrapKeyValue(const KeyValuePair& keyValue)
282
+ {
283
+ sos::Object keyValueObject;
284
+
285
+ // Name
286
+ keyValueObject.set(SerializeKey::Name, sos::String(keyValue.first));
287
+
288
+ // Value
289
+ keyValueObject.set(SerializeKey::Value, sos::String(keyValue.second));
290
+
291
+ return keyValueObject;
292
+ }
293
+
294
+ sos::Object WrapMetadata(const Metadata& metadata)
295
+ {
296
+ return WrapKeyValue(metadata);
297
+ }
298
+
299
+ sos::Object WrapHeader(const Header& header)
300
+ {
301
+ return WrapKeyValue(header);
302
+ }
303
+
304
+ sos::Object WrapReference(const Reference& reference)
305
+ {
306
+ sos::Object referenceObject;
307
+
308
+ // Id
309
+ referenceObject.set(SerializeKey::Id, sos::String(reference.id));
310
+
311
+ return referenceObject;
312
+ }
313
+
314
+ sos::Object WrapPropertyMember(const mson::PropertyMember& propertyMember)
315
+ {
316
+ sos::Object propertyMemberObject;
317
+
318
+ // Name
319
+ propertyMemberObject.set(SerializeKey::Name, WrapPropertyName(propertyMember.name));
320
+
321
+ // Description
322
+ propertyMemberObject.set(SerializeKey::Description, sos::String(propertyMember.description));
323
+
324
+ // Value Definition
325
+ propertyMemberObject.set(SerializeKey::ValueDefinition, WrapValueDefinition(propertyMember.valueDefinition));
326
+
327
+ // Type Sections
328
+ propertyMemberObject.set(SerializeKey::Sections,
329
+ WrapCollection<mson::TypeSection>()(propertyMember.sections, WrapTypeSection));
330
+
331
+ return propertyMemberObject;
332
+ }
333
+
334
+ sos::Object WrapValueMember(const mson::ValueMember& valueMember)
335
+ {
336
+ sos::Object valueMemberObject;
337
+
338
+ // Description
339
+ valueMemberObject.set(SerializeKey::Description, sos::String(valueMember.description));
340
+
341
+ // Value Definition
342
+ valueMemberObject.set(SerializeKey::ValueDefinition, WrapValueDefinition(valueMember.valueDefinition));
343
+
344
+ // Type Sections
345
+ valueMemberObject.set(SerializeKey::Sections,
346
+ WrapCollection<mson::TypeSection>()(valueMember.sections, WrapTypeSection));
347
+
348
+ return valueMemberObject;
349
+ }
350
+
351
+ sos::Object WrapMixin(const mson::Mixin& mixin)
352
+ {
353
+ return WrapTypeDefinition(mixin);
354
+ }
355
+
356
+ sos::Object WrapMSONElement(const mson::Element& element)
357
+ {
358
+ sos::Object elementObject;
359
+ std::string klass;
360
+
361
+ switch (element.klass) {
362
+
363
+ case mson::Element::PropertyClass:
364
+ {
365
+ klass = "property";
366
+ elementObject.set(SerializeKey::Content, WrapPropertyMember(element.content.property));
367
+ break;
368
+ }
369
+
370
+ case mson::Element::ValueClass:
371
+ {
372
+ klass = "value";
373
+ elementObject.set(SerializeKey::Content, WrapValueMember(element.content.value));
374
+ break;
375
+ }
376
+
377
+ case mson::Element::MixinClass:
378
+ {
379
+ klass = "mixin";
380
+ elementObject.set(SerializeKey::Content, WrapMixin(element.content.mixin));
381
+ break;
382
+ }
383
+
384
+ case mson::Element::OneOfClass:
385
+ {
386
+ klass = "oneOf";
387
+ elementObject.set(SerializeKey::Content,
388
+ WrapCollection<mson::Element>()(element.content.oneOf(), WrapMSONElement));
389
+ break;
390
+ }
391
+
392
+ case mson::Element::GroupClass:
393
+ {
394
+ klass = "group";
395
+ elementObject.set(SerializeKey::Content,
396
+ WrapCollection<mson::Element>()(element.content.elements(), WrapMSONElement));
397
+ break;
398
+ }
399
+
400
+ default:
401
+ break;
402
+ }
403
+
404
+ elementObject.set(SerializeKey::Class, sos::String(klass));
405
+
406
+ return elementObject;
407
+ }
408
+
409
+ sos::Object WrapTypeSection(const mson::TypeSection& section)
410
+ {
411
+ sos::Object object;
412
+
413
+ // Class
414
+ object.set(SerializeKey::Class, TypeSectionClassToString(section.klass));
415
+
416
+ // Content
417
+ if (!section.content.description.empty()) {
418
+ object.set(SerializeKey::Content, sos::String(section.content.description));
419
+ }
420
+ else if (!section.content.value.empty()) {
421
+ object.set(SerializeKey::Content, sos::String(section.content.value));
422
+ }
423
+ else if (!section.content.elements().empty()) {
424
+ object.set(SerializeKey::Content,
425
+ WrapCollection<mson::Element>()(section.content.elements(), WrapMSONElement));
426
+ }
427
+
428
+ return object;
429
+ }
430
+
431
+ sos::Object WrapDataStructure(const DataStructure& dataStructure)
432
+ {
433
+ sos::Object dataStructureObject;
434
+
435
+ // Element
436
+ dataStructureObject.set(SerializeKey::Element, ElementClassToString(Element::DataStructureElement));
437
+
438
+ // Name
439
+ dataStructureObject.set(SerializeKey::Name, WrapTypeName(dataStructure.name));
440
+
441
+ // Type Definition
442
+ dataStructureObject.set(SerializeKey::TypeDefinition, WrapTypeDefinition(dataStructure.typeDefinition));
443
+
444
+ // Type Sections
445
+ dataStructureObject.set(SerializeKey::Sections,
446
+ WrapCollection<mson::TypeSection>()(dataStructure.sections, WrapTypeSection));
447
+
448
+ return dataStructureObject;
449
+ }
450
+
451
+ sos::Object WrapAsset(const Asset& asset, const AssetRole& role)
452
+ {
453
+ sos::Object assetObject;
454
+
455
+ // Element
456
+ assetObject.set(SerializeKey::Element, ElementClassToString(Element::AssetElement));
457
+
458
+ // Attributes
459
+ sos::Object attributes;
460
+
461
+ /// Role
462
+ attributes.set(SerializeKey::Role, AssetRoleToString(role));
463
+
464
+ assetObject.set(SerializeKey::Attributes, attributes);
465
+
466
+ // Content
467
+ assetObject.set(SerializeKey::Content, sos::String(asset));
468
+
469
+ return assetObject;
470
+ }
471
+
472
+ sos::Object WrapPayload(const Payload& payload)
473
+ {
474
+ sos::Object payloadObject;
475
+
476
+ // Reference
477
+ if (!payload.reference.id.empty()) {
478
+ payloadObject.set(SerializeKey::Reference, WrapReference(payload.reference));
479
+ }
480
+
481
+ // Name
482
+ payloadObject.set(SerializeKey::Name, sos::String(payload.name));
483
+
484
+ // Description
485
+ payloadObject.set(SerializeKey::Description, sos::String(payload.description));
486
+
487
+ // Headers
488
+ payloadObject.set(SerializeKey::Headers,
489
+ WrapCollection<Header>()(payload.headers, WrapHeader));
490
+
491
+ // Body
492
+ payloadObject.set(SerializeKey::Body, sos::String(payload.body));
493
+
494
+ // Schema
495
+ payloadObject.set(SerializeKey::Schema, sos::String(payload.schema));
496
+
497
+ // Content
498
+ sos::Array content;
499
+
500
+ /// Attributes
501
+ if (!payload.attributes.empty()) {
502
+ content.push(WrapDataStructure(payload.attributes));
503
+ }
504
+
505
+ /// Asset 'bodyExample'
506
+ if (!payload.body.empty()) {
507
+ content.push(WrapAsset(payload.body, BodyExampleAssetRole));
508
+ }
509
+
510
+ /// Asset 'bodySchema'
511
+ if (!payload.schema.empty()) {
512
+ content.push(WrapAsset(payload.schema, BodySchemaAssetRole));
513
+ }
514
+
515
+ payloadObject.set(SerializeKey::Content, content);
516
+
517
+ return payloadObject;
518
+ }
519
+
520
+ sos::Object WrapParameterValue(const Value& value)
521
+ {
522
+ sos::Object object;
523
+ object.set(SerializeKey::Value, sos::String(value.c_str()));
524
+
525
+ return object;
526
+ }
527
+
528
+ sos::Object WrapParameter(const Parameter& parameter)
529
+ {
530
+ sos::Object parameterObject;
531
+
532
+ // Name
533
+ parameterObject.set(SerializeKey::Name, sos::String(parameter.name));
534
+
535
+ // Description
536
+ parameterObject.set(SerializeKey::Description, sos::String(parameter.description));
537
+
538
+ // Type
539
+ parameterObject.set(SerializeKey::Type, sos::String(parameter.type));
540
+
541
+ // Use
542
+ parameterObject.set(SerializeKey::Required, sos::Boolean(parameter.use != snowcrash::OptionalParameterUse));
543
+
544
+ // Default Value
545
+ parameterObject.set(SerializeKey::Default, sos::String(parameter.defaultValue));
546
+
547
+ // Example Value
548
+ parameterObject.set(SerializeKey::Example, sos::String(parameter.exampleValue));
549
+
550
+ // Values
551
+ parameterObject.set(SerializeKey::Values,
552
+ WrapCollection<Value>()(parameter.values, WrapParameterValue));
553
+
554
+ return parameterObject;
555
+ }
556
+
557
+ sos::Object WrapTransactionExample(const TransactionExample& example)
558
+ {
559
+ sos::Object exampleObject;
560
+
561
+ // Name
562
+ exampleObject.set(SerializeKey::Name, sos::String(example.name));
563
+
564
+ // Description
565
+ exampleObject.set(SerializeKey::Description, sos::String(example.description));
566
+
567
+ // Requests
568
+ exampleObject.set(SerializeKey::Requests,
569
+ WrapCollection<Request>()(example.requests, WrapPayload));
570
+
571
+ // Responses
572
+ exampleObject.set(SerializeKey::Responses,
573
+ WrapCollection<Response>()(example.responses, WrapPayload));
574
+
575
+ return exampleObject;
576
+ }
577
+
578
+ sos::Object WrapAction(const Action& action)
579
+ {
580
+ sos::Object actionObject;
581
+
582
+ // Name
583
+ actionObject.set(SerializeKey::Name, sos::String(action.name));
584
+
585
+ // Description
586
+ actionObject.set(SerializeKey::Description, sos::String(action.description));
587
+
588
+ // HTTP Method
589
+ actionObject.set(SerializeKey::Method, sos::String(action.method));
590
+
591
+ // Parameters
592
+ actionObject.set(SerializeKey::Parameters,
593
+ WrapCollection<Parameter>()(action.parameters, WrapParameter));
594
+
595
+ // Attributes
596
+ sos::Object attributes;
597
+
598
+ /// Relation
599
+ attributes.set(SerializeKey::Relation, sos::String(action.relation.str));
600
+
601
+ /// URI Template
602
+ attributes.set(SerializeKey::URITemplate, sos::String(action.uriTemplate));
603
+
604
+ actionObject.set(SerializeKey::Attributes, attributes);
605
+
606
+ // Content
607
+ sos::Array content;
608
+
609
+ if (!action.attributes.empty()) {
610
+ content.push(WrapDataStructure(action.attributes));
611
+ }
612
+
613
+ actionObject.set(SerializeKey::Content, content);
614
+
615
+ // Transaction Examples
616
+ actionObject.set(SerializeKey::Examples,
617
+ WrapCollection<TransactionExample>()(action.examples, WrapTransactionExample));
618
+
619
+ return actionObject;
620
+ }
621
+
622
+ sos::Object WrapResource(const Resource& resource)
623
+ {
624
+ sos::Object resourceObject;
625
+
626
+ // Element
627
+ resourceObject.set(SerializeKey::Element, ElementClassToString(Element::ResourceElement));
628
+
629
+ // Name
630
+ resourceObject.set(SerializeKey::Name, sos::String(resource.name));
631
+
632
+ // Description
633
+ resourceObject.set(SerializeKey::Description, sos::String(resource.description));
634
+
635
+ // URI Template
636
+ resourceObject.set(SerializeKey::URITemplate, sos::String(resource.uriTemplate));
637
+
638
+ // Model
639
+ sos::Object model = (resource.model.name.empty() ? sos::Object() : WrapPayload(resource.model));
640
+ resourceObject.set(SerializeKey::Model, model);
641
+
642
+ // Parameters
643
+ resourceObject.set(SerializeKey::Parameters,
644
+ WrapCollection<Parameter>()(resource.parameters, WrapParameter));
645
+
646
+ // Actions
647
+ resourceObject.set(SerializeKey::Actions,
648
+ WrapCollection<Action>()(resource.actions, WrapAction));
649
+
650
+ // Content
651
+ sos::Array content;
652
+
653
+ if (!resource.attributes.empty()) {
654
+ content.push(WrapDataStructure(resource.attributes));
655
+ }
656
+
657
+ resourceObject.set(SerializeKey::Content, content);
658
+
659
+ return resourceObject;
660
+ }
661
+
662
+ sos::Object WrapResourceGroup(const Element& resourceGroup)
663
+ {
664
+ sos::Object resourceGroupObject;
665
+
666
+ // Name
667
+ resourceGroupObject.set(SerializeKey::Name, sos::String(resourceGroup.attributes.name));
668
+
669
+ // Description && Resources
670
+ std::string description;
671
+ sos::Array resources;
672
+
673
+ for (Elements::const_iterator it = resourceGroup.content.elements().begin();
674
+ it != resourceGroup.content.elements().end();
675
+ ++it) {
676
+
677
+ if (it->element == Element::ResourceElement) {
678
+ resources.push(WrapResource(it->content.resource));
679
+ }
680
+ else if (it->element == Element::CopyElement) {
681
+
682
+ if (!description.empty()) {
683
+ snowcrash::TwoNewLines(description);
684
+ }
685
+
686
+ description += it->content.copy;
687
+ }
688
+ }
689
+
690
+ resourceGroupObject.set(SerializeKey::Description, sos::String(description));
691
+ resourceGroupObject.set(SerializeKey::Resources, resources);
692
+
693
+ return resourceGroupObject;
694
+ }
695
+
696
+ sos::Object WrapElement(const Element& element)
697
+ {
698
+ sos::Object elementObject;
699
+
700
+ elementObject.set(SerializeKey::Element, ElementClassToString(element.element));
701
+
702
+ if (!element.attributes.name.empty()) {
703
+
704
+ sos::Object attributes;
705
+
706
+ attributes.set(SerializeKey::Name, sos::String(element.attributes.name));
707
+ elementObject.set(SerializeKey::Attributes, attributes);
708
+ }
709
+
710
+ switch (element.element) {
711
+ case Element::CopyElement:
712
+ {
713
+ elementObject.set(SerializeKey::Content, sos::String(element.content.copy));
714
+ break;
715
+ }
716
+
717
+ case Element::CategoryElement:
718
+ {
719
+ elementObject.set(SerializeKey::Content,
720
+ WrapCollection<Element>()(element.content.elements(), WrapElement));
721
+ break;
722
+ }
723
+
724
+ case Element::DataStructureElement:
725
+ {
726
+ return WrapDataStructure(element.content.dataStructure);
727
+ }
728
+
729
+ case Element::ResourceElement:
730
+ {
731
+ return WrapResource(element.content.resource);
732
+ }
733
+
734
+ default:
735
+ break;
736
+ }
737
+
738
+ return elementObject;
739
+ }
740
+
741
+ bool IsElementResourceGroup(const Element& element)
742
+ {
743
+ return element.element == Element::CategoryElement && element.category == Element::ResourceGroupCategory;
744
+ }
745
+
746
+ sos::Object drafter::WrapBlueprint(const Blueprint& blueprint)
747
+ {
748
+ sos::Object blueprintObject;
749
+
750
+ // Version
751
+ blueprintObject.set(SerializeKey::Version, sos::String(AST_SERIALIZATION_VERSION));
752
+
753
+ // Metadata
754
+ blueprintObject.set(SerializeKey::Metadata,
755
+ WrapCollection<Metadata>()(blueprint.metadata, WrapKeyValue));
756
+
757
+ // Name
758
+ blueprintObject.set(SerializeKey::Name, sos::String(blueprint.name));
759
+
760
+ // Description
761
+ blueprintObject.set(SerializeKey::Description, sos::String(blueprint.description));
762
+
763
+ // Element
764
+ blueprintObject.set(SerializeKey::Element, ElementClassToString(blueprint.element));
765
+
766
+ // Resource Groups
767
+ blueprintObject.set(SerializeKey::ResourceGroups,
768
+ WrapCollection<Element>()(blueprint.content.elements(), WrapResourceGroup, IsElementResourceGroup));
769
+
770
+ // Content
771
+ blueprintObject.set(SerializeKey::Content,
772
+ WrapCollection<Element>()(blueprint.content.elements(), WrapElement));
773
+
774
+ return blueprintObject;
775
+ }