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,214 @@
1
+ //
2
+ // MSONValueMemberParser.cc
3
+ // snowcrash
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 11/13/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "MSONOneOfParser.h"
10
+ #include "MSONPropertyMemberParser.h"
11
+
12
+ namespace snowcrash {
13
+
14
+ /** Implementation of nestedSectionType */
15
+ SectionType SectionProcessor<mson::ValueMember>::nestedSectionType(const MarkdownNodeIterator& node) {
16
+
17
+ SectionType nestedType = UndefinedSectionType;
18
+
19
+ // Check if mson type section section
20
+ nestedType = SectionProcessor<mson::TypeSection>::sectionType(node);
21
+
22
+ if (nestedType != UndefinedSectionType) {
23
+ return nestedType;
24
+ }
25
+
26
+ // Check if mson mixin section
27
+ nestedType = SectionProcessor<mson::Mixin>::sectionType(node);
28
+
29
+ if (nestedType != UndefinedSectionType) {
30
+ return nestedType;
31
+ }
32
+
33
+ // Check if mson one of section
34
+ nestedType = SectionProcessor<mson::OneOf>::sectionType(node);
35
+
36
+ if (nestedType != UndefinedSectionType) {
37
+ return nestedType;
38
+ }
39
+
40
+ return MSONSectionType;
41
+ }
42
+
43
+ /** Implementation of resolveAndProcessMSONSection */
44
+ MarkdownNodeIterator SectionProcessor<mson::ValueMember>::processMSONSection(const MarkdownNodeIterator& node,
45
+ const MarkdownNodes& siblings,
46
+ SectionParserData& pd,
47
+ const ParseResultRef<mson::TypeSections>& sections,
48
+ mson::BaseType& baseType) {
49
+
50
+ MarkdownNodeIterator cur = node;
51
+
52
+ // If we encounter a header node, stop parsing. Headers which are not
53
+ // type section signatures are ineligible to be nested sections of a MSON section
54
+ if (node->type == mdp::HeaderMarkdownNodeType) {
55
+ return cur;
56
+ }
57
+
58
+ // If the nodes follow after some block description without member
59
+ // seperator, then they are treated as description
60
+ if (!sections.node.empty() && sections.node.back().klass == mson::TypeSection::BlockDescriptionClass) {
61
+ return SectionProcessor<mson::ValueMember>::blockDescription(node, pd, sections.node, sections.sourceMap);
62
+ }
63
+
64
+ // Try to resolve base type if not given
65
+ resolveImplicitBaseType(node, pd.sectionContext(), baseType);
66
+
67
+ // Build a section to indicate nested members
68
+ if (sections.node.empty() ||
69
+ (!sections.node.empty() && sections.node.back().klass != mson::TypeSection::MemberTypeClass)) {
70
+
71
+ mson::TypeSection typeSection(mson::TypeSection::MemberTypeClass);
72
+
73
+ typeSection.baseType = baseType;
74
+ sections.node.push_back(typeSection);
75
+
76
+ if (pd.exportSourceMap()) {
77
+
78
+ SourceMap<mson::TypeSection> typeSectionSM;
79
+ sections.sourceMap.collection.push_back(typeSectionSM);
80
+ }
81
+ }
82
+
83
+ mson::Element element;
84
+ SourceMap<mson::Element> elementSM;
85
+
86
+ if (pd.sectionContext() == MSONMixinSectionType) {
87
+
88
+ IntermediateParseResult<mson::Mixin> mixin(sections.report);
89
+ cur = MSONMixinParser::parse(node, siblings, pd, mixin);
90
+
91
+ if (!isSameBaseType(baseType, mixin.node.baseType)) {
92
+
93
+ // WARN: Mixin base type should be compatible with the parent base type
94
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
95
+ sections.report.warnings.push_back(Warning("mixin base type should be the same as parent base type. objects should contain object mixins. arrays should contain array mixins",
96
+ LogicalErrorWarning,
97
+ sourceMap));
98
+ }
99
+ else {
100
+ element.build(mixin.node);
101
+
102
+ if (pd.exportSourceMap()) {
103
+ elementSM.mixin = mixin.sourceMap;
104
+ }
105
+ }
106
+ }
107
+ else if (pd.sectionContext() == MSONOneOfSectionType) {
108
+
109
+ if (baseType != mson::ObjectBaseType &&
110
+ baseType != mson::ImplicitObjectBaseType) {
111
+
112
+ // WARN: One of can not be a nested member for a non object structure type
113
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
114
+ sections.report.warnings.push_back(Warning("one of may be a nested member of a object sub-types only",
115
+ LogicalErrorWarning,
116
+ sourceMap));
117
+
118
+ return cur;
119
+ }
120
+
121
+ IntermediateParseResult<mson::OneOf> oneOf(sections.report);
122
+ cur = MSONOneOfParser::parse(node, siblings, pd, oneOf);
123
+
124
+ element.build(oneOf.node);
125
+
126
+ if (pd.exportSourceMap()) {
127
+ elementSM = oneOf.sourceMap;
128
+ }
129
+ }
130
+ else {
131
+
132
+ if ((baseType == mson::ValueBaseType ||
133
+ baseType == mson::ImplicitValueBaseType) &&
134
+ node->type == mdp::ListItemMarkdownNodeType) {
135
+
136
+ IntermediateParseResult<mson::ValueMember> valueMember(sections.report);
137
+ cur = MSONValueMemberParser::parse(node, siblings, pd, valueMember);
138
+
139
+ element.build(valueMember.node);
140
+
141
+ if ((valueMember.node.valueDefinition.typeDefinition.baseType == mson::ImplicitObjectBaseType ||
142
+ valueMember.node.valueDefinition.typeDefinition.baseType == mson::ObjectBaseType) &&
143
+ !valueMember.node.valueDefinition.values.empty()) {
144
+ // WARN: object definition contain value
145
+ // e.g
146
+ // - a (array)
147
+ // - key (object)
148
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
149
+ sections.report.warnings.push_back(Warning("array member definition of type 'object' contains value. You should use type definition without value eg. '- (object)'",
150
+ LogicalErrorWarning,
151
+ sourceMap));
152
+ }
153
+
154
+ if (pd.exportSourceMap()) {
155
+ elementSM.value = valueMember.sourceMap;
156
+ }
157
+ }
158
+ else if ((baseType == mson::ObjectBaseType ||
159
+ baseType == mson::ImplicitObjectBaseType) &&
160
+ node->type == mdp::ListItemMarkdownNodeType) {
161
+
162
+ IntermediateParseResult<mson::PropertyMember> propertyMember(sections.report);
163
+ cur = MSONPropertyMemberParser::parse(node, siblings, pd, propertyMember);
164
+
165
+ element.build(propertyMember.node);
166
+
167
+ if ((propertyMember.node.valueDefinition.typeDefinition.baseType == mson::ImplicitObjectBaseType ||
168
+ propertyMember.node.valueDefinition.typeDefinition.baseType == mson::ObjectBaseType) &&
169
+ !propertyMember.node.valueDefinition.values.empty()) {
170
+ // WARN: object definition contain value
171
+ // e.g
172
+ // - key: value (object)
173
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
174
+ sections.report.warnings.push_back(Warning("'object' with value definition. You should use type definition without value eg. '- key (object)'",
175
+ LogicalErrorWarning,
176
+ sourceMap));
177
+ }
178
+
179
+ if (pd.exportSourceMap()) {
180
+ elementSM.property = propertyMember.sourceMap;
181
+ }
182
+ }
183
+ else if (baseType == mson::PrimitiveBaseType ||
184
+ baseType == mson::ImplicitPrimitiveBaseType) {
185
+
186
+ // WARN: Primitive type members should not have nested members
187
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
188
+ sections.report.warnings.push_back(Warning("sub-types of primitive types should not have nested members",
189
+ LogicalErrorWarning,
190
+ sourceMap));
191
+ }
192
+ else {
193
+
194
+ // WARN: Ignoring unrecognized block in mson nested members
195
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
196
+ sections.report.warnings.push_back(Warning("ignorning unrecognized block",
197
+ IgnoringWarning,
198
+ sourceMap));
199
+
200
+ cur = ++MarkdownNodeIterator(node);
201
+ }
202
+ }
203
+
204
+ if (element.klass != mson::Element::UndefinedClass) {
205
+ sections.node.back().content.elements().push_back(element);
206
+
207
+ if (pd.exportSourceMap()) {
208
+ sections.sourceMap.collection.back().elements().collection.push_back(elementSM);
209
+ }
210
+ }
211
+
212
+ return cur;
213
+ }
214
+ }
@@ -0,0 +1,390 @@
1
+ //
2
+ // MSONValueMemberParser.h
3
+ // snowcrash
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 10/22/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_MSONVALUEMEMBERPARSER_H
10
+ #define SNOWCRASH_MSONVALUEMEMBERPARSER_H
11
+
12
+ #include "SectionParser.h"
13
+ #include "MSONUtility.h"
14
+ #include "MSONTypeSectionParser.h"
15
+
16
+ using namespace scpl;
17
+
18
+ namespace snowcrash {
19
+
20
+ /**
21
+ * MSON Value Member Section Processor
22
+ */
23
+ template<>
24
+ struct SectionProcessor<mson::ValueMember> : public SignatureSectionProcessorBase<mson::ValueMember> {
25
+
26
+ static Signature parseSignature(const MarkdownNodeIterator& node,
27
+ snowcrash::SectionParserData& pd,
28
+ const SignatureTraits& traits,
29
+ snowcrash::Report& report,
30
+ const mdp::ByteBuffer& subjectOrig = "") {
31
+
32
+ std::string subject = subjectOrig;
33
+
34
+ if (node->type == mdp::HeaderMarkdownNodeType) {
35
+ subject = ReconstructMarkdownHeader(*node);
36
+ }
37
+
38
+ return SignatureSectionProcessorBase<mson::ValueMember>::parseSignature(node, pd, traits, report, subject);
39
+ }
40
+
41
+ static SignatureTraits signatureTraits() {
42
+
43
+ SignatureTraits signatureTraits(SignatureTraits::ValuesTrait |
44
+ SignatureTraits::AttributesTrait |
45
+ SignatureTraits::ContentTrait);
46
+
47
+ return signatureTraits;
48
+ }
49
+
50
+ static MarkdownNodeIterator finalizeSignature(const MarkdownNodeIterator& node,
51
+ SectionParserData& pd,
52
+ const Signature& signature,
53
+ const ParseResultRef<mson::ValueMember>& out) {
54
+
55
+ return SectionProcessor<mson::ValueMember>::useSignatureData(node, pd, signature, out.report, out.node, out.sourceMap);
56
+ }
57
+
58
+ static MarkdownNodeIterator processDescription(const MarkdownNodeIterator& node,
59
+ const MarkdownNodes& siblings,
60
+ SectionParserData& pd,
61
+ const ParseResultRef<mson::ValueMember>& out) {
62
+
63
+ return SectionProcessor<mson::ValueMember>::blockDescription(node, pd, out.node.sections, out.sourceMap.sections);
64
+ }
65
+
66
+ static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
67
+ const MarkdownNodes& siblings,
68
+ SectionParserData& pd,
69
+ const ParseResultRef<mson::ValueMember>& out) {
70
+
71
+ ParseResultRef<mson::TypeSections> typeSections(out.report, out.node.sections, out.sourceMap.sections);
72
+
73
+ return SectionProcessor<mson::ValueMember>
74
+ ::processNestedMembers<MSONTypeSectionListParser>(node, siblings, pd, typeSections,
75
+ out.node.valueDefinition.typeDefinition.baseType);
76
+ }
77
+
78
+ static bool isDescriptionNode(const MarkdownNodeIterator& node,
79
+ SectionType sectionType) {
80
+
81
+ if (SectionProcessor<mson::ValueMember>::nestedSectionType(node) != MSONSectionType ||
82
+ node->type == mdp::HeaderMarkdownNodeType) {
83
+
84
+ return false;
85
+ }
86
+
87
+ if (node->type != mdp::ListItemMarkdownNodeType) {
88
+ return true;
89
+ }
90
+
91
+ return SectionProcessorBase<mson::ValueMember>::isDescriptionNode(node, sectionType);
92
+ }
93
+
94
+ static SectionType nestedSectionType(const MarkdownNodeIterator&);
95
+
96
+ static void finalize(const MarkdownNodeIterator& node,
97
+ SectionParserData& pd,
98
+ const ParseResultRef<mson::ValueMember>& out) {
99
+
100
+ SectionProcessor<mson::ValueMember>::finalizeImplicitBaseType(out.node.valueDefinition.typeDefinition.baseType);
101
+ }
102
+
103
+ /**
104
+ * \brief Use signature data to fill up the AST
105
+ *
106
+ * \param node Node to process
107
+ * \param pd Section Parser Data
108
+ * \param signature Signature data
109
+ * \param report Parse result report
110
+ * \param valueMember MSON Value Member
111
+ * \param sourceMap MSON Value Member source map
112
+ */
113
+ static MarkdownNodeIterator useSignatureData(const MarkdownNodeIterator& node,
114
+ SectionParserData& pd,
115
+ const Signature& signature,
116
+ Report& report,
117
+ mson::ValueMember& valueMember,
118
+ SourceMap<mson::ValueMember>& sourceMap) {
119
+
120
+ valueMember.description = signature.content;
121
+
122
+ if (pd.exportSourceMap() && !signature.content.empty()) {
123
+ sourceMap.description.sourceMap = node->sourceMap;
124
+ }
125
+
126
+ mson::parseTypeDefinition(node, pd, signature.attributes, report, valueMember.valueDefinition.typeDefinition);
127
+ parseRemainingContent(node, pd, signature.remainingContent, valueMember.sections, sourceMap.sections);
128
+
129
+ // Check for circular references
130
+ mson::TypeSpecification typeSpecification = valueMember.valueDefinition.typeDefinition.typeSpecification;
131
+
132
+ if (typeSpecification.name.base == mson::ArrayTypeName ||
133
+ typeSpecification.name.base == mson::EnumTypeName) {
134
+
135
+ for (mson::TypeNames::iterator it = typeSpecification.nestedTypes.begin();
136
+ it != typeSpecification.nestedTypes.end();
137
+ ++it) {
138
+
139
+ if (!it->symbol.literal.empty() && !it->symbol.variable) {
140
+ mson::addDependency(node, pd, it->symbol.literal, pd.namedTypeContext, report);
141
+ }
142
+ }
143
+ }
144
+ else if (typeSpecification.name.base == mson::UndefinedTypeName &&
145
+ !typeSpecification.name.symbol.literal.empty() &&
146
+ !typeSpecification.name.symbol.variable) {
147
+
148
+ mson::addDependency(node, pd, typeSpecification.name.symbol.literal, pd.namedTypeContext, report);
149
+ }
150
+
151
+ // Properly parse the values in the signature
152
+ if (signature.values.size() > 1) {
153
+
154
+ if (valueMember.valueDefinition.typeDefinition.baseType == mson::PrimitiveBaseType) {
155
+
156
+ valueMember.valueDefinition.values.push_back(mson::parseValue(signature.value));
157
+
158
+ if (pd.exportSourceMap()) {
159
+ sourceMap.valueDefinition.sourceMap = node->sourceMap;
160
+ }
161
+
162
+ return ++MarkdownNodeIterator(node);
163
+ }
164
+ else if (valueMember.valueDefinition.typeDefinition.baseType == mson::UndefinedBaseType) {
165
+ valueMember.valueDefinition.typeDefinition.baseType = mson::ImplicitValueBaseType;
166
+ }
167
+ }
168
+
169
+ for (std::vector<mdp::ByteBuffer>::const_iterator it = signature.values.begin();
170
+ it != signature.values.end();
171
+ it++) {
172
+
173
+ valueMember.valueDefinition.values.push_back(mson::parseValue(*it));
174
+ }
175
+
176
+ if (pd.exportSourceMap() && !valueMember.valueDefinition.empty()) {
177
+ sourceMap.valueDefinition.sourceMap = node->sourceMap;
178
+ }
179
+
180
+ if (pd.exportSourceMap()) {
181
+ sourceMap.sourceMap = node->sourceMap;
182
+ }
183
+
184
+ return ++MarkdownNodeIterator(node);
185
+ }
186
+
187
+ /**
188
+ * \brief Parse the signature's remaining content
189
+ *
190
+ * \param node Node to process
191
+ * \param pd Section Parser Data
192
+ * \param remainingContent Signature's remaining content
193
+ * \param sections MSON Type Section collection
194
+ * \param sourceMap MSON Type Section collection source map
195
+ */
196
+ static void parseRemainingContent(const MarkdownNodeIterator& node,
197
+ SectionParserData& pd,
198
+ const mdp::ByteBuffer& remainingContent,
199
+ mson::TypeSections& sections,
200
+ SourceMap<mson::TypeSections>& sourceMap) {
201
+
202
+ if (remainingContent.empty()) {
203
+ return;
204
+ }
205
+
206
+ mson::TypeSection typeSection(mson::TypeSection::BlockDescriptionClass);
207
+
208
+ typeSection.content.description = remainingContent;
209
+ sections.push_back(typeSection);
210
+
211
+ if (pd.exportSourceMap()) {
212
+
213
+ SourceMap<mson::TypeSection> typeSectionSM;
214
+
215
+ typeSectionSM.description.sourceMap = node->sourceMap;
216
+ sourceMap.collection.push_back(typeSectionSM);
217
+ }
218
+ }
219
+
220
+ /**
221
+ * \brief Add block description to the mson member
222
+ *
223
+ * \param node Node to process
224
+ * \param pd Section Parser Data
225
+ * \param sections MSON Type Section collection
226
+ * \param sourceMap MSON Type Section collection source map
227
+ */
228
+ static MarkdownNodeIterator blockDescription(const MarkdownNodeIterator& node,
229
+ SectionParserData& pd,
230
+ mson::TypeSections& sections,
231
+ SourceMap<mson::TypeSections>& sourceMap) {
232
+
233
+ if (sections.empty() ||
234
+ (sections.size() == 1 &&
235
+ sections[0].klass == mson::TypeSection::BlockDescriptionClass)) {
236
+
237
+ if (sections.empty()) {
238
+
239
+ mson::TypeSection typeSection(mson::TypeSection::BlockDescriptionClass);
240
+ sections.push_back(typeSection);
241
+
242
+ if (pd.exportSourceMap()) {
243
+
244
+ SourceMap<mson::TypeSection> typeSectionSM;
245
+ sourceMap.collection.push_back(typeSectionSM);
246
+ }
247
+ }
248
+
249
+ if (!sections[0].content.description.empty()) {
250
+ TwoNewLines(sections[0].content.description);
251
+ }
252
+
253
+ mdp::ByteBuffer content = mdp::MapBytesRangeSet(node->sourceMap, pd.sourceData);
254
+ TrimString(content);
255
+
256
+ sections[0].content.description += content;
257
+
258
+ if (pd.exportSourceMap() && !content.empty()) {
259
+ sourceMap.collection[0].description.sourceMap.append(node->sourceMap);
260
+ }
261
+
262
+ return ++MarkdownNodeIterator(node);
263
+ }
264
+
265
+ return node;
266
+ }
267
+
268
+ /**
269
+ * \brief Process nested member types for a member (either property or value) and Named Type.
270
+ *
271
+ * \param node Node to process
272
+ * \param siblings Siblings of the node being processed
273
+ * \param pd Section Parser Data
274
+ * \param sections MSON Type Section collection Parse Result
275
+ * \param baseType Base Type of the MSON member to be sent for nested type sections
276
+ */
277
+ template<typename PARSER>
278
+ static MarkdownNodeIterator processNestedMembers(const MarkdownNodeIterator& node,
279
+ const MarkdownNodes& siblings,
280
+ SectionParserData& pd,
281
+ const ParseResultRef<mson::TypeSections>& sections,
282
+ mson::BaseType& baseType) {
283
+
284
+ MarkdownNodeIterator cur = node;
285
+
286
+ if (pd.sectionContext() == MSONSectionType ||
287
+ pd.sectionContext() == MSONMixinSectionType ||
288
+ pd.sectionContext() == MSONOneOfSectionType) {
289
+
290
+ cur = processMSONSection(node, siblings, pd, sections, baseType);
291
+ }
292
+ else {
293
+
294
+ // Try to resolve base type if not given before parsing further
295
+ resolveImplicitBaseType(node, pd.sectionContext(), baseType);
296
+
297
+ IntermediateParseResult<mson::TypeSection> typeSection(sections.report);
298
+ typeSection.node.baseType = baseType;
299
+
300
+ cur = PARSER::parse(node, siblings, pd, typeSection);
301
+
302
+ if (typeSection.node.klass != mson::TypeSection::UndefinedClass) {
303
+ sections.node.push_back(typeSection.node);
304
+
305
+ if (pd.exportSourceMap()) {
306
+ sections.sourceMap.collection.push_back(typeSection.sourceMap);
307
+ }
308
+ }
309
+ }
310
+
311
+ return cur;
312
+ }
313
+
314
+ /**
315
+ * \brief Given a MSONSectionType nested section, process it
316
+ *
317
+ * \param node Node to process
318
+ * \param siblings Siblings of the node being processed
319
+ * \param pd Section Parser Data
320
+ * \param sections MSON Type Section collection Parse Result
321
+ * \param baseType Base Type of the MSON member to be sent for nested type sections
322
+ */
323
+ static MarkdownNodeIterator processMSONSection(const MarkdownNodeIterator& node,
324
+ const MarkdownNodes& siblings,
325
+ SectionParserData& pd,
326
+ const ParseResultRef<mson::TypeSections>& sections,
327
+ mson::BaseType& baseType);
328
+
329
+ /**
330
+ * \brief If base type is still undefined, make it implicit string
331
+ *
332
+ * \param MSON member base type
333
+ */
334
+ static void finalizeImplicitBaseType(mson::BaseType& baseType) {
335
+
336
+ if (baseType == mson::UndefinedBaseType) {
337
+ baseType = mson::ImplicitPrimitiveBaseType;
338
+ }
339
+ }
340
+
341
+ /**
342
+ * \brief Resolve base types if possible, based on nested node given
343
+ *
344
+ * \param node Node to process
345
+ * \param sectionType Section Type
346
+ * \param baseType Base Type of the MSON member that needs to be resolved
347
+ */
348
+ static void resolveImplicitBaseType(const MarkdownNodeIterator& node,
349
+ const SectionType& sectionType,
350
+ mson::BaseType& baseType) {
351
+
352
+ if (baseType != mson::UndefinedBaseType) {
353
+ return;
354
+ }
355
+
356
+ switch (sectionType) {
357
+ case MSONSectionType:
358
+ case MSONOneOfSectionType:
359
+ case MSONMixinSectionType:
360
+ {
361
+ if (node->type == mdp::ListItemMarkdownNodeType) {
362
+ baseType = mson::ImplicitObjectBaseType;
363
+ }
364
+
365
+ break;
366
+ }
367
+
368
+ case MSONPropertyMembersSectionType:
369
+ {
370
+ baseType = mson::ImplicitObjectBaseType;
371
+ break;
372
+ }
373
+
374
+ case MSONSampleDefaultSectionType:
375
+ {
376
+ baseType = mson::ImplicitPrimitiveBaseType;
377
+ break;
378
+ }
379
+
380
+ default:
381
+ break;
382
+ }
383
+ }
384
+ };
385
+
386
+ /** MSON Value Member Section Parser */
387
+ typedef SectionParser<mson::ValueMember, ListSectionAdapter> MSONValueMemberParser;
388
+ }
389
+
390
+ #endif
@@ -0,0 +1,87 @@
1
+ //
2
+ // ModelTable.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 6/9/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_MODELTABLE_H
10
+ #define SNOWCRASH_MODELTABLE_H
11
+
12
+ #include <string>
13
+ #include <map>
14
+ #include "ByteBuffer.h"
15
+ #include "RegexMatch.h"
16
+
17
+ #ifdef DEBUG
18
+ #include <iostream>
19
+ #endif
20
+
21
+ #include "BlueprintSourcemap.h"
22
+ #include "StringUtility.h"
23
+
24
+ // Symbol identifier regex
25
+ #define SYMBOL_IDENTIFIER "([^][()]+)"
26
+
27
+ namespace snowcrash {
28
+
29
+ /** Symbol reference matching regex */
30
+ const char* const ModelReferenceRegex("^[[:blank:]]*\\[" SYMBOL_IDENTIFIER "]\\[][[:blank:]]*$");
31
+
32
+ // Resource Object Model Table
33
+ typedef std::map<Identifier, ResourceModel> ModelTable;
34
+
35
+ // Resource Object Model Table source map
36
+ typedef std::map<Identifier, SourceMap<ResourceModel> > ModelSourceMapTable;
37
+
38
+ // Checks whether given source data represents reference to a symbol returning true if so,
39
+ // false otherwise. If source data is represent reference referred symbol name is filled in.
40
+ inline bool GetModelReference(const mdp::ByteBuffer& sourceData,
41
+ Identifier& referredModel) {
42
+
43
+ CaptureGroups captureGroups;
44
+
45
+ if (RegexCapture(sourceData, ModelReferenceRegex, captureGroups, 3)) {
46
+ referredModel = captureGroups[1];
47
+ TrimString(referredModel);
48
+ return true;
49
+ }
50
+
51
+ return false;
52
+ }
53
+
54
+ #ifdef DEBUG
55
+ // Escape new lines
56
+ inline std::string EscapeNewlines(const std::string &input) {
57
+
58
+ size_t pos = 0;
59
+ std::string target(input);
60
+
61
+ while ((pos = target.find("\n", pos)) != std::string::npos) {
62
+ target.replace(pos, 1, "\\n");
63
+ pos += 2;
64
+ }
65
+
66
+ return target;
67
+ }
68
+
69
+ // Prints markdown block recursively to stdout
70
+ inline void PrintModelTable(const ModelTable& modelTable) {
71
+
72
+ std::cout << "Resource Model Symbols:\n";
73
+
74
+ for (ModelTable::const_iterator it = modelTable.begin();
75
+ it != modelTable.end();
76
+ ++it) {
77
+
78
+ std::cout << "- " << it->first << " - body: '" << EscapeNewlines(it->second.body) << "'\n";
79
+ }
80
+
81
+ std::cout << std::endl;
82
+ }
83
+ #endif
84
+
85
+ }
86
+
87
+ #endif