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,276 @@
1
+ //
2
+ // CodeBlockUtility.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 11/10/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_CODEBLOCKUTILITY_H
10
+ #define SNOWCRASH_CODEBLOCKUTILITY_H
11
+
12
+ #include <sstream>
13
+ #include "Section.h"
14
+ #include "StringUtility.h"
15
+
16
+ namespace snowcrash {
17
+
18
+ struct CodeBlockUtility {
19
+
20
+ /**
21
+ * \brief Expected indentation level of a code block.
22
+ *
23
+ * \param type Section type to retrieve the indentation level for
24
+ * \return Indentation level (number of tabs) for a block to be
25
+ * considered a pre-formatted code block in given section.
26
+ */
27
+ static size_t codeBlockIndentationLevel(const SectionType& type)
28
+ {
29
+ if (type == BlueprintSectionType ||
30
+ type == ResourceGroupSectionType ||
31
+ type == ResourceSectionType ||
32
+ type == ActionSectionType) {
33
+
34
+ return 1;
35
+ }
36
+ else if (type == RequestBodySectionType ||
37
+ type == ResponseBodySectionType ||
38
+ type == ModelBodySectionType) {
39
+
40
+ return 2;
41
+ }
42
+ else {
43
+
44
+ return 3;
45
+ }
46
+ }
47
+
48
+ /**
49
+ * \brief Retrieve the textual content of a Markdown node as if it was a code block.
50
+ * \param pd Parser status
51
+ * \param report Report log
52
+ * \param conten The content retrieved
53
+ */
54
+ static void contentAsCodeBlock(const MarkdownNodeIterator& node,
55
+ const SectionParserData& pd,
56
+ Report& report,
57
+ mdp::ByteBuffer& content) {
58
+
59
+ checkPossibleReference(node, pd, report);
60
+
61
+ if (node->type == mdp::CodeMarkdownNodeType) {
62
+ content += node->text;
63
+
64
+ checkExcessiveIndentation(node, pd, report);
65
+ return;
66
+ }
67
+
68
+ // Other blocks, process & warn
69
+ content += mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
70
+
71
+ // WARN: Not a preformatted code block
72
+ size_t level = codeBlockIndentationLevel(pd.parentSectionContext());
73
+ std::stringstream ss;
74
+ ss << SectionName(pd.sectionContext());
75
+
76
+ if (pd.sectionContext() == BodySectionType) {
77
+ ss << " asset";
78
+ }
79
+
80
+ ss << " is expected to be a pre-formatted code block, every of its line indented by exactly ";
81
+ ss << level * 4 << " spaces or " << level << " tabs";
82
+
83
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
84
+ report.warnings.push_back(Warning(ss.str(),
85
+ IndentationWarning,
86
+ sourceMap));
87
+ }
88
+
89
+ /** \brief Retrieve the textual content of a signature markdown */
90
+ static void signatureContentAsCodeBlock(const MarkdownNodeIterator& node,
91
+ const SectionParserData& pd,
92
+ Report& report,
93
+ mdp::ByteBuffer& content) {
94
+
95
+ mdp::ByteBuffer remainingContent;
96
+ GetFirstLine(node->text, remainingContent);
97
+
98
+ if (remainingContent.empty())
99
+ return;
100
+
101
+ content += remainingContent;
102
+ content += "\n";
103
+
104
+ // WARN: Not a preformatted code block but multiline signature
105
+ size_t level = codeBlockIndentationLevel(pd.parentSectionContext());
106
+ std::stringstream ss;
107
+
108
+ ss << SectionName(pd.sectionContext());
109
+
110
+ if (pd.sectionContext() == BodySectionType) {
111
+ ss << " asset";
112
+ }
113
+
114
+ ss << " is expected to be a pre-formatted code block, separate it by a newline and ";
115
+ ss << "indent every of its line by ";
116
+ ss << level * 4 << " spaces or " << level << " tabs";
117
+
118
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
119
+ report.warnings.push_back(Warning(ss.str(),
120
+ IndentationWarning,
121
+ sourceMap));
122
+ }
123
+
124
+ /**
125
+ * \brief Check for potential excessive indentation of a list section
126
+ * \return True if code block contains a recognized list section, false otherwise.
127
+ */
128
+ static bool checkExcessiveIndentation(const MarkdownNodeIterator& node,
129
+ const SectionParserData& pd,
130
+ Report& report) {
131
+
132
+ // Check for possible superfluous indentation of a recognized list items.
133
+ mdp::ByteBuffer r;
134
+ mdp::ByteBuffer line = GetFirstLine(node->text, r);
135
+ TrimString(line);
136
+
137
+ // If line appears to be a Markdown list.
138
+ if (line.empty() ||
139
+ (line[0] != '-' && line[0] != '+' && line[0] != '*'))
140
+ return false;
141
+
142
+ // Skip leading Markdown list item mark
143
+ std::string signature = line.substr(1, std::string::npos);
144
+ TrimStringStart(signature);
145
+
146
+ SectionType type = RecognizeCodeBlockFirstLine(signature);
147
+
148
+ if (type != UndefinedSectionType) {
149
+
150
+ // Check signature.
151
+ size_t level = codeBlockIndentationLevel(pd.sectionContext());
152
+ --level;
153
+
154
+ // WARN: Superfluous indentation
155
+ std::stringstream ss;
156
+ ss << "excessive indentation, ";
157
+ ss << SectionName(type) << " ";
158
+
159
+ if (level) {
160
+ ss << "section is expected to be indented by just ";
161
+ ss << level * 4 << " spaces or " << level << " tab";
162
+
163
+ if (level > 1)
164
+ ss << "s";
165
+ }
166
+ else {
167
+ ss << "section is not expected to be indented";
168
+ }
169
+
170
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
171
+ report.warnings.push_back(Warning(ss.str(),
172
+ IndentationWarning,
173
+ sourceMap));
174
+ }
175
+
176
+ return false;
177
+ }
178
+
179
+ /**
180
+ * \brief Parse one line of raw `key:value` data.
181
+ * \param line A line to parse
182
+ * \param keyValuePair The output buffer to place the parsed data into
183
+ * \return True on success, false otherwise
184
+ */
185
+ static bool keyValueFromLine(const mdp::ByteBuffer& line,
186
+ KeyValuePair& keyValuePair) {
187
+
188
+ std::vector<std::string> rawMetadata = SplitOnFirst(line, ':');
189
+ if (rawMetadata.size() != 2)
190
+ return false;
191
+
192
+ keyValuePair = std::make_pair(rawMetadata[0], rawMetadata[1]);
193
+ TrimString(keyValuePair.first);
194
+ TrimString(keyValuePair.second);
195
+
196
+ return (!keyValuePair.first.empty() && !keyValuePair.second.empty());
197
+ }
198
+
199
+ /**
200
+ * \brief Add dangling message body asset to the given string
201
+ * \param out The string to which the dangling asset should be added
202
+ * \param outSM The source map to which source map should be added
203
+ * \return asset The value of the asset
204
+ */
205
+ static mdp::ByteBuffer addDanglingAsset(const MarkdownNodeIterator& node,
206
+ SectionParserData& pd,
207
+ SectionType& sectionType,
208
+ Report& report,
209
+ mdp::ByteBuffer& out) {
210
+
211
+ mdp::ByteBuffer asset;
212
+
213
+ if (node->type == mdp::CodeMarkdownNodeType) {
214
+ asset = node->text;
215
+ } else {
216
+ asset = mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
217
+ }
218
+
219
+ TwoNewLines(asset);
220
+ out += asset;
221
+
222
+ size_t level = CodeBlockUtility::codeBlockIndentationLevel(sectionType);
223
+
224
+ if (node->type == mdp::CodeMarkdownNodeType)
225
+ level--; // Deduct one level for a code block
226
+
227
+ checkPossibleReference(node, pd, report);
228
+
229
+ if (level) {
230
+ // WARN: Dangling asset
231
+ std::stringstream ss;
232
+ ss << "dangling message-body asset, expected a pre-formatted code block, ";
233
+ ss << "indent every of it's line by " << level*4 << " spaces or " << level << " tabs";
234
+
235
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
236
+ report.warnings.push_back(Warning(ss.str(),
237
+ IndentationWarning,
238
+ sourceMap));
239
+ }
240
+
241
+ return asset;
242
+ }
243
+
244
+ /**
245
+ * \brief Check for potential resource model reference and warn about not recognizing them
246
+ * \return True if code block contains a resource model reference, false otherwise.
247
+ */
248
+ static bool checkPossibleReference(const MarkdownNodeIterator& node,
249
+ const SectionParserData& pd,
250
+ Report& report) {
251
+
252
+ mdp::ByteBuffer source = node->text;
253
+ Identifier symbol;
254
+
255
+ TrimString(source);
256
+
257
+ if(GetModelReference(source, symbol)) {
258
+
259
+ std::stringstream ss;
260
+ ss << "found a possible '" << symbol << "' model reference, ";
261
+ ss << "a reference must be directly in the " << SectionName(pd.sectionContext()) << " section, indented by 4 spaces or 1 tab, without any additional sections";
262
+
263
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
264
+ report.warnings.push_back(Warning(ss.str(),
265
+ IgnoringWarning,
266
+ sourceMap));
267
+
268
+ return true;
269
+ }
270
+
271
+ return false;
272
+ }
273
+ };
274
+ }
275
+
276
+ #endif
@@ -0,0 +1,157 @@
1
+ //
2
+ // DataStructureGroupParser.h
3
+ // snowcrash
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 02/12/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_DATASTRUCTUREGROUPPARSER_H
10
+ #define SNOWCRASH_DATASTRUCTUREGROUPPARSER_H
11
+
12
+ #include "MSONNamedTypeParser.h"
13
+
14
+ using namespace scpl;
15
+
16
+ namespace snowcrash {
17
+
18
+ /** Data structure group matching regex */
19
+ const char* const DataStructureGroupRegex = "^[[:blank:]]*[Dd]ata[[:blank:]]+[Ss]tructures?[[:blank:]]*$";
20
+
21
+ /**
22
+ * Data structure group section processor
23
+ */
24
+ template<>
25
+ struct SectionProcessor<DataStructureGroup> : public SectionProcessorBase<DataStructureGroup> {
26
+
27
+ NO_SECTION_DESCRIPTION(DataStructureGroup)
28
+
29
+ static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
30
+ const MarkdownNodes& siblings,
31
+ SectionParserData& pd,
32
+ const ParseResultRef<DataStructureGroup>& out) {
33
+
34
+ MarkdownNodeIterator cur = node;
35
+
36
+ if (pd.sectionContext() == MSONNamedTypeSectionType) {
37
+
38
+ IntermediateParseResult<mson::NamedType> namedType(out.report);
39
+ cur = MSONNamedTypeParser::parse(node, siblings, pd, namedType);
40
+
41
+ if (isNamedTypeDuplicate(pd.blueprint, namedType.node.name.symbol.literal)) {
42
+
43
+ // WARN: duplicate named type
44
+ std::stringstream ss;
45
+ ss << "named type with name '" << namedType.node.name.symbol.literal << "' already exists";
46
+
47
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
48
+ out.report.warnings.push_back(Warning(ss.str(),
49
+ DuplicateWarning,
50
+ sourceMap));
51
+ return cur;
52
+ }
53
+
54
+ Element element(Element::DataStructureElement);
55
+ element.content.dataStructure = namedType.node;
56
+
57
+ out.node.content.elements().push_back(element);
58
+
59
+ if (pd.exportSourceMap()) {
60
+
61
+ SourceMap<Element> elementSM(Element::DataStructureElement);
62
+
63
+ elementSM.content.dataStructure.name = namedType.sourceMap.name;
64
+ elementSM.content.dataStructure.typeDefinition = namedType.sourceMap.typeDefinition;
65
+ elementSM.content.dataStructure.sections = namedType.sourceMap.sections;
66
+
67
+ out.sourceMap.content.elements().collection.push_back(elementSM);
68
+ }
69
+ }
70
+
71
+ return cur;
72
+ }
73
+
74
+ static void finalize(const MarkdownNodeIterator& node,
75
+ SectionParserData& pd,
76
+ const ParseResultRef<DataStructureGroup>& out) {
77
+
78
+ out.node.element = Element::CategoryElement;
79
+ out.node.category = Element::DataStructureGroupCategory;
80
+
81
+ if (pd.exportSourceMap()) {
82
+
83
+ out.sourceMap.element = out.node.element;
84
+ out.sourceMap.category = out.node.category;
85
+ }
86
+ }
87
+
88
+ static SectionType sectionType(const MarkdownNodeIterator& node) {
89
+
90
+ if (node->type == mdp::HeaderMarkdownNodeType &&
91
+ !node->text.empty()) {
92
+
93
+ mdp::ByteBuffer remaining, subject = node->text;
94
+
95
+ subject = GetFirstLine(subject, remaining);
96
+ TrimString(subject);
97
+
98
+ if (RegexMatch(subject, DataStructureGroupRegex)) {
99
+ return DataStructureGroupSectionType;
100
+ }
101
+ }
102
+
103
+ return UndefinedSectionType;
104
+ }
105
+
106
+ static SectionType nestedSectionType(const MarkdownNodeIterator& node) {
107
+
108
+ return SectionProcessor<mson::NamedType>::sectionType(node);
109
+ }
110
+
111
+ static SectionTypes upperSectionTypes() {
112
+ return {DataStructureGroupSectionType, ResourceGroupSectionType, ResourceSectionType};
113
+ }
114
+
115
+ /**
116
+ * \brief Check if a named type already exists with the given name
117
+ *
118
+ * \param blueprint The blueprint which is formed until now
119
+ * \param name The named type name to be checked
120
+ */
121
+ static bool isNamedTypeDuplicate(const Blueprint& blueprint,
122
+ mdp::ByteBuffer& name) {
123
+
124
+ for (Elements::const_iterator it = blueprint.content.elements().begin();
125
+ it != blueprint.content.elements().end();
126
+ ++it) {
127
+
128
+ if (it->element == Element::CategoryElement) {
129
+
130
+ for (Elements::const_iterator subIt = it->content.elements().begin();
131
+ subIt != it->content.elements().end();
132
+ ++subIt) {
133
+
134
+ if (subIt->element == Element::ResourceElement &&
135
+ subIt->content.resource.attributes.name.symbol.literal == name) {
136
+
137
+ return true;
138
+ }
139
+
140
+ if (subIt->element == Element::DataStructureElement &&
141
+ subIt->content.dataStructure.name.symbol.literal == name) {
142
+
143
+ return true;
144
+ }
145
+ }
146
+ }
147
+ }
148
+
149
+ return false;
150
+ }
151
+ };
152
+
153
+ /** Data Structures Parser */
154
+ typedef SectionParser<DataStructureGroup, HeaderSectionAdapter> DataStructureGroupParser;
155
+ }
156
+
157
+ #endif
@@ -0,0 +1,49 @@
1
+ //
2
+ // HTTP.cc
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 7/11/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "HTTP.h"
10
+
11
+ using namespace snowcrash;
12
+
13
+ const std::string HTTPHeaderName::Accept = "Accept";
14
+ const std::string HTTPHeaderName::ContentLength = "Content-Length";
15
+ const std::string HTTPHeaderName::ContentType = "Content-Type";
16
+ const std::string HTTPHeaderName::TransferEncoding = "Transfer-Encoding";
17
+
18
+ const std::string HTTPHeaderName::SetCookie = "Set-Cookie";
19
+ const std::string HTTPHeaderName::Link = "Link";
20
+
21
+ const std::string HTTPMethodName::Head = "HEAD";
22
+ const std::string HTTPMethodName::Connect = "CONNECT";
23
+
24
+ StatusCodeTraits snowcrash::GetStatusCodeTrait(HTTPStatusCode code)
25
+ {
26
+ StatusCodeTraits traits;
27
+ traits.code = code;
28
+
29
+ // Following status codes MUST NOT contain response body
30
+ if (code == 204 || code == 304 || code/100 == 1) {
31
+ traits.allowBody = false;
32
+ }
33
+
34
+ return traits;
35
+ }
36
+
37
+ HTTPMethodTraits snowcrash::GetMethodTrait(HTTPMethod method)
38
+ {
39
+ HTTPMethodTraits traits;
40
+ traits.method = method;
41
+
42
+ // Following HTTP methods MUST NOT contain response body
43
+ // FIXME: When refactoring traits don't forget that 'CONNECT' has no body only when 1xx-2xx
44
+ if (method == HTTPMethodName::Head || method == HTTPMethodName::Connect) {
45
+ traits.allowBody = false;
46
+ }
47
+
48
+ return traits;
49
+ }
@@ -0,0 +1,108 @@
1
+ //
2
+ // HTTP.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 7/11/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_HTTP_H
10
+ #define SNOWCRASH_HTTP_H
11
+
12
+ #include <string>
13
+ #include "Blueprint.h"
14
+
15
+ /**
16
+ * \brief HTTP Methods
17
+ *
18
+ * Technical note: Using preprocessor macro instead of strict
19
+ * defined type due to C++98 string concatenation limitations.
20
+ * FIXME: To be improved with migration to C++11.
21
+ */
22
+ #define HTTP_REQUEST_METHOD "(GET|POST|PUT|DELETE|OPTIONS|PATCH|PROPPATCH|LOCK|UNLOCK|COPY|MOVE|MKCOL|HEAD|LINK|UNLINK|CONNECT)"
23
+
24
+ /**
25
+ * \brief URI Template.
26
+ *
27
+ * See previous technical note (using macro).
28
+ */
29
+ #define URI_TEMPLATE "(/.*)"
30
+
31
+ namespace snowcrash {
32
+
33
+ /**
34
+ * Selected HTTP Header names.
35
+ */
36
+ struct HTTPHeaderName {
37
+ static const std::string Accept;
38
+ static const std::string ContentLength;
39
+ static const std::string ContentType;
40
+ static const std::string TransferEncoding;
41
+
42
+ static const std::string SetCookie;
43
+ static const std::string Link;
44
+ };
45
+
46
+ /**
47
+ * Selected HTTP Method names.
48
+ */
49
+ struct HTTPMethodName {
50
+ static const std::string Head;
51
+ static const std::string Connect;
52
+ };
53
+
54
+ /**
55
+ * A HTTP Status code.
56
+ */
57
+ typedef unsigned int HTTPStatusCode;
58
+
59
+ /**
60
+ * Traits of a HTTP response.
61
+ */
62
+ struct HTTPResponseTraits {
63
+
64
+ bool allowBody; /// < Response body is allowed.
65
+
66
+ HTTPResponseTraits() : allowBody(true) {}
67
+ };
68
+
69
+ /**
70
+ * Response traits for a HTTP method.
71
+ *
72
+ * HTTP request method related response prescription
73
+ * Ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
74
+ */
75
+ struct HTTPMethodTraits : HTTPResponseTraits
76
+ {
77
+ HTTPMethod method;
78
+ HTTPMethodTraits() : method("") {}
79
+ };
80
+
81
+ /**
82
+ * Response traits for a HTTP status code.
83
+ *
84
+ * Status-related response prescription.
85
+ * Ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
86
+ */
87
+ struct StatusCodeTraits : HTTPResponseTraits
88
+ {
89
+ HTTPStatusCode code;
90
+ StatusCodeTraits() : code(0) {}
91
+ };
92
+
93
+ /**
94
+ * \brief Retrieve response traits for given HTTP method.
95
+ * \param method HTTP method to retrieve traits for.
96
+ * \return A %HTTPMethodTraits for given method.
97
+ */
98
+ extern HTTPMethodTraits GetMethodTrait(HTTPMethod method);
99
+
100
+ /**
101
+ * \brief Retrieve response traits for given status code.
102
+ * \param code A HTTP status code to retrieve traits for.
103
+ * \return A %StatusCodeTraits for given code.
104
+ */
105
+ extern StatusCodeTraits GetStatusCodeTrait(HTTPStatusCode code);
106
+ }
107
+
108
+ #endif