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,506 @@
1
+ //
2
+ // MSONUtility.h
3
+ // snowcrash
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 10/23/14.
6
+ // Copyright (c) 2014 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_MSONUTILITY_H
10
+ #define SNOWCRASH_MSONUTILITY_H
11
+
12
+ #include "MSONSourcemap.h"
13
+
14
+ using namespace scpl;
15
+
16
+ namespace mson {
17
+
18
+ /**
19
+ * \brief Check if the given string is variable
20
+ *
21
+ * \param String to check
22
+ *
23
+ * \return True if variable string
24
+ */
25
+ inline bool checkVariable(const std::string& subject) {
26
+
27
+ std::string emphasisChars = mdp::MarkdownEmphasisChars;
28
+
29
+ if (emphasisChars.find(subject[0]) != std::string::npos &&
30
+ subject[0] == subject[subject.length() - 1]) {
31
+
32
+ return true;
33
+ }
34
+
35
+ return false;
36
+ }
37
+
38
+ /**
39
+ * \brief Parse a MSON BaseTypeName into MSON BaseType
40
+ *
41
+ * \param type MSON BaseTypeName
42
+ *
43
+ * \return MSON BaseType
44
+ */
45
+ inline BaseType parseBaseType(const BaseTypeName& type) {
46
+
47
+ if ((type == StringTypeName) ||
48
+ (type == NumberTypeName) ||
49
+ (type == BooleanTypeName)) {
50
+
51
+ return PrimitiveBaseType;
52
+ }
53
+
54
+ if (type == ObjectTypeName) {
55
+ return ObjectBaseType;
56
+ }
57
+
58
+ if ((type == ArrayTypeName) ||
59
+ (type == EnumTypeName)) {
60
+
61
+ return ValueBaseType;
62
+ }
63
+
64
+ return UndefinedBaseType;
65
+ }
66
+
67
+ /**
68
+ * \brief Parse a string into MSON Value structure
69
+ *
70
+ * \param subject String which represents the value
71
+ *
72
+ * \return MSON Value
73
+ */
74
+ inline Value parseValue(const std::string& subject) {
75
+
76
+ Value value;
77
+ std::string buffer = subject;
78
+
79
+ if (checkVariable(subject)) {
80
+
81
+ std::string escapedString = snowcrash::RetrieveEscaped(buffer, 0, true);
82
+
83
+ value.literal = escapedString;
84
+ value.variable = true;
85
+ }
86
+
87
+ if (value.literal.empty()) {
88
+ value.literal = snowcrash::StripBackticks(buffer);
89
+ }
90
+
91
+ // When the value is a wildcard
92
+ if (value.literal == "*") {
93
+
94
+ value.literal = "";
95
+ value.variable = true;
96
+ }
97
+
98
+ return value;
99
+ }
100
+
101
+ /**
102
+ * \brief Parse Symbol from a string
103
+ *
104
+ * \param subject String which represents the symbol
105
+ *
106
+ * \return MSON Symbol
107
+ */
108
+ inline Symbol parseSymbol(const std::string& subject) {
109
+
110
+ Symbol symbol;
111
+ Value value = parseValue(subject);
112
+
113
+ symbol.literal = value.literal;
114
+ symbol.variable = value.variable;
115
+
116
+ return symbol;
117
+ }
118
+
119
+ /**
120
+ * \brief Parse Type Name from a string
121
+ *
122
+ * \param subject String which represents the type name
123
+ * \param typeName MSON Type Name
124
+ * \param isBaseType If false, will be parsed as a symbol
125
+ */
126
+ inline void parseTypeName(const std::string& subject,
127
+ TypeName& typeName,
128
+ bool isBaseType = true) {
129
+
130
+ if (isBaseType && subject == "boolean") {
131
+ typeName.base = BooleanTypeName;
132
+ }
133
+ else if (isBaseType && subject == "string") {
134
+ typeName.base = StringTypeName;
135
+ }
136
+ else if (isBaseType && subject == "number") {
137
+ typeName.base = NumberTypeName;
138
+ }
139
+ else if (isBaseType && subject == "array") {
140
+ typeName.base = ArrayTypeName;
141
+ }
142
+ else if (isBaseType && subject == "enum") {
143
+ typeName.base = EnumTypeName;
144
+ }
145
+ else if (isBaseType && subject == "object") {
146
+ typeName.base = ObjectTypeName;
147
+ }
148
+ else {
149
+ typeName.symbol = parseSymbol(subject);
150
+ }
151
+ }
152
+
153
+ /**
154
+ * \brief Check Type Attribute from a string and fill list of type attributes accordingly
155
+ *
156
+ * \param attribute String that needs to be checked for attribute
157
+ * \param typeAttributes List of type attributes
158
+ *
159
+ * \return True if the given string is a type attribute
160
+ */
161
+ inline bool parseTypeAttribute(const std::string& attribute,
162
+ TypeAttributes& typeAttributes) {
163
+
164
+ bool isAttribute = true;
165
+
166
+ if (attribute == "required") {
167
+ typeAttributes |= RequiredTypeAttribute;
168
+ }
169
+ else if (attribute == "optional") {
170
+ typeAttributes |= OptionalTypeAttribute;
171
+ }
172
+ else if (attribute == "fixed") {
173
+ typeAttributes |= FixedTypeAttribute;
174
+ }
175
+ else if (attribute == "sample") {
176
+ typeAttributes |= SampleTypeAttribute;
177
+ }
178
+ else if (attribute == "default") {
179
+ typeAttributes |= DefaultTypeAttribute;
180
+ }
181
+ else if (attribute == "nullable") {
182
+ typeAttributes |= NullableTypeAttribute;
183
+ }
184
+ else if (attribute == "fixed-type") {
185
+ typeAttributes |= FixedTypeTypeAttribute;
186
+ }
187
+ else {
188
+ isAttribute = false;
189
+ }
190
+
191
+ return isAttribute;
192
+ }
193
+
194
+ /**
195
+ * \brief Parse Type Specification from a signature attribute
196
+ *
197
+ * \param subject Attribute string representing the type specification
198
+ * \param typeSpecification MSON Type Specification
199
+ */
200
+ inline void parseTypeSpecification(const std::string& attribute,
201
+ TypeSpecification& typeSpecification) {
202
+
203
+ std::string subject = snowcrash::StripMarkdownLink(attribute);
204
+
205
+ bool lookingAtNested = false; // If true, we are looking at nested types
206
+ bool lookingForEndLink = false; // If true, we detected a link text and are looking for the end of it
207
+ bool alreadyParsedLink = false; // If true, we already parsed the link text in the link
208
+
209
+ bool trimSubject = false;
210
+
211
+ size_t i = 0;
212
+ std::string buffer;
213
+
214
+ while (i < subject.length()) {
215
+
216
+ if (subject[i] == mdp::MarkdownBeginReference &&
217
+ !alreadyParsedLink) {
218
+
219
+ trimSubject = true;
220
+
221
+ if (!lookingAtNested) {
222
+
223
+ snowcrash::TrimString(buffer);
224
+
225
+ if (!buffer.empty()) {
226
+ parseTypeName(buffer, typeSpecification.name);
227
+ }
228
+
229
+ lookingAtNested = true;
230
+ }
231
+ else {
232
+ lookingForEndLink = true;
233
+ }
234
+ }
235
+ else if (subject[i] == mdp::MarkdownEndReference &&
236
+ lookingAtNested &&
237
+ lookingForEndLink) {
238
+
239
+ trimSubject = true;
240
+
241
+ TypeName typeName;
242
+ snowcrash::TrimString(buffer);
243
+
244
+ if (!buffer.empty()) {
245
+
246
+ parseTypeName(buffer, typeName);
247
+ typeSpecification.nestedTypes.push_back(typeName);
248
+ }
249
+
250
+ alreadyParsedLink = true;
251
+ lookingForEndLink = false;
252
+ }
253
+ else if (subject[i] == scpl::Delimiters::AttributeDelimiter &&
254
+ lookingAtNested &&
255
+ !lookingForEndLink) {
256
+
257
+ trimSubject = true;
258
+
259
+ if (alreadyParsedLink) {
260
+ alreadyParsedLink = false;
261
+ }
262
+ else {
263
+
264
+ TypeName typeName;
265
+ snowcrash::TrimString(buffer);
266
+
267
+ if (!buffer.empty()) {
268
+
269
+ parseTypeName(buffer, typeName);
270
+ typeSpecification.nestedTypes.push_back(typeName);
271
+ }
272
+ }
273
+ }
274
+ else {
275
+
276
+ buffer += subject[i];
277
+ i++;
278
+ }
279
+
280
+ // Strip the subject until the current index
281
+ if (trimSubject) {
282
+
283
+ subject = subject.substr(i + 1);
284
+ snowcrash::TrimString(subject);
285
+
286
+ trimSubject = false;
287
+ buffer.clear();
288
+ i = 0;
289
+ }
290
+ }
291
+
292
+ snowcrash::TrimString(buffer);
293
+
294
+ if (buffer.empty() || alreadyParsedLink) {
295
+ return;
296
+ }
297
+
298
+ // Remove the ending square bracket
299
+ if (lookingAtNested &&
300
+ buffer[buffer.length() - 1] == mdp::MarkdownEndReference) {
301
+
302
+ buffer = buffer.substr(0, buffer.length() - 1);
303
+ }
304
+
305
+ TypeName typeName;
306
+
307
+ snowcrash::TrimString(buffer);
308
+ parseTypeName(buffer, typeName);
309
+
310
+ if (lookingAtNested) {
311
+ typeSpecification.nestedTypes.push_back(typeName);
312
+ }
313
+ else {
314
+ typeSpecification.name = typeName;
315
+ }
316
+ }
317
+
318
+ /**
319
+ * \brief Add a dependency to the dependency list of the dependents while checking for circular references
320
+ *
321
+ * \param node Current markdown node iterator
322
+ * \param pd Section parser data
323
+ * \param dependency The named type which should be added to the dependency list
324
+ * \param dependent The named type to which the dependency should be added
325
+ * \param report Parse result report
326
+ */
327
+ inline void addDependency(const mdp::MarkdownNodeIterator& node,
328
+ snowcrash::SectionParserData& pd,
329
+ const mson::Literal dependency,
330
+ const mson::Literal dependent,
331
+ snowcrash::Report& report,
332
+ bool circularCheck = false) {
333
+
334
+ // First, check if the type exists
335
+ if (pd.namedTypeDependencyTable.find(dependency) == pd.namedTypeDependencyTable.end()) {
336
+
337
+ // ERR: We cannot find the dependency type
338
+ std::stringstream ss;
339
+ ss << "base type '" << dependency << "' is not defined in the document";
340
+
341
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
342
+ report.error = snowcrash::Error(ss.str(), snowcrash::MSONError, sourceMap);
343
+ return;
344
+ }
345
+
346
+ std::set<mson::Literal> dependencyDeps = pd.namedTypeDependencyTable[dependency];
347
+
348
+ // Second, check if it is circular reference between them
349
+ if (circularCheck && (dependent == dependency ||
350
+ dependencyDeps.find(dependent) != dependencyDeps.end())) {
351
+
352
+ // ERR: Dependency named type circular references itself
353
+ std::stringstream ss;
354
+ ss << "base type '" << dependent << "' circularly referencing itself";
355
+
356
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
357
+ report.error = snowcrash::Error(ss.str(), snowcrash::MSONError, sourceMap);
358
+ return;
359
+ }
360
+
361
+ // Third, check if the dependency is already in the list
362
+ if (pd.namedTypeDependencyTable[dependent].find(dependency) != pd.namedTypeDependencyTable[dependent].end()) {
363
+ return;
364
+ }
365
+
366
+ for (mson::NamedTypeDependencyTable::iterator it = pd.namedTypeDependencyTable.begin();
367
+ it != pd.namedTypeDependencyTable.end();
368
+ ++it) {
369
+
370
+ // If the entry is dependent itself or contain dependent in its list
371
+ if (it->first == dependent || it->second.find(dependent) != it->second.end()) {
372
+
373
+ it->second.insert(dependency);
374
+ it->second.insert(dependencyDeps.begin(), dependencyDeps.end());
375
+ }
376
+ }
377
+ }
378
+
379
+ /**
380
+ * \brief Parse Type Definition from a list of signature attributes
381
+ *
382
+ * \param node Markdown node of the signature
383
+ * \param pd Section parser data
384
+ * \param attributes List of signature attributes
385
+ * \param report Parse result report
386
+ * \param typeDefinition MSON Type Definition
387
+ */
388
+ inline void parseTypeDefinition(const mdp::MarkdownNodeIterator& node,
389
+ snowcrash::SectionParserData& pd,
390
+ const std::vector<std::string>& attributes,
391
+ snowcrash::Report& report,
392
+ mson::TypeDefinition& typeDefinition) {
393
+
394
+ bool foundTypeSpecification = false;
395
+
396
+ for (std::vector<std::string>::const_iterator it = attributes.begin();
397
+ it != attributes.end();
398
+ it++) {
399
+
400
+ // If not a recognized type attribute
401
+ if (!parseTypeAttribute(*it, typeDefinition.attributes)) {
402
+
403
+ // If type specification is already found
404
+ if (foundTypeSpecification) {
405
+
406
+ // WARN: Ignoring unrecognized type attribute
407
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
408
+ report.warnings.push_back(snowcrash::Warning("ignoring unrecognized type attribute",
409
+ snowcrash::IgnoringWarning,
410
+ sourceMap));
411
+ }
412
+ else {
413
+
414
+ foundTypeSpecification = true;
415
+ parseTypeSpecification(*it, typeDefinition.typeSpecification);
416
+ }
417
+ }
418
+ }
419
+
420
+ typeDefinition.baseType = parseBaseType(typeDefinition.typeSpecification.name.base);
421
+ NamedTypeBaseTable::iterator it = pd.namedTypeBaseTable.find(typeDefinition.typeSpecification.name.symbol.literal);
422
+
423
+ if (typeDefinition.baseType == UndefinedBaseType &&
424
+ it != pd.namedTypeBaseTable.end()) {
425
+
426
+ typeDefinition.baseType = it->second;
427
+ }
428
+
429
+ if (typeDefinition.baseType == UndefinedBaseType &&
430
+ !typeDefinition.typeSpecification.name.symbol.literal.empty() &&
431
+ !typeDefinition.typeSpecification.name.symbol.variable) {
432
+
433
+ addDependency(node, pd, typeDefinition.typeSpecification.name.symbol.literal, pd.namedTypeContext, report);
434
+ }
435
+
436
+ if (typeDefinition.baseType != ValueBaseType &&
437
+ typeDefinition.baseType != ImplicitValueBaseType &&
438
+ !typeDefinition.typeSpecification.nestedTypes.empty()) {
439
+
440
+ // WARN: Nested types for non (array or enum) structure base type
441
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
442
+ report.warnings.push_back(snowcrash::Warning("nested types should be present only for types which are sub typed from either array or enum structure type",
443
+ snowcrash::LogicalErrorWarning,
444
+ sourceMap));
445
+ }
446
+ }
447
+
448
+ /**
449
+ * \brief Parse Property Name from a string given by signature identifier
450
+ *
451
+ * \param node Markdown node of the signature
452
+ * \param pd Section parser data
453
+ * \param subject String representing the property name
454
+ * \param report Parse result report
455
+ * \param propertyName MSON Property Name
456
+ */
457
+ inline void parsePropertyName(const mdp::MarkdownNodeIterator& node,
458
+ snowcrash::SectionParserData& pd,
459
+ const std::string& subject,
460
+ snowcrash::Report& report,
461
+ PropertyName& propertyName) {
462
+
463
+ std::string buffer = subject;
464
+
465
+ if (checkVariable(subject)) {
466
+
467
+ std::string escapedString = snowcrash::RetrieveEscaped(buffer, 0, true);
468
+
469
+ SignatureTraits traits(SignatureTraits::ValuesTrait |
470
+ SignatureTraits::AttributesTrait);
471
+
472
+ Signature signature = SignatureSectionProcessorBase<PropertyName>::parseSignature(node, pd, traits, report, escapedString);
473
+
474
+ if (!signature.value.empty()) {
475
+ propertyName.variable.values.push_back(parseValue(signature.value));
476
+ }
477
+
478
+ parseTypeDefinition(node, pd, signature.attributes, report, propertyName.variable.typeDefinition);
479
+ }
480
+ else {
481
+ propertyName.literal = snowcrash::StripBackticks(buffer);
482
+ }
483
+ }
484
+
485
+ /**
486
+ * \brief Check is the given base types are the same after taking the implicitness into account
487
+ */
488
+ inline bool isSameBaseType(const mson::BaseType lhs,
489
+ const mson::BaseType rhs) {
490
+
491
+ if (lhs == rhs ||
492
+ (lhs == mson::ImplicitObjectBaseType && rhs == mson::ObjectBaseType) ||
493
+ (lhs == mson::ObjectBaseType && rhs == mson::ImplicitObjectBaseType) ||
494
+ (lhs == mson::ImplicitValueBaseType && rhs == mson::ValueBaseType) ||
495
+ (lhs == mson::ValueBaseType && rhs == mson::ImplicitValueBaseType) ||
496
+ (lhs == mson::ImplicitPrimitiveBaseType && rhs == mson::PrimitiveBaseType) ||
497
+ (lhs == mson::PrimitiveBaseType && rhs == mson::ImplicitPrimitiveBaseType)) {
498
+
499
+ return true;
500
+ }
501
+
502
+ return false;
503
+ }
504
+ }
505
+
506
+ #endif