lounge_lizard 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.gitmodules +3 -0
  4. data/.rspec +2 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +4 -0
  7. data/Guardfile +33 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +50 -0
  10. data/Rakefile +43 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/circle.yml +14 -0
  14. data/ext/drafter/CHANGELOG.md +278 -0
  15. data/ext/drafter/Dockerfile +17 -0
  16. data/ext/drafter/Makefile +62 -0
  17. data/ext/drafter/appveyor.yml +17 -0
  18. data/ext/drafter/bin/drafter +0 -0
  19. data/ext/drafter/build/Makefile +387 -0
  20. data/ext/drafter/build/drafter.Makefile +6 -0
  21. data/ext/drafter/build/drafter.target.mk +159 -0
  22. data/ext/drafter/build/ext/snowcrash/libmarkdownparser.target.mk +141 -0
  23. data/ext/drafter/build/ext/snowcrash/libsnowcrash.target.mk +154 -0
  24. data/ext/drafter/build/ext/snowcrash/libsundown.target.mk +149 -0
  25. data/ext/drafter/build/ext/snowcrash/perf-libsnowcrash.target.mk +147 -0
  26. data/ext/drafter/build/ext/snowcrash/snowcrash.Makefile +6 -0
  27. data/ext/drafter/build/gyp-mac-tool +606 -0
  28. data/ext/drafter/build/libdrafter.target.mk +186 -0
  29. data/ext/drafter/build/libsos.target.mk +137 -0
  30. data/ext/drafter/build/out/Release/drafter +0 -0
  31. data/ext/drafter/build/out/Release/libdrafter.dylib +0 -0
  32. data/ext/drafter/build/out/Release/libmarkdownparser.a +0 -0
  33. data/ext/drafter/build/out/Release/libsnowcrash.a +0 -0
  34. data/ext/drafter/build/out/Release/libsos.a +0 -0
  35. data/ext/drafter/build/out/Release/libsundown.a +0 -0
  36. data/ext/drafter/build/out/Release/obj.target/drafter/src/config.o +0 -0
  37. data/ext/drafter/build/out/Release/obj.target/drafter/src/main.o +0 -0
  38. data/ext/drafter/build/out/Release/obj.target/drafter/src/reporting.o +0 -0
  39. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/ConversionContext.o +0 -0
  40. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/NamedTypesRegistry.o +0 -0
  41. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractAPI.o +0 -0
  42. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractDataStructure.o +0 -0
  43. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractElementFactory.o +0 -0
  44. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/RefractSourceMap.o +0 -0
  45. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Render.o +0 -0
  46. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/Serialize.o +0 -0
  47. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeAST.o +0 -0
  48. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeResult.o +0 -0
  49. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/SerializeSourcemap.o +0 -0
  50. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter.o +0 -0
  51. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/drafter_private.o +0 -0
  52. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ComparableVisitor.o +0 -0
  53. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Element.o +0 -0
  54. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/ExpandVisitor.o +0 -0
  55. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/IsExpandableVisitor.o +0 -0
  56. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/JSONSchemaVisitor.o +0 -0
  57. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/PrintVisitor.o +0 -0
  58. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Query.o +0 -0
  59. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/Registry.o +0 -0
  60. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/RenderJSONVisitor.o +0 -0
  61. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeCompactVisitor.o +0 -0
  62. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/SerializeVisitor.o +0 -0
  63. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/TypeQueryVisitor.o +0 -0
  64. data/ext/drafter/build/out/Release/obj.target/libdrafter/src/refract/VisitorUtils.o +0 -0
  65. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.o +0 -0
  66. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.o +0 -0
  67. data/ext/drafter/build/out/Release/obj.target/libmarkdownparser/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.o +0 -0
  68. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Blueprint.o +0 -0
  69. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/BlueprintSourcemap.o +0 -0
  70. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HTTP.o +0 -0
  71. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/HeadersParser.o +0 -0
  72. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSON.o +0 -0
  73. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONOneOfParser.o +0 -0
  74. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONSourcemap.o +0 -0
  75. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONTypeSectionParser.o +0 -0
  76. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/MSONValueMemberParser.o +0 -0
  77. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Section.o +0 -0
  78. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/Signature.o +0 -0
  79. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/UriTemplateParser.o +0 -0
  80. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/posix/RegexMatch.o +0 -0
  81. data/ext/drafter/build/out/Release/obj.target/libsnowcrash/ext/snowcrash/src/snowcrash.o +0 -0
  82. data/ext/drafter/build/out/Release/obj.target/libsos/ext/sos/src/sos.o +0 -0
  83. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.o +0 -0
  84. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.o +0 -0
  85. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.o +0 -0
  86. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.o +0 -0
  87. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.o +0 -0
  88. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.o +0 -0
  89. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.o +0 -0
  90. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.o +0 -0
  91. data/ext/drafter/build/out/Release/obj.target/libsundown/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.o +0 -0
  92. data/ext/drafter/circle.yml +32 -0
  93. data/ext/drafter/config.gypi +10 -0
  94. data/ext/drafter/config.mk +5 -0
  95. data/ext/drafter/configure +224 -0
  96. data/ext/drafter/drafter.gyp +189 -0
  97. data/ext/drafter/drafter.xcworkspace/contents.xcworkspacedata +13 -0
  98. data/ext/drafter/ext/snowcrash/Makefile +58 -0
  99. data/ext/drafter/ext/snowcrash/appveyor.yml +7 -0
  100. data/ext/drafter/ext/snowcrash/common.gypi +165 -0
  101. data/ext/drafter/ext/snowcrash/configure +197 -0
  102. data/ext/drafter/ext/snowcrash/ext/markdown-parser/Makefile +90 -0
  103. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/CONTRIBUTING.md +10 -0
  104. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile +84 -0
  105. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/Makefile.win +33 -0
  106. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/smartypants.c +72 -0
  107. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/examples/sundown.c +80 -0
  108. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini.h +37 -0
  109. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_href_e.c +108 -0
  110. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/houdini_html_e.c +84 -0
  111. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.c +647 -0
  112. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html.h +77 -0
  113. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html/html_smartypants.c +389 -0
  114. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/html_block_names.txt +25 -0
  115. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.c +297 -0
  116. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/autolink.h +51 -0
  117. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.c +225 -0
  118. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/buffer.h +96 -0
  119. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/html_blocks.h +206 -0
  120. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.c +2726 -0
  121. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/markdown.h +147 -0
  122. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.c +204 -0
  123. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/src_map.h +58 -0
  124. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.c +81 -0
  125. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/src/stack.h +29 -0
  126. data/ext/drafter/ext/snowcrash/ext/markdown-parser/ext/sundown/sundown.def +20 -0
  127. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/markdown/markdown.vcproj +188 -0
  128. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/msvc.sln +38 -0
  129. data/ext/drafter/ext/snowcrash/ext/markdown-parser/msvc/sundown/sundown.vcproj +206 -0
  130. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.cc +160 -0
  131. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/ByteBuffer.h +90 -0
  132. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.cc +152 -0
  133. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownNode.h +103 -0
  134. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.cc +388 -0
  135. data/ext/drafter/ext/snowcrash/ext/markdown-parser/src/MarkdownParser.h +106 -0
  136. data/ext/drafter/ext/snowcrash/snowcrash.gyp +196 -0
  137. data/ext/drafter/ext/snowcrash/src/ActionParser.h +560 -0
  138. data/ext/drafter/ext/snowcrash/src/AssetParser.h +123 -0
  139. data/ext/drafter/ext/snowcrash/src/AttributesParser.h +123 -0
  140. data/ext/drafter/ext/snowcrash/src/Blueprint.cc +90 -0
  141. data/ext/drafter/ext/snowcrash/src/Blueprint.h +489 -0
  142. data/ext/drafter/ext/snowcrash/src/BlueprintParser.h +845 -0
  143. data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.cc +81 -0
  144. data/ext/drafter/ext/snowcrash/src/BlueprintSourcemap.h +345 -0
  145. data/ext/drafter/ext/snowcrash/src/BlueprintUtility.h +111 -0
  146. data/ext/drafter/ext/snowcrash/src/CodeBlockUtility.h +276 -0
  147. data/ext/drafter/ext/snowcrash/src/DataStructureGroupParser.h +157 -0
  148. data/ext/drafter/ext/snowcrash/src/HTTP.cc +49 -0
  149. data/ext/drafter/ext/snowcrash/src/HTTP.h +108 -0
  150. data/ext/drafter/ext/snowcrash/src/HeadersParser.cc +117 -0
  151. data/ext/drafter/ext/snowcrash/src/HeadersParser.h +377 -0
  152. data/ext/drafter/ext/snowcrash/src/MSON.cc +272 -0
  153. data/ext/drafter/ext/snowcrash/src/MSON.h +405 -0
  154. data/ext/drafter/ext/snowcrash/src/MSONMixinParser.h +103 -0
  155. data/ext/drafter/ext/snowcrash/src/MSONNamedTypeParser.h +135 -0
  156. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.cc +132 -0
  157. data/ext/drafter/ext/snowcrash/src/MSONOneOfParser.h +80 -0
  158. data/ext/drafter/ext/snowcrash/src/MSONParameterParser.h +166 -0
  159. data/ext/drafter/ext/snowcrash/src/MSONPropertyMemberParser.h +106 -0
  160. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.cc +141 -0
  161. data/ext/drafter/ext/snowcrash/src/MSONSourcemap.h +181 -0
  162. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.cc +209 -0
  163. data/ext/drafter/ext/snowcrash/src/MSONTypeSectionParser.h +213 -0
  164. data/ext/drafter/ext/snowcrash/src/MSONUtility.h +506 -0
  165. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.cc +214 -0
  166. data/ext/drafter/ext/snowcrash/src/MSONValueMemberParser.h +390 -0
  167. data/ext/drafter/ext/snowcrash/src/ModelTable.h +87 -0
  168. data/ext/drafter/ext/snowcrash/src/ParameterParser.h +516 -0
  169. data/ext/drafter/ext/snowcrash/src/ParametersParser.h +222 -0
  170. data/ext/drafter/ext/snowcrash/src/PayloadParser.h +733 -0
  171. data/ext/drafter/ext/snowcrash/src/Platform.h +33 -0
  172. data/ext/drafter/ext/snowcrash/src/RegexMatch.h +32 -0
  173. data/ext/drafter/ext/snowcrash/src/RelationParser.h +87 -0
  174. data/ext/drafter/ext/snowcrash/src/ResourceGroupParser.h +297 -0
  175. data/ext/drafter/ext/snowcrash/src/ResourceParser.h +536 -0
  176. data/ext/drafter/ext/snowcrash/src/Section.cc +48 -0
  177. data/ext/drafter/ext/snowcrash/src/Section.h +60 -0
  178. data/ext/drafter/ext/snowcrash/src/SectionParser.h +246 -0
  179. data/ext/drafter/ext/snowcrash/src/SectionParserData.h +109 -0
  180. data/ext/drafter/ext/snowcrash/src/SectionProcessor.h +299 -0
  181. data/ext/drafter/ext/snowcrash/src/Signature.cc +75 -0
  182. data/ext/drafter/ext/snowcrash/src/Signature.h +103 -0
  183. data/ext/drafter/ext/snowcrash/src/SignatureSectionProcessor.h +442 -0
  184. data/ext/drafter/ext/snowcrash/src/SourceAnnotation.h +166 -0
  185. data/ext/drafter/ext/snowcrash/src/StringUtility.h +323 -0
  186. data/ext/drafter/ext/snowcrash/src/UriTemplateParser.cc +195 -0
  187. data/ext/drafter/ext/snowcrash/src/UriTemplateParser.h +240 -0
  188. data/ext/drafter/ext/snowcrash/src/ValuesParser.h +111 -0
  189. data/ext/drafter/ext/snowcrash/src/posix/RegexMatch.cc +99 -0
  190. data/ext/drafter/ext/snowcrash/src/snowcrash.cc +90 -0
  191. data/ext/drafter/ext/snowcrash/src/snowcrash.h +44 -0
  192. data/ext/drafter/ext/snowcrash/src/win/RegexMatch.cc +78 -0
  193. data/ext/drafter/ext/snowcrash/tools/gyp/AUTHORS +12 -0
  194. data/ext/drafter/ext/snowcrash/tools/gyp/DEPS +23 -0
  195. data/ext/drafter/ext/snowcrash/tools/gyp/OWNERS +1 -0
  196. data/ext/drafter/ext/snowcrash/tools/gyp/PRESUBMIT.py +137 -0
  197. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/buildbot_run.py +136 -0
  198. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/OWNERS +6 -0
  199. data/ext/drafter/ext/snowcrash/tools/gyp/buildbot/commit_queue/cq_config.json +15 -0
  200. data/ext/drafter/ext/snowcrash/tools/gyp/codereview.settings +10 -0
  201. data/ext/drafter/ext/snowcrash/tools/gyp/data/win/large-pdb-shim.cc +12 -0
  202. data/ext/drafter/ext/snowcrash/tools/gyp/gyp +8 -0
  203. data/ext/drafter/ext/snowcrash/tools/gyp/gyp.bat +5 -0
  204. data/ext/drafter/ext/snowcrash/tools/gyp/gyp_main.py +16 -0
  205. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSNew.py +340 -0
  206. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSProject.py +208 -0
  207. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSSettings.py +1096 -0
  208. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSToolFile.py +58 -0
  209. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUserFile.py +147 -0
  210. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.py +270 -0
  211. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSUtil.pyc +0 -0
  212. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.py +445 -0
  213. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/MSVSVersion.pyc +0 -0
  214. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.py +548 -0
  215. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/__init__.pyc +0 -0
  216. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.py +608 -0
  217. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/common.pyc +0 -0
  218. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/easy_xml.py +157 -0
  219. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/flock_tool.py +54 -0
  220. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.py +0 -0
  221. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/__init__.pyc +0 -0
  222. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/analyzer.py +741 -0
  223. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/android.py +1069 -0
  224. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/cmake.py +1248 -0
  225. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/dump_dependency_json.py +99 -0
  226. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/eclipse.py +425 -0
  227. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypd.py +94 -0
  228. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/gypsh.py +56 -0
  229. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.py +2218 -0
  230. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/make.pyc +0 -0
  231. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/msvs.py +3467 -0
  232. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.py +2427 -0
  233. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/ninja.pyc +0 -0
  234. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.py +1300 -0
  235. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/generator/xcode.pyc +0 -0
  236. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.py +2899 -0
  237. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/input.pyc +0 -0
  238. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/mac_tool.py +605 -0
  239. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.py +1093 -0
  240. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/msvs_emulation.pyc +0 -0
  241. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.py +160 -0
  242. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ninja_syntax.pyc +0 -0
  243. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/ordered_dict.py +289 -0
  244. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.py +46 -0
  245. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/simple_copy.pyc +0 -0
  246. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/win_tool.py +314 -0
  247. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.py +1664 -0
  248. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_emulation.pyc +0 -0
  249. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.py +276 -0
  250. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcode_ninja.pyc +0 -0
  251. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.py +2927 -0
  252. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xcodeproj_file.pyc +0 -0
  253. data/ext/drafter/ext/snowcrash/tools/gyp/pylib/gyp/xml_fix.py +69 -0
  254. data/ext/drafter/ext/snowcrash/tools/gyp/pylintrc +307 -0
  255. data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples +81 -0
  256. data/ext/drafter/ext/snowcrash/tools/gyp/samples/samples.bat +5 -0
  257. data/ext/drafter/ext/snowcrash/tools/gyp/setup.py +19 -0
  258. data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.pbfilespec +27 -0
  259. data/ext/drafter/ext/snowcrash/tools/gyp/tools/Xcode/Specifications/gyp.xclangspec +226 -0
  260. data/ext/drafter/ext/snowcrash/tools/gyp/tools/emacs/gyp.el +275 -0
  261. data/ext/drafter/ext/snowcrash/tools/gyp/tools/graphviz.py +100 -0
  262. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_gyp.py +155 -0
  263. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_sln.py +169 -0
  264. data/ext/drafter/ext/snowcrash/tools/gyp/tools/pretty_vcproj.py +329 -0
  265. data/ext/drafter/ext/snowcrash/vcbuild.bat +139 -0
  266. data/ext/drafter/ext/sos/Makefile +62 -0
  267. data/ext/drafter/ext/sos/src/sos.cc +235 -0
  268. data/ext/drafter/ext/sos/src/sos.h +188 -0
  269. data/ext/drafter/ext/sos/src/sosJSON.h +121 -0
  270. data/ext/drafter/ext/sos/src/sosYAML.h +105 -0
  271. data/ext/drafter/src/ConversionContext.cc +39 -0
  272. data/ext/drafter/src/ConversionContext.h +34 -0
  273. data/ext/drafter/src/NamedTypesRegistry.cc +405 -0
  274. data/ext/drafter/src/NamedTypesRegistry.h +28 -0
  275. data/ext/drafter/src/NodeInfo.h +143 -0
  276. data/ext/drafter/src/RefractAPI.cc +579 -0
  277. data/ext/drafter/src/RefractAPI.h +28 -0
  278. data/ext/drafter/src/RefractDataStructure.cc +1199 -0
  279. data/ext/drafter/src/RefractDataStructure.h +26 -0
  280. data/ext/drafter/src/RefractElementFactory.cc +107 -0
  281. data/ext/drafter/src/RefractElementFactory.h +67 -0
  282. data/ext/drafter/src/RefractSourceMap.cc +29 -0
  283. data/ext/drafter/src/RefractSourceMap.h +57 -0
  284. data/ext/drafter/src/Render.cc +157 -0
  285. data/ext/drafter/src/Render.h +40 -0
  286. data/ext/drafter/src/Serialize.cc +160 -0
  287. data/ext/drafter/src/Serialize.h +289 -0
  288. data/ext/drafter/src/SerializeAST.cc +507 -0
  289. data/ext/drafter/src/SerializeAST.h +29 -0
  290. data/ext/drafter/src/SerializeResult.cc +170 -0
  291. data/ext/drafter/src/SerializeResult.h +34 -0
  292. data/ext/drafter/src/SerializeSourcemap.cc +331 -0
  293. data/ext/drafter/src/SerializeSourcemap.h +21 -0
  294. data/ext/drafter/src/Version.h +40 -0
  295. data/ext/drafter/src/config.cc +91 -0
  296. data/ext/drafter/src/config.h +38 -0
  297. data/ext/drafter/src/drafter.cc +137 -0
  298. data/ext/drafter/src/drafter.h +102 -0
  299. data/ext/drafter/src/drafter_private.cc +85 -0
  300. data/ext/drafter/src/drafter_private.h +34 -0
  301. data/ext/drafter/src/main.cc +137 -0
  302. data/ext/drafter/src/refract/AppendDecorator.h +58 -0
  303. data/ext/drafter/src/refract/Build.h +67 -0
  304. data/ext/drafter/src/refract/ComparableVisitor.cc +43 -0
  305. data/ext/drafter/src/refract/ComparableVisitor.h +62 -0
  306. data/ext/drafter/src/refract/Element.cc +409 -0
  307. data/ext/drafter/src/refract/Element.h +656 -0
  308. data/ext/drafter/src/refract/ElementFwd.h +37 -0
  309. data/ext/drafter/src/refract/ElementInserter.h +59 -0
  310. data/ext/drafter/src/refract/Exception.h +31 -0
  311. data/ext/drafter/src/refract/ExpandVisitor.cc +359 -0
  312. data/ext/drafter/src/refract/ExpandVisitor.h +58 -0
  313. data/ext/drafter/src/refract/FilterVisitor.h +52 -0
  314. data/ext/drafter/src/refract/IsExpandableVisitor.cc +140 -0
  315. data/ext/drafter/src/refract/IsExpandableVisitor.h +31 -0
  316. data/ext/drafter/src/refract/Iterate.h +160 -0
  317. data/ext/drafter/src/refract/JSONSchemaVisitor.cc +675 -0
  318. data/ext/drafter/src/refract/JSONSchemaVisitor.h +73 -0
  319. data/ext/drafter/src/refract/PrintVisitor.cc +164 -0
  320. data/ext/drafter/src/refract/PrintVisitor.h +50 -0
  321. data/ext/drafter/src/refract/Query.cc +13 -0
  322. data/ext/drafter/src/refract/Query.h +38 -0
  323. data/ext/drafter/src/refract/Registry.cc +114 -0
  324. data/ext/drafter/src/refract/Registry.h +43 -0
  325. data/ext/drafter/src/refract/RenderJSONVisitor.cc +255 -0
  326. data/ext/drafter/src/refract/RenderJSONVisitor.h +51 -0
  327. data/ext/drafter/src/refract/SerializeCompactVisitor.cc +167 -0
  328. data/ext/drafter/src/refract/SerializeCompactVisitor.h +56 -0
  329. data/ext/drafter/src/refract/SerializeVisitor.cc +214 -0
  330. data/ext/drafter/src/refract/SerializeVisitor.h +55 -0
  331. data/ext/drafter/src/refract/TypeQueryVisitor.cc +46 -0
  332. data/ext/drafter/src/refract/TypeQueryVisitor.h +110 -0
  333. data/ext/drafter/src/refract/Visitor.h +126 -0
  334. data/ext/drafter/src/refract/VisitorUtils.cc +63 -0
  335. data/ext/drafter/src/refract/VisitorUtils.h +231 -0
  336. data/ext/drafter/src/reporting.cc +263 -0
  337. data/ext/drafter/src/reporting.h +39 -0
  338. data/ext/drafter/src/stream.h +148 -0
  339. data/ext/drafter/tools/homebrew/drafter.rb +18 -0
  340. data/ext/drafter/tools/make-tarball.sh +39 -0
  341. data/ext/drafter/tools/refract-filter.py +96 -0
  342. data/ext/drafter/tools/release.sh +17 -0
  343. data/ext/drafter/vcbuild.bat +203 -0
  344. data/lib/lounge_lizard/binding.rb +29 -0
  345. data/lib/lounge_lizard/version.rb +3 -0
  346. data/lib/lounge_lizard.rb +18 -0
  347. data/lounge_lizard.gemspec +37 -0
  348. metadata +547 -0
@@ -0,0 +1,536 @@
1
+ //
2
+ // ResourceParser.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 5/4/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_RESOURCEPARSER_H
10
+ #define SNOWCRASH_RESOURCEPARSER_H
11
+
12
+ #include "SectionParser.h"
13
+ #include "ActionParser.h"
14
+ #include "DataStructureGroupParser.h"
15
+ #include "HeadersParser.h"
16
+ #include "ParametersParser.h"
17
+ #include "UriTemplateParser.h"
18
+ #include "RegexMatch.h"
19
+
20
+ namespace snowcrash {
21
+
22
+ /** Nameless resource matching regex */
23
+ const char* const ResourceHeaderRegex = "^[[:blank:]]*(" HTTP_REQUEST_METHOD "[[:blank:]]+)?" URI_TEMPLATE "$";
24
+
25
+ /** Named resource matching regex */
26
+ const char* const NamedResourceHeaderRegex = "^[[:blank:]]*" SYMBOL_IDENTIFIER "[[:blank:]]+\\[" URI_TEMPLATE "]$";
27
+
28
+ /** Named endpoint matching regex */
29
+ const char* const NamedEndpointHeaderRegex = "^[[:blank:]]*" SYMBOL_IDENTIFIER "[[:blank:]]+\\[" HTTP_REQUEST_METHOD "[[:blank:]]+" URI_TEMPLATE "]$";
30
+
31
+ /** Internal type alias for Collection iterator of Resource */
32
+ typedef Collection<Resource>::const_iterator ResourceIterator;
33
+
34
+ /**
35
+ * Resource Section processor
36
+ */
37
+ template<>
38
+ struct SectionProcessor<Resource> : public SectionProcessorBase<Resource> {
39
+
40
+ static MarkdownNodeIterator processSignature(const MarkdownNodeIterator& node,
41
+ const MarkdownNodes& siblings,
42
+ SectionParserData& pd,
43
+ SectionLayout& layout,
44
+ const ParseResultRef<Resource>& out) {
45
+
46
+ CaptureGroups captureGroups;
47
+
48
+ // If Abbreviated resource section
49
+ if (RegexCapture(node->text, ResourceHeaderRegex, captureGroups, 4)) {
50
+
51
+ out.node.uriTemplate = captureGroups[3];
52
+
53
+ // Make this section an action
54
+ if (!captureGroups[2].empty()) {
55
+ return processNestedAction(node, node->parent().children(), pd, layout, out);
56
+ }
57
+ } else if (RegexCapture(node->text, NamedEndpointHeaderRegex, captureGroups, 5)) {
58
+
59
+ out.node.name = captureGroups[1];
60
+ TrimString(out.node.name);
61
+ out.node.uriTemplate = captureGroups[3];
62
+
63
+ return processNestedAction(node, node->parent().children(), pd, layout, out);
64
+ } else {
65
+ matchNamedResourceHeader(node, out.node);
66
+ }
67
+
68
+ if (pd.exportSourceMap()) {
69
+ if (!out.node.uriTemplate.empty()) {
70
+ out.sourceMap.uriTemplate.sourceMap = node->sourceMap;
71
+ }
72
+
73
+ if (!out.node.name.empty()) {
74
+ out.sourceMap.name.sourceMap = node->sourceMap;
75
+ }
76
+ }
77
+
78
+ return ++MarkdownNodeIterator(node);
79
+ }
80
+
81
+ static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
82
+ const MarkdownNodes& siblings,
83
+ SectionParserData& pd,
84
+ const ParseResultRef<Resource>& out) {
85
+
86
+ switch (pd.sectionContext()) {
87
+ case ActionSectionType:
88
+ return processAction(node, siblings, pd, out);
89
+
90
+ case ParametersSectionType:
91
+ return processParameters(node, siblings, pd, out);
92
+
93
+ case ModelSectionType:
94
+ case ModelBodySectionType:
95
+ return processModel(node, siblings, pd, out);
96
+
97
+ case HeadersSectionType:
98
+ {
99
+ ParseResultRef<Headers> headers(out.report, out.node.headers, out.sourceMap.headers);
100
+ return SectionProcessor<Action>::handleDeprecatedHeaders(node, siblings, pd, headers);
101
+ }
102
+
103
+ case AttributesSectionType:
104
+ {
105
+ // Set up named type context
106
+ if (!out.node.name.empty()) {
107
+ pd.namedTypeContext = out.node.name;
108
+ }
109
+
110
+ ParseResultRef<Attributes> attributes(out.report, out.node.attributes, out.sourceMap.attributes);
111
+ MarkdownNodeIterator cur = AttributesParser::parse(node, siblings, pd, attributes);
112
+
113
+ // Clear named type context
114
+ pd.namedTypeContext.clear();
115
+
116
+ if (!out.node.name.empty()) {
117
+
118
+ if (SectionProcessor<DataStructureGroup>::isNamedTypeDuplicate(pd.blueprint, out.node.name)) {
119
+
120
+ // WARN: duplicate named type
121
+ std::stringstream ss;
122
+ ss << "named type with name '" << out.node.name << "' already exists";
123
+
124
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
125
+ out.report.warnings.push_back(Warning(ss.str(),
126
+ DuplicateWarning,
127
+ sourceMap));
128
+
129
+ // Remove the attributes data from the AST since we are ignoring this
130
+ out.node.attributes = mson::NamedType();
131
+
132
+ return cur;
133
+ }
134
+
135
+ attributes.node.name.symbol.literal = out.node.name;
136
+
137
+ if (pd.exportSourceMap()) {
138
+ attributes.sourceMap.name.sourceMap = out.sourceMap.name.sourceMap;
139
+ }
140
+ }
141
+
142
+ return cur;
143
+ }
144
+
145
+ default:
146
+ break;
147
+ }
148
+
149
+ return node;
150
+ }
151
+
152
+ static MarkdownNodeIterator processUnexpectedNode(const MarkdownNodeIterator& node,
153
+ const MarkdownNodes& siblings,
154
+ SectionParserData& pd,
155
+ SectionType& sectionType,
156
+ const ParseResultRef<Resource>& out) {
157
+
158
+ if ((node->type == mdp::ParagraphMarkdownNodeType ||
159
+ node->type == mdp::CodeMarkdownNodeType) &&
160
+ (sectionType == ModelBodySectionType ||
161
+ sectionType == ModelSectionType)) {
162
+
163
+ mdp::ByteBuffer content = CodeBlockUtility::addDanglingAsset(node, pd, sectionType, out.report, out.node.model.body);
164
+
165
+ if (pd.exportSourceMap() && !content.empty()) {
166
+ out.sourceMap.model.body.sourceMap.append(node->sourceMap);
167
+ }
168
+
169
+ // Update model in the model table as well
170
+ ModelTable::iterator it = pd.modelTable.find(out.node.model.name);
171
+
172
+ if (it != pd.modelTable.end()) {
173
+ it->second.body = out.node.model.body;
174
+
175
+ if (pd.exportSourceMap()) {
176
+ pd.modelSourceMapTable[out.node.model.name].body = out.sourceMap.model.body;
177
+ }
178
+ }
179
+
180
+ return ++MarkdownNodeIterator(node);
181
+ }
182
+
183
+ return SectionProcessorBase<Resource>::processUnexpectedNode(node, siblings, pd, sectionType, out);
184
+ }
185
+
186
+ static bool isDescriptionNode(const MarkdownNodeIterator& node,
187
+ SectionType sectionType) {
188
+
189
+ if (SectionProcessor<Action>::actionType(node) == CompleteActionType) {
190
+ return false;
191
+ }
192
+
193
+ return SectionProcessorBase<Resource>::isDescriptionNode(node, sectionType);
194
+ }
195
+
196
+ static SectionType sectionType(const MarkdownNodeIterator& node) {
197
+
198
+ if (node->type == mdp::HeaderMarkdownNodeType
199
+ && !node->text.empty()) {
200
+
201
+ CaptureGroups captureGroups;
202
+ mdp::ByteBuffer subject = node->text;
203
+
204
+ TrimString(subject);
205
+
206
+ if (RegexMatch(subject, NamedResourceHeaderRegex) ||
207
+ RegexMatch(subject, NamedEndpointHeaderRegex) ||
208
+ RegexMatch(subject, ResourceHeaderRegex)) {
209
+ return ResourceSectionType;
210
+ }
211
+ }
212
+
213
+ return UndefinedSectionType;
214
+ }
215
+
216
+ static SectionType nestedSectionType(const MarkdownNodeIterator& node) {
217
+
218
+ SectionType nestedType = UndefinedSectionType;
219
+
220
+ // Check if parameters section
221
+ nestedType = SectionProcessor<Parameters>::sectionType(node);
222
+
223
+ if (nestedType != UndefinedSectionType) {
224
+ return nestedType;
225
+ }
226
+
227
+ // Check if headers section
228
+ nestedType = SectionProcessor<Headers>::sectionType(node);
229
+
230
+ if (nestedType != UndefinedSectionType) {
231
+ return nestedType;
232
+ }
233
+
234
+ // Check if model section
235
+ nestedType = SectionProcessor<Payload>::sectionType(node);
236
+
237
+ if (nestedType == ModelSectionType ||
238
+ nestedType == ModelBodySectionType) {
239
+
240
+ return nestedType;
241
+ }
242
+
243
+ // Check if attributes section
244
+ nestedType = SectionProcessor<Attributes>::sectionType(node);
245
+
246
+ if (nestedType != UndefinedSectionType) {
247
+ return nestedType;
248
+ }
249
+
250
+ // Check if action section
251
+ nestedType = SectionProcessor<Action>::sectionType(node);
252
+
253
+ if (nestedType == ActionSectionType) {
254
+
255
+ // Do not consider complete actions as nested
256
+ mdp::ByteBuffer method;
257
+ if (SectionProcessor<Action>::actionType(node) == CompleteActionType)
258
+ return UndefinedSectionType;
259
+
260
+ return nestedType;
261
+ }
262
+
263
+ return UndefinedSectionType;
264
+ }
265
+
266
+ static SectionTypes upperSectionTypes() {
267
+ return {ResourceGroupSectionType, ResourceSectionType, DataStructureGroupSectionType};
268
+ }
269
+
270
+ static void finalize(const MarkdownNodeIterator& node,
271
+ SectionParserData& pd,
272
+ const ParseResultRef<Resource>& out) {
273
+
274
+ if (!out.node.uriTemplate.empty()) {
275
+
276
+ URITemplateParser uriTemplateParser;
277
+ ParsedURITemplate parsedResult;
278
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
279
+
280
+ uriTemplateParser.parse(out.node.uriTemplate, sourceMap, parsedResult);
281
+
282
+ if (!parsedResult.report.warnings.empty()) {
283
+ out.report += parsedResult.report;
284
+ }
285
+ }
286
+
287
+ // Consolidate deprecated headers into subsequent payloads
288
+ if (!out.node.headers.empty()) {
289
+
290
+ Collection<Action>::iterator actionIt = out.node.actions.begin();
291
+ Collection<SourceMap<Action> >::iterator actionSMIt = out.sourceMap.actions.collection.begin();
292
+
293
+ for (;
294
+ actionIt != out.node.actions.end();
295
+ ++actionIt, ++actionSMIt) {
296
+
297
+ SectionProcessor<Headers>::injectDeprecatedHeaders(pd, out.node.headers, out.sourceMap.headers, actionIt->examples, actionSMIt->examples);
298
+ }
299
+
300
+ out.node.headers.clear();
301
+
302
+ if (pd.exportSourceMap()) {
303
+ out.sourceMap.headers.collection.clear();
304
+ }
305
+ }
306
+ }
307
+
308
+ /**
309
+ * \brief Given a named resource header, retrieve the name and uriTemplate
310
+ *
311
+ * \param node Markdown node to process
312
+ * \param resource Resource data structure
313
+ */
314
+ static void matchNamedResourceHeader(const MarkdownNodeIterator& node,
315
+ Resource& resource) {
316
+
317
+ CaptureGroups captureGroups;
318
+
319
+ if (RegexCapture(node->text, NamedResourceHeaderRegex, captureGroups, 4)) {
320
+
321
+ resource.name = captureGroups[1];
322
+ TrimString(resource.name);
323
+ resource.uriTemplate = captureGroups[2];
324
+ }
325
+ }
326
+
327
+ /**
328
+ * \brief Parse the current node as an action
329
+ */
330
+ static MarkdownNodeIterator processNestedAction(const MarkdownNodeIterator& node,
331
+ const MarkdownNodes& siblings,
332
+ SectionParserData& pd,
333
+ SectionLayout& layout,
334
+ const ParseResultRef<Resource>& out) {
335
+
336
+ IntermediateParseResult<Action> action(out.report);
337
+ MarkdownNodeIterator cur = ActionParser::parse(node, siblings, pd, action);
338
+
339
+ out.node.actions.push_back(action.node);
340
+ layout = RedirectSectionLayout;
341
+
342
+ if (pd.exportSourceMap()) {
343
+ out.sourceMap.actions.collection.push_back(action.sourceMap);
344
+ out.sourceMap.uriTemplate.sourceMap = node->sourceMap;
345
+ }
346
+
347
+ return cur;
348
+ }
349
+
350
+ /** Process Action section */
351
+ static MarkdownNodeIterator processAction(const MarkdownNodeIterator& node,
352
+ const MarkdownNodes& siblings,
353
+ SectionParserData& pd,
354
+ const ParseResultRef<Resource>& out) {
355
+
356
+ IntermediateParseResult<Action> action(out.report);
357
+ MarkdownNodeIterator cur = ActionParser::parse(node, siblings, pd, action);
358
+
359
+ ActionIterator duplicate = SectionProcessor<Action>::findAction(out.node.actions, action.node);
360
+
361
+ if (duplicate != out.node.actions.end()) {
362
+
363
+ // WARN: duplicate method
364
+ std::stringstream ss;
365
+ ss << "action with method '" << action.node.method << "' already defined for resource '";
366
+ ss << out.node.uriTemplate << "'";
367
+
368
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
369
+ out.report.warnings.push_back(Warning(ss.str(),
370
+ DuplicateWarning,
371
+ sourceMap));
372
+ }
373
+
374
+ ActionIterator relationDuplicate = SectionProcessor<Action>::findRelation(out.node.actions, action.node.relation);
375
+
376
+ if (relationDuplicate != out.node.actions.end()) {
377
+
378
+ // WARN: duplicate relation identifier
379
+ std::stringstream ss;
380
+ ss << "relation identifier '" << action.node.relation.str << "' already defined for resource '" << out.node.uriTemplate << "'";
381
+
382
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
383
+ out.report.warnings.push_back(Warning(ss.str(),
384
+ DuplicateWarning,
385
+ sourceMap));
386
+ }
387
+
388
+ if (!action.node.parameters.empty() &&
389
+ action.node.uriTemplate.empty()) {
390
+ checkParametersEligibility<Resource>(node, pd, action.node.parameters, out);
391
+ }
392
+
393
+ out.node.actions.push_back(action.node);
394
+
395
+ if (pd.exportSourceMap()) {
396
+ out.sourceMap.actions.collection.push_back(action.sourceMap);
397
+ }
398
+
399
+ return cur;
400
+ }
401
+
402
+ /** Process Parameters section */
403
+ static MarkdownNodeIterator processParameters(const MarkdownNodeIterator& node,
404
+ const MarkdownNodes& siblings,
405
+ SectionParserData& pd,
406
+ const ParseResultRef<Resource>& out) {
407
+
408
+ IntermediateParseResult<Parameters> parameters(out.report);
409
+
410
+ MarkdownNodeIterator cur = ParametersParser::parse(node, siblings, pd, parameters);
411
+
412
+ if (!parameters.node.empty()) {
413
+
414
+ checkParametersEligibility<Resource>(node, pd, parameters.node, out);
415
+ out.node.parameters.insert(out.node.parameters.end(), parameters.node.begin(), parameters.node.end());
416
+
417
+ if (pd.exportSourceMap()) {
418
+ out.sourceMap.parameters.collection.insert(out.sourceMap.parameters.collection.end(),
419
+ parameters.sourceMap.collection.begin(),
420
+ parameters.sourceMap.collection.end());
421
+ }
422
+ }
423
+
424
+ return cur;
425
+ }
426
+
427
+ /** Process Model section */
428
+ static MarkdownNodeIterator processModel(const MarkdownNodeIterator& node,
429
+ const MarkdownNodes& siblings,
430
+ SectionParserData& pd,
431
+ const ParseResultRef<Resource>& out) {
432
+
433
+ IntermediateParseResult<Payload> model(out.report);
434
+
435
+ MarkdownNodeIterator cur = PayloadParser::parse(node, siblings, pd, model);
436
+
437
+ // Check whether there isn't a model already
438
+ if (!out.node.model.name.empty()) {
439
+
440
+ // WARN: Model already defined
441
+ std::stringstream ss;
442
+ ss << "overshadowing previous model definition for '";
443
+
444
+ if (!out.node.name.empty()) {
445
+ ss << out.node.name << "(" << out.node.uriTemplate << ")";
446
+ } else {
447
+ ss << out.node.uriTemplate;
448
+ }
449
+
450
+ ss << "' resource, a resource can be represented by a single model only";
451
+
452
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
453
+ out.report.warnings.push_back(Warning(ss.str(),
454
+ DuplicateWarning,
455
+ sourceMap));
456
+ }
457
+
458
+ if (model.node.name.empty()) {
459
+
460
+ if (!out.node.name.empty()) {
461
+ model.node.name = out.node.name;
462
+
463
+ if (pd.exportSourceMap()) {
464
+ model.sourceMap.name = out.sourceMap.name;
465
+ }
466
+ } else {
467
+
468
+ // ERR: No name specified for resource model
469
+ std::stringstream ss;
470
+ ss << "resource model can be specified only for a named resource";
471
+ ss << ", name your resource, e.g. '# <resource name> [" << out.node.uriTemplate << "]'";
472
+
473
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
474
+ out.report.error = Error(ss.str(),
475
+ ModelError,
476
+ sourceMap);
477
+ }
478
+ }
479
+
480
+ ModelTable::iterator it = pd.modelTable.find(model.node.name);
481
+
482
+ if (it == pd.modelTable.end()) {
483
+
484
+ pd.modelTable[model.node.name] = model.node;
485
+
486
+ if (pd.exportSourceMap()) {
487
+ pd.modelSourceMapTable[model.node.name] = model.sourceMap;
488
+ }
489
+ } else {
490
+
491
+ // ERR: Model already defined
492
+ std::stringstream ss;
493
+ ss << "symbol '" << model.node.name << "' already defined";
494
+
495
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
496
+ out.report.error = Error(ss.str(),
497
+ ModelError,
498
+ sourceMap);
499
+ }
500
+
501
+ out.node.model = model.node;
502
+
503
+ if (pd.exportSourceMap()) {
504
+ out.sourceMap.model = model.sourceMap;
505
+ }
506
+
507
+ return cur;
508
+ }
509
+
510
+ /**
511
+ * \brief Given a list of elements, Check if a resource already exists with the given uri template
512
+ *
513
+ * \param elements Collection of elements
514
+ * \param uri The resource uri template to be checked
515
+ */
516
+ static bool isResourceDuplicate(const Elements& elements,
517
+ const URITemplate& uri) {
518
+
519
+ for (Elements::const_iterator it = elements.begin(); it != elements.end(); ++it) {
520
+
521
+ if (it->element == Element::ResourceElement &&
522
+ it->content.resource.uriTemplate == uri) {
523
+
524
+ return true;
525
+ }
526
+ }
527
+
528
+ return false;
529
+ }
530
+ };
531
+
532
+ /** Resource Section Parser */
533
+ typedef SectionParser<Resource, HeaderSectionAdapter> ResourceParser;
534
+ }
535
+
536
+ #endif
@@ -0,0 +1,48 @@
1
+ //
2
+ // Section.cc
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 5/14/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "Section.h"
10
+
11
+ using namespace snowcrash;
12
+
13
+ std::string snowcrash::SectionName(const SectionType& section) {
14
+
15
+ switch (section) {
16
+ case ModelSectionType:
17
+ case ModelBodySectionType:
18
+ return "model";
19
+
20
+ case RequestSectionType:
21
+ case RequestBodySectionType:
22
+ return "request";
23
+
24
+ case ResponseSectionType:
25
+ case ResponseBodySectionType:
26
+ return "response";
27
+
28
+ case BodySectionType:
29
+ case DanglingBodySectionType:
30
+ return "message-body";
31
+
32
+ case SchemaSectionType:
33
+ case DanglingSchemaSectionType:
34
+ return "message-schema";
35
+
36
+ case HeadersSectionType:
37
+ return "headers";
38
+
39
+ case MSONMixinSectionType:
40
+ return "mixin";
41
+
42
+ case MSONOneOfSectionType:
43
+ return "one of";
44
+
45
+ default:
46
+ return "section";
47
+ }
48
+ }
@@ -0,0 +1,60 @@
1
+ //
2
+ // Section.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 11/1/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_SECTION_H
10
+ #define SNOWCRASH_SECTION_H
11
+
12
+ #include <string>
13
+
14
+ namespace snowcrash {
15
+
16
+ /**
17
+ * API Blueprint Sections Types.
18
+ */
19
+ enum SectionType {
20
+ UndefinedSectionType = 0, /// < Undefined section
21
+ BlueprintSectionType, /// < Blueprint overview
22
+ DataStructureGroupSectionType, /// < Data Structure Group
23
+ ResourceGroupSectionType, /// < Resource group
24
+ ResourceSectionType, /// < Resource
25
+ ActionSectionType, /// < Action
26
+ RelationSectionType, /// < Link Relation
27
+ RequestSectionType, /// < Request
28
+ RequestBodySectionType, /// < Request & Payload body combined (abbrev)
29
+ ResponseSectionType, /// < Response
30
+ ResponseBodySectionType, /// < Response & Body combined (abbrev)
31
+ AttributesSectionType, /// < Attributes
32
+ ModelSectionType, /// < Model
33
+ ModelBodySectionType, /// < Model & Body combined (abbrev)
34
+ BodySectionType, /// < Payload Body
35
+ DanglingBodySectionType, /// < Dangling Body (unrecognised section considered to be Body)
36
+ SchemaSectionType, /// < Payload Schema
37
+ DanglingSchemaSectionType, /// < Dangling Schema (unrecognised section considered to be Schema)
38
+ HeadersSectionType, /// < Headers
39
+ ForeignSectionType, /// < Foreign, unexpected section
40
+ ParametersSectionType, /// < Parameters
41
+ ParameterSectionType, /// < One Parameter definition
42
+ MSONParameterSectionType, /// < One Parameter definition using the MSON syntax
43
+ ValuesSectionType, /// < Value enumeration
44
+ ValueSectionType, /// < One Value
45
+ MSONMixinSectionType, /// < MSON Mixin
46
+ MSONNamedTypeSectionType, /// < MSON Named Type
47
+ MSONOneOfSectionType, /// < MSON One Of
48
+ MSONPropertyMemberSectionType, /// < MSON Property Member Type
49
+ MSONSampleDefaultSectionType, /// < MSON Sample/Default Type Section
50
+ MSONPropertyMembersSectionType, /// < MSON Property Members Type Section
51
+ MSONValueMembersSectionType, /// < MSON Value Members Type Section
52
+ MSONValueMemberSectionType, /// < MSON Value Member Type
53
+ MSONSectionType /// < MSON Property Member or Value Member
54
+ };
55
+
56
+ /** \return Human readable name for given %SectionType */
57
+ extern std::string SectionName(const SectionType& section);
58
+ }
59
+
60
+ #endif