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,26 @@
1
+ //
2
+ // RefractDataStructure.h
3
+ // drafter
4
+ //
5
+ // Created by Jiri Kratochvil on 18/05/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_REFRACTDATASTRUCTURE_H
10
+ #define DRAFTER_REFRACTDATASTRUCTURE_H
11
+
12
+ #include "Serialize.h"
13
+
14
+ namespace drafter {
15
+
16
+ class ConversionContext;
17
+
18
+ refract::IElement* MSONToRefract(const NodeInfo<snowcrash::DataStructure>& dataStructure, ConversionContext& context);
19
+ refract::IElement* ExpandRefract(refract::IElement* element, ConversionContext& context);
20
+
21
+ sos::Object SerializeRefract(refract::IElement*, ConversionContext& context);
22
+
23
+ }
24
+
25
+ #endif // #ifndef DRAFTER_REFRACTDATASTRUCTURE_H
26
+
@@ -0,0 +1,107 @@
1
+ #include "RefractElementFactory.h"
2
+ #include "refract/Element.h"
3
+
4
+ #include "Serialize.h" // LiteralTo<>
5
+ #include "SourceAnnotation.h" // mson::Error
6
+
7
+ namespace drafter {
8
+
9
+ template <typename E, typename V = typename E::ValueType>
10
+ struct RefractElementFactoryImpl : RefractElementFactory
11
+ {
12
+
13
+ RefractElementFactoryImpl() {}
14
+
15
+ virtual refract::IElement* Create(const std::string& literal, FactoryCreateMethod method) const
16
+ {
17
+ E* element = new E;
18
+
19
+ if (literal.empty()) {
20
+ return element;
21
+ }
22
+
23
+ switch (method) {
24
+ case eSample: {
25
+ refract::ArrayElement* samples = new refract::ArrayElement;
26
+ std::pair<bool, typename E::ValueType> value = LiteralTo<typename E::ValueType>(literal);
27
+ if (value.first) {
28
+ samples->push_back(refract::IElement::Create(value.second));
29
+ }
30
+ element->attributes[SerializeKey::Samples] = samples;
31
+ }
32
+ break;
33
+
34
+ case eValue: {
35
+ std::pair<bool, V> value = LiteralTo<V>(literal);
36
+ if (value.first) {
37
+ element->set(value.second);
38
+ }
39
+ }
40
+ break;
41
+
42
+ case eElement:
43
+ element->element(literal);
44
+ break;
45
+
46
+ }
47
+
48
+ return element;
49
+ }
50
+ };
51
+
52
+ template <typename E>
53
+ struct RefractElementFactoryImpl<E, refract::RefractElements> : RefractElementFactory
54
+ {
55
+
56
+ RefractElementFactoryImpl() {}
57
+
58
+ virtual refract::IElement* Create(const std::string& literal, FactoryCreateMethod method) const
59
+ {
60
+ if (method == eSample) {
61
+ refract::StringElement* element = new refract::StringElement;
62
+ element->element(SerializeKey::Generic);
63
+ element->set(literal);
64
+ return element;
65
+ }
66
+
67
+ E* element = new E;
68
+
69
+ if (!literal.empty()) {
70
+ element->element(literal);
71
+ }
72
+
73
+ return element;
74
+ }
75
+ };
76
+
77
+ const RefractElementFactory& FactoryFromType(const mson::BaseTypeName typeName)
78
+ {
79
+
80
+ static const RefractElementFactoryImpl<refract::BooleanElement> boolFactory;
81
+ static const RefractElementFactoryImpl<refract::NumberElement> numberFactory;
82
+ static const RefractElementFactoryImpl<refract::StringElement> stringFactory;
83
+ static const RefractElementFactoryImpl<refract::EnumElement> enumFactory;
84
+ static const RefractElementFactoryImpl<refract::ArrayElement> arrayFactory;
85
+ static const RefractElementFactoryImpl<refract::ObjectElement> objectFactory;
86
+
87
+ switch (typeName) {
88
+ case mson::BooleanTypeName:
89
+ return boolFactory;
90
+ case mson::NumberTypeName:
91
+ return numberFactory;
92
+ case mson::StringTypeName:
93
+ return stringFactory;
94
+ case mson::ArrayTypeName:
95
+ return arrayFactory;
96
+ case mson::EnumTypeName:
97
+ return enumFactory;
98
+ case mson::ObjectTypeName:
99
+ case mson::UndefinedTypeName:
100
+ return objectFactory;
101
+ default:
102
+ ; // do nothing
103
+ }
104
+
105
+ throw snowcrash::Error("unknown mson type", snowcrash::ApplicationError);
106
+ }
107
+ }
@@ -0,0 +1,67 @@
1
+ //
2
+ // RefractElementFactory.h
3
+ // drafter
4
+ //
5
+ // Created by Jiri Kratochvil on 04-03-2016
6
+ // Copyright (c) 2016 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_REFRACTELEMENTFACTORY_H
10
+ #define DRAFTER_REFRACTELEMENTFACTORY_H
11
+
12
+ #include <string>
13
+ #include "MSON.h"
14
+
15
+ namespace refract {
16
+ struct IElement;
17
+ }
18
+
19
+ namespace drafter {
20
+
21
+ /**
22
+ * This interface is used while conversion from legacy AST
23
+ * into refract tree.
24
+ *
25
+ * For usage see test/test-ElementFactoryTest.cc
26
+ *
27
+ * WARNING:
28
+ * There is little bit different behavior for primitives and for complex elements.
29
+ *
30
+ * For any case:
31
+ * - if `literal` is empty - return __empty__ element of required type
32
+ *
33
+ * For primitives (string|number|bool):
34
+ * - `sample` eValue - return typed element with __value__ set via `ToLiteral<>` conversion
35
+ * - `sample` eSample - return typed element with __attributes.samples__ set via `ToLiteral<>` conversion
36
+ * - `sample` eElement - return typed element with set __element name__ to `literal`
37
+ *
38
+ * For complex elements (object|array|enum):
39
+ * - `sample` eSample - return StringElement with name __generic__ with value set to `literal`
40
+ * - `sample` eValue|eElement - return return typed element with set __element name__ to `literal`
41
+ *
42
+ * This inconsistent behavior is determined by rules of converting legacy AST to Refract.
43
+ *
44
+ * Code will be deprecated (refactoring or remove) after remove legacy AST.
45
+ */
46
+
47
+ enum FactoryCreateMethod {
48
+ eValue,
49
+ eSample,
50
+ eElement,
51
+ };
52
+
53
+ struct RefractElementFactory
54
+ {
55
+ virtual ~RefractElementFactory() {}
56
+ virtual refract::IElement* Create(const std::string& literal, FactoryCreateMethod type) const = 0;
57
+ };
58
+
59
+ /**
60
+ * Do not change const return type!!!
61
+ * it is due to thread safety
62
+ */
63
+ const RefractElementFactory& FactoryFromType(const mson::BaseTypeName typeName);
64
+
65
+ }
66
+
67
+ #endif /* #ifndef DRAFTER_REFRACTELEMENTFACTORY_H */
@@ -0,0 +1,29 @@
1
+ #include "RefractSourceMap.h"
2
+
3
+ static refract::IElement* CharacterRangeToRefract(const mdp::CharactersRange& sourceMap)
4
+ {
5
+ refract::ArrayElement* range = new refract::ArrayElement;
6
+
7
+ range->push_back(refract::IElement::Create(sourceMap.location));
8
+ range->push_back(refract::IElement::Create(sourceMap.length));
9
+
10
+ return range;
11
+ }
12
+
13
+ refract::IElement* drafter::SourceMapToRefract(const mdp::CharactersRangeSet& sourceMap)
14
+ {
15
+ refract::ArrayElement* sourceMapElement = new refract::ArrayElement;
16
+ sourceMapElement->element(SerializeKey::SourceMap);
17
+
18
+ refract::ArrayElement::ValueType ranges;
19
+ std::transform(sourceMap.begin(), sourceMap.end(), std::back_inserter(ranges), CharacterRangeToRefract);
20
+
21
+ sourceMapElement->renderType(refract::IElement::rCompactContent);
22
+ sourceMapElement->set(ranges);
23
+
24
+ refract::ArrayElement* element = new refract::ArrayElement;
25
+ element->push_back(sourceMapElement);
26
+
27
+ return element;
28
+ }
29
+
@@ -0,0 +1,57 @@
1
+ //
2
+ // RefractSourceMap.h
3
+ // drafter
4
+ //
5
+ // Created by Jiri Kratochvil on 31/07/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_REFRACTSOURCEMAP_H
10
+ #define DRAFTER_REFRACTSOURCEMAP_H
11
+
12
+ #include "Serialize.h"
13
+
14
+ namespace drafter {
15
+
16
+ refract::IElement* SourceMapToRefract(const mdp::CharactersRangeSet& sourceMap);
17
+
18
+ template<typename T>
19
+ void AttachSourceMap(refract::IElement* element, const T& nodeInfo)
20
+ {
21
+ if (!nodeInfo.sourceMap->sourceMap.empty()) {
22
+ element->attributes[SerializeKey::SourceMap] = SourceMapToRefract(nodeInfo.sourceMap->sourceMap);
23
+ }
24
+ }
25
+
26
+ template<typename T>
27
+ refract::IElement* PrimitiveToRefract(const NodeInfo<T>& primitive)
28
+ {
29
+ typedef typename refract::ElementTypeSelector<T>::ElementType ElementType;
30
+
31
+ ElementType* element = refract::IElement::Create(*primitive.node);
32
+
33
+ AttachSourceMap(element, primitive);
34
+
35
+ return element;
36
+ }
37
+
38
+ class ConversionContext;
39
+
40
+ template<typename T>
41
+ refract::IElement* LiteralToRefract(const NodeInfo<std::string>& literal, ConversionContext& context)
42
+ {
43
+ std::pair<bool, T> parsed = LiteralTo<T>(*literal.node);
44
+
45
+ typename refract::ElementTypeSelector<T>::ElementType* element = new typename refract::ElementTypeSelector<T>::ElementType;
46
+ if (parsed.first) {
47
+ element->set(parsed.second);
48
+ }
49
+
50
+ AttachSourceMap(element, literal);
51
+
52
+ return element;
53
+ }
54
+
55
+ }
56
+
57
+ #endif // #ifndef DRAFTER_REFRACTSOURCEMAP_H
@@ -0,0 +1,157 @@
1
+ //
2
+ // Render.cc
3
+ // drafter
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 18/08/15.
6
+ // Copyright (c) 2015 Apiary. All rights reserved.
7
+ //
8
+
9
+ #include "Render.h"
10
+ #include "RefractDataStructure.h"
11
+
12
+ #include "SourceAnnotation.h"
13
+ #include "BlueprintUtility.h"
14
+ #include "RegexMatch.h"
15
+
16
+ #include "ConversionContext.h"
17
+
18
+ #include "refract/RenderJSONVisitor.h"
19
+ #include "refract/JSONSchemaVisitor.h"
20
+
21
+ using namespace snowcrash;
22
+
23
+ namespace drafter {
24
+
25
+ RenderFormat findRenderFormat(const std::string& contentType) {
26
+
27
+ if (RegexMatch(contentType, JSONSchemaRegex)) {
28
+ return JSONSchemaRenderFormat;
29
+ }
30
+ else if (RegexMatch(contentType, JSONRegex)) {
31
+ return JSONRenderFormat;
32
+ }
33
+
34
+ return UndefinedRenderFormat;
35
+ }
36
+
37
+ std::string getContentTypeFromHeaders(const Headers& headers) {
38
+ Collection<Header>::const_iterator header;
39
+
40
+ header = std::find_if(headers.begin(), headers.end(),
41
+ std::bind(MatchFirstWith<Header, std::string>(), std::placeholders::_1, HTTPHeaderName::ContentType));
42
+
43
+ if (header != headers.end()) {
44
+ return header->second;
45
+ }
46
+
47
+ return "";
48
+ }
49
+
50
+ NodeInfoByValue<Asset> renderPayloadBody(const NodeInfo<Payload>& payload,
51
+ const NodeInfo<Action>& action,
52
+ ConversionContext& context) {
53
+
54
+ NodeInfoByValue<Asset> body = std::make_pair(payload.node->body, &payload.sourceMap->body);
55
+
56
+ NodeInfo<Attributes> payloadAttributes = MAKE_NODE_INFO(payload, attributes);
57
+ NodeInfo<Attributes> actionAttributes = MAKE_NODE_INFO(action, attributes);
58
+
59
+ // hold attributes via pointer - because problems with assignment in NodeInfo<>
60
+ NodeInfo<Attributes>* attributes = &payloadAttributes;
61
+
62
+ if (payload.node->attributes.empty() && !action.isNull() && !action.node->attributes.empty()) {
63
+ attributes = &actionAttributes;
64
+ }
65
+
66
+ RenderFormat renderFormat = findRenderFormat(getContentTypeFromHeaders(payload.node->headers));
67
+
68
+ // Only continue down if we have a render format
69
+ if (!payload.node->body.empty() || attributes->node->empty() || renderFormat == UndefinedRenderFormat) {
70
+ return body;
71
+ }
72
+
73
+ // Expand MSON into Refract
74
+ refract::IElement* element = MSONToRefract(*attributes, context);
75
+
76
+ if (!element) {
77
+ return body;
78
+ }
79
+
80
+ refract::IElement* expanded = ExpandRefract(element, context);
81
+
82
+ if (!expanded) {
83
+ return body;
84
+ }
85
+
86
+ // One of this will always execute since we have a catch above for not having render format
87
+ switch (renderFormat) {
88
+ case JSONRenderFormat:
89
+ {
90
+ refract::RenderJSONVisitor renderer;
91
+ refract::Visit(renderer, *expanded);
92
+
93
+ delete expanded;
94
+
95
+ return std::make_pair(renderer.getString(), NodeInfo<Asset>::NullSourceMap());
96
+ }
97
+
98
+ case JSONSchemaRenderFormat:
99
+ {
100
+ refract::JSONSchemaVisitor renderer;
101
+ std::string result = renderer.getSchema(*expanded);
102
+
103
+ delete expanded;
104
+
105
+ return std::make_pair(result, NodeInfo<Asset>::NullSourceMap());
106
+ }
107
+
108
+ case UndefinedRenderFormat:
109
+ break;
110
+ }
111
+
112
+ // Throw exception
113
+ throw snowcrash::Error("unknown content type for messageBody to be rendered", snowcrash::ApplicationError);
114
+ }
115
+
116
+ NodeInfoByValue<Asset> renderPayloadSchema(const NodeInfo<snowcrash::Payload>& payload,
117
+ const NodeInfo<snowcrash::Action>& action,
118
+ ConversionContext& context) {
119
+
120
+ NodeInfoByValue<Asset> schema = std::make_pair(payload.node->schema, &payload.sourceMap->schema);
121
+
122
+ NodeInfo<Attributes> payloadAttributes = MAKE_NODE_INFO(payload, attributes);
123
+ NodeInfo<Attributes> actionAttributes = MAKE_NODE_INFO(action, attributes);
124
+
125
+ // hold attributes via pointer - because problems with assignment in NodeInfo<>
126
+ NodeInfo<Attributes>* attributes = &payloadAttributes;
127
+
128
+ if (payload.node->attributes.empty() && !action.isNull() && !action.node->attributes.empty()) {
129
+ attributes = &actionAttributes;
130
+ }
131
+
132
+ // Generate Schema only if Body content type is JSON
133
+ if (!payload.node->schema.empty() || payload.node->attributes.empty() ||
134
+ findRenderFormat(getContentTypeFromHeaders(payload.node->headers)) != JSONRenderFormat) {
135
+
136
+ return schema;
137
+ }
138
+
139
+ refract::JSONSchemaVisitor renderer;
140
+ refract::IElement* element = MSONToRefract(*attributes, context);
141
+
142
+ if (!element) {
143
+ return schema;
144
+ }
145
+
146
+ refract::IElement* expanded = ExpandRefract(element, context);
147
+
148
+ if (!expanded) {
149
+ return schema;
150
+ }
151
+
152
+ std::string result = renderer.getSchema(*expanded);
153
+ delete expanded;
154
+
155
+ return std::make_pair(result, NodeInfo<Asset>::NullSourceMap());
156
+ }
157
+ }
@@ -0,0 +1,40 @@
1
+ //
2
+ // Render.h
3
+ // drafter
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 17/06/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_RENDER_H
10
+ #define DRAFTER_RENDER_H
11
+
12
+ #include "Serialize.h"
13
+
14
+ namespace drafter {
15
+
16
+ const char* const JSONSchemaContentType = "application/schema+json";
17
+ const char* const JSONRegex = "^[[:blank:]]*application/(.*\\+)?json[[:blank:]]*(;.*|$)";
18
+ const char* const JSONSchemaRegex = "^[[:blank:]]*application/schema\\+json[[:blank:]]*(;.*|$)";
19
+
20
+ enum RenderFormat {
21
+ UndefinedRenderFormat = 0, // Undefined format
22
+ JSONRenderFormat = 1, // JSON format
23
+ JSONSchemaRenderFormat = 2 // JSON Schema format
24
+ };
25
+
26
+ class ConversionContext;
27
+
28
+ RenderFormat findRenderFormat(const std::string& contentType);
29
+ std::string getContentTypeFromHeaders(const snowcrash::Headers& headers);
30
+
31
+ NodeInfoByValue<snowcrash::Asset> renderPayloadBody(const NodeInfo<snowcrash::Payload>& payload,
32
+ const NodeInfo<snowcrash::Action>& action,
33
+ ConversionContext& context);
34
+
35
+ NodeInfoByValue<snowcrash::Asset> renderPayloadSchema(const NodeInfo<snowcrash::Payload>& payload,
36
+ const NodeInfo<snowcrash::Action>& action,
37
+ ConversionContext& context);
38
+ }
39
+
40
+ #endif
@@ -0,0 +1,160 @@
1
+ //
2
+ // Serialize.cc
3
+ // drafter
4
+ //
5
+ // Created by Zdenek Nemec on 5/3/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "Serialize.h"
10
+ #include "StringUtility.h"
11
+
12
+ #include <cstdlib>
13
+
14
+ using namespace drafter;
15
+
16
+ namespace drafter {
17
+
18
+ refract::ArrayElement* CreateArrayElement(refract::IElement* value, bool rFull)
19
+ {
20
+ refract::ArrayElement* array = new refract::ArrayElement;
21
+
22
+ if (rFull) {
23
+ value->renderType(refract::IElement::rFull);
24
+ }
25
+
26
+ array->push_back(value);
27
+ return array;
28
+ }
29
+ }
30
+
31
+ const std::string SerializeKey::Metadata = "metadata";
32
+ const std::string SerializeKey::Reference = "reference";
33
+ const std::string SerializeKey::Id = "id";
34
+ const std::string SerializeKey::Name = "name";
35
+ const std::string SerializeKey::Description = "description";
36
+ const std::string SerializeKey::DataStructure = "dataStructure";
37
+ const std::string SerializeKey::DataStructures = "dataStructures";
38
+ const std::string SerializeKey::ResourceGroup = "resourceGroup";
39
+ const std::string SerializeKey::ResourceGroups = "resourceGroups";
40
+ const std::string SerializeKey::Resource = "resource";
41
+ const std::string SerializeKey::Resources = "resources";
42
+ const std::string SerializeKey::URI = "uri";
43
+ const std::string SerializeKey::URITemplate = "uriTemplate";
44
+ const std::string SerializeKey::Assets = "assets";
45
+ const std::string SerializeKey::Actions = "actions";
46
+ const std::string SerializeKey::Action = "action";
47
+ const std::string SerializeKey::Relation = "relation";
48
+ const std::string SerializeKey::Attributes = "attributes";
49
+ const std::string SerializeKey::Method = "method";
50
+ const std::string SerializeKey::Examples = "examples";
51
+ const std::string SerializeKey::Requests = "requests";
52
+ const std::string SerializeKey::Responses = "responses";
53
+ const std::string SerializeKey::Body = "body";
54
+ const std::string SerializeKey::Schema = "schema";
55
+ const std::string SerializeKey::Headers = "headers";
56
+ const std::string SerializeKey::Model = "model";
57
+ const std::string SerializeKey::Value = "value";
58
+ const std::string SerializeKey::Parameters = "parameters";
59
+ const std::string SerializeKey::Type = "type";
60
+ const std::string SerializeKey::Required = "required";
61
+ const std::string SerializeKey::Default = "default";
62
+ const std::string SerializeKey::Nullable = "nullable";
63
+ const std::string SerializeKey::Example = "example";
64
+ const std::string SerializeKey::Values = "values";
65
+
66
+ const std::string SerializeKey::Source = "source";
67
+ const std::string SerializeKey::Resolved = "resolved";
68
+
69
+ const std::string SerializeKey::Element = "element";
70
+ const std::string SerializeKey::Role = "role";
71
+
72
+ const std::string SerializeKey::Version = "_version";
73
+ const std::string SerializeKey::Ast = "ast";
74
+ const std::string SerializeKey::Sourcemap= "sourcemap";
75
+ const std::string SerializeKey::Error = "error";
76
+ const std::string SerializeKey::Warning = "warning";
77
+ const std::string SerializeKey::Warnings = "warnings";
78
+ const std::string SerializeKey::AnnotationCode = "code";
79
+ const std::string SerializeKey::AnnotationMessage = "message";
80
+ const std::string SerializeKey::AnnotationLocation = "location";
81
+ const std::string SerializeKey::AnnotationLocationIndex = "index";
82
+ const std::string SerializeKey::AnnotationLocationLength = "length";
83
+
84
+ const std::string SerializeKey::Variable = "variable";
85
+ const std::string SerializeKey::Content = "content";
86
+ const std::string SerializeKey::Meta = "meta";
87
+ const std::string SerializeKey::Title = "title";
88
+ const std::string SerializeKey::Classes = "classes";
89
+ const std::string SerializeKey::Samples = "samples";
90
+ const std::string SerializeKey::TypeAttributes = "typeAttributes";
91
+ const std::string SerializeKey::Optional = "optional";
92
+ const std::string SerializeKey::Fixed = "fixed";
93
+ const std::string SerializeKey::FixedType = "fixedType";
94
+ const std::string SerializeKey::True = "true";
95
+ const std::string SerializeKey::Generic = "generic";
96
+ const std::string SerializeKey::Enum = "enum";
97
+ const std::string SerializeKey::Ref = "ref";
98
+ const std::string SerializeKey::Href = "href";
99
+ const std::string SerializeKey::Path = "path";
100
+
101
+ const std::string SerializeKey::Category = "category";
102
+ const std::string SerializeKey::Copy = "copy";
103
+ const std::string SerializeKey::API = "api";
104
+ const std::string SerializeKey::User = "user";
105
+ const std::string SerializeKey::Transition = "transition";
106
+ const std::string SerializeKey::HrefVariables = "hrefVariables";
107
+ const std::string SerializeKey::HTTPHeaders = "httpHeaders";
108
+ const std::string SerializeKey::HTTPTransaction = "httpTransaction";
109
+ const std::string SerializeKey::ContentType = "contentType";
110
+ const std::string SerializeKey::HTTPResponse = "httpResponse";
111
+ const std::string SerializeKey::HTTPRequest = "httpRequest";
112
+ const std::string SerializeKey::StatusCode = "statusCode";
113
+ const std::string SerializeKey::Asset = "asset";
114
+ const std::string SerializeKey::MessageBody = "messageBody";
115
+ const std::string SerializeKey::MessageBodySchema = "messageBodySchema";
116
+ const std::string SerializeKey::Data = "data";
117
+
118
+ const std::string SerializeKey::ParseResult = "parseResult";
119
+ const std::string SerializeKey::Annotation = "annotation";
120
+ const std::string SerializeKey::SourceMap = "sourceMap";
121
+
122
+
123
+ namespace drafter {
124
+
125
+ template <>
126
+ std::pair<bool, bool> LiteralTo<bool>(const mson::Literal& literal)
127
+ {
128
+ bool valid = false;
129
+ if (literal == "true" || literal == "false") {
130
+ valid = true;
131
+ }
132
+ return std::make_pair(valid, literal == SerializeKey::True);
133
+ }
134
+
135
+ template <>
136
+ std::pair<bool, double> LiteralTo<double>(const mson::Literal& literal)
137
+ {
138
+ char* pos = 0;
139
+ bool valid = false;
140
+ double value = 0;
141
+
142
+ value = std::strtod(literal.c_str(), &pos);
143
+ const char* end = literal.c_str() + literal.length();
144
+ if (pos == end) {
145
+ valid = true;
146
+ }
147
+ else {
148
+ // check for trailing whitespaces
149
+ valid = (literal.end() != std::find_if(literal.begin() + (end-pos), literal.end(), ::isspace));
150
+ }
151
+
152
+ return std::make_pair(valid, value);
153
+ }
154
+
155
+ template <>
156
+ std::pair<bool, std::string> LiteralTo<std::string>(const mson::Literal& literal)
157
+ {
158
+ return std::make_pair(!literal.empty(), literal);
159
+ }
160
+ };