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,516 @@
1
+ //
2
+ // ParameterParser.h
3
+ // snowcrash
4
+ //
5
+ // Created by Zdenek Nemec on 9/1/13.
6
+ // Copyright (c) 2013 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SNOWCRASH_PARAMETERPARSER_H
10
+ #define SNOWCRASH_PARAMETERPARSER_H
11
+
12
+ #include "SectionParser.h"
13
+ #include "ValuesParser.h"
14
+ #include "MSONTypeSectionParser.h"
15
+ #include "RegexMatch.h"
16
+ #include "StringUtility.h"
17
+
18
+ /** Parameter Value regex */
19
+ #define PARAMETER_VALUE "`([^`]+)`"
20
+
21
+ /** Parameter Identifier */
22
+ #define PARAMETER_IDENTIFIER "`?(([[:alnum:]_.-])*|(%[A-Fa-f0-9]{2})*)+`?"
23
+
24
+ /** Lead in and out for comma separated values regex */
25
+ #define CSV_LEADINOUT "[[:blank:]]*,?[[:blank:]]*"
26
+
27
+ namespace snowcrash {
28
+
29
+ /* We only allow at the maximum 3 attributes for old syntax parameters */
30
+ const size_t OLD_SYNTAX_MAX_ATTRIBUTES = 3;
31
+
32
+ /* We only allow at the maximum 2 attributes for new syntax parameters */
33
+ const size_t NEW_SYNTAX_MAX_ATTRIBUTES = 2;
34
+
35
+ /** Parameter description delimiter */
36
+ const std::string DescriptionIdentifier = "...";
37
+
38
+ /** Parameter Required matching regex */
39
+ const char* const ParameterRequiredRegex = "^[[:blank:]]*[Rr]equired[[:blank:]]*$";
40
+
41
+ /** Parameter Optional matching regex */
42
+ const char* const ParameterOptionalRegex = "^[[:blank:]]*[Oo]ptional[[:blank:]]*$";
43
+
44
+ /** Additonal Parameter Traits Example matching regex */
45
+ const char* const AdditionalTraitsExampleRegex = "`([^`]*)`";
46
+
47
+ /** Additonal Parameter Traits Use matching regex */
48
+ const char* const AdditionalTraitsUseRegex = "([Oo]ptional|[Rr]equired)";
49
+
50
+ /** Parameter Values matching regex */
51
+ const char* const ParameterValuesRegex = "^[[:blank:]]*[Vv]alues[[:blank:]]*$";
52
+
53
+ /** Values expected content */
54
+ const char* const ExpectedValuesContent = "nested list of possible parameter values, one element per list item e.g. '`value`'";
55
+
56
+ /** Additional Traits warning for old syntax */
57
+ const char* const OldSyntaxAdditionalTraitsWarning = ", expected '([required | optional], [<type>], [`<example value>`])', e.g. '(optional, string, `Hello World`)'";
58
+
59
+ /** Additional Traits warning for new syntax */
60
+ const char* const NewSyntaxAdditionalTraitsWarning = ", expected '([required | optional], [<type> | enum[<type>])', e.g. '(optional, string)'";
61
+
62
+ /* Type wrapped by enum matching regex */
63
+ const char* const EnumRegex = "^enum\\[([^][]+)]$";
64
+
65
+ /** Parameter Definition Type */
66
+ enum ParameterType {
67
+ NotParameterType = 0,
68
+ OldParameterType, /// Parameter defined using the old syntax
69
+ NewParameterType, /// Parameter defined using the new MSON-like syntax
70
+ UndefinedParameterType = -1
71
+ };
72
+
73
+ /**
74
+ * Parameter section processor
75
+ */
76
+ template<>
77
+ struct SectionProcessor<Parameter> : public SignatureSectionProcessorBase<Parameter> {
78
+
79
+ static SignatureTraits signatureTraits() {
80
+
81
+ SignatureTraits signatureTraits(SignatureTraits::IdentifierTrait |
82
+ SignatureTraits::ValuesTrait |
83
+ SignatureTraits::AttributesTrait |
84
+ SignatureTraits::ContentTrait,
85
+ Delimiters('=', snowcrash::DescriptionIdentifier));
86
+
87
+ return signatureTraits;
88
+ }
89
+
90
+ static MarkdownNodeIterator finalizeSignature(const MarkdownNodeIterator& node,
91
+ SectionParserData& pd,
92
+ const Signature& signature,
93
+ const ParseResultRef<Parameter>& out) {
94
+
95
+ out.node.name = signature.identifier;
96
+ out.node.description = signature.content;
97
+ out.node.defaultValue = signature.value;
98
+
99
+ if (!signature.remainingContent.empty()) {
100
+ out.node.description += "\n" + signature.remainingContent;
101
+ }
102
+
103
+ TrimString(out.node.description);
104
+
105
+ SectionProcessor<Parameter>::parseAttributes(node, pd, signature.attributes, out);
106
+
107
+ if (pd.exportSourceMap()) {
108
+ if (!out.node.name.empty()) {
109
+ out.sourceMap.name.sourceMap = node->sourceMap;
110
+ }
111
+
112
+ if (!out.node.description.empty()) {
113
+ out.sourceMap.description.sourceMap = node->sourceMap;
114
+ }
115
+
116
+ if (!out.node.defaultValue.empty()) {
117
+ out.sourceMap.defaultValue.sourceMap = node->sourceMap;
118
+ }
119
+ }
120
+
121
+ return ++MarkdownNodeIterator(node);
122
+ }
123
+
124
+ static MarkdownNodeIterator processNestedSection(const MarkdownNodeIterator& node,
125
+ const MarkdownNodes& siblings,
126
+ SectionParserData& pd,
127
+ const ParseResultRef<Parameter>& out) {
128
+
129
+ if (pd.sectionContext() != ValuesSectionType) {
130
+ return node;
131
+ }
132
+
133
+ // Check redefinition
134
+ if (!out.node.values.empty()) {
135
+ // WARN: parameter values are already defined
136
+ std::stringstream ss;
137
+ ss << "overshadowing previous 'values' definition";
138
+ ss << " for parameter '" << out.node.name << "'";
139
+
140
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
141
+ out.report.warnings.push_back(Warning(ss.str(),
142
+ RedefinitionWarning,
143
+ sourceMap));
144
+ }
145
+
146
+ // Clear any previous values
147
+ out.node.values.clear();
148
+
149
+ if (pd.exportSourceMap()) {
150
+ out.sourceMap.values.collection.clear();
151
+ }
152
+
153
+ ParseResultRef<Values> values(out.report, out.node.values, out.sourceMap.values);
154
+ ValuesParser::parse(node, siblings, pd, values);
155
+
156
+ if (out.node.values.empty()) {
157
+ // WARN: empty definition
158
+ std::stringstream ss;
159
+ ss << "no possible values specified for parameter '" << out.node.name << "'";
160
+
161
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
162
+ out.report.warnings.push_back(Warning(ss.str(),
163
+ EmptyDefinitionWarning,
164
+ sourceMap));
165
+ }
166
+
167
+ return ++MarkdownNodeIterator(node);
168
+ }
169
+
170
+ static void finalize(const MarkdownNodeIterator& node,
171
+ SectionParserData& pd,
172
+ const ParseResultRef<Parameter>& out) {
173
+
174
+ checkDefaultAndRequiredClash<Parameter>(node, pd, out);
175
+ checkExampleAndDefaultValue<Parameter>(node, pd, out);
176
+ }
177
+
178
+ static SectionType sectionType(const MarkdownNodeIterator& node) {
179
+
180
+ if (node->type == mdp::ListItemMarkdownNodeType
181
+ && !node->children().empty()) {
182
+
183
+ mdp::ByteBuffer subject, remainingContent;
184
+ subject = GetFirstLine(node->children().front().text, remainingContent);
185
+ TrimString(subject);
186
+
187
+ // Look ahead into nested list items
188
+ for (MarkdownNodeIterator it = node->children().begin();
189
+ it != node->children().end();
190
+ ++it) {
191
+
192
+ if (it->type == mdp::ListItemMarkdownNodeType
193
+ && !it->children().empty()) {
194
+
195
+ mdp::ByteBuffer itSubject, itRemainingContent;
196
+ itSubject = GetFirstLine(it->children().front().text, itRemainingContent);
197
+ TrimString(itSubject);
198
+
199
+ if (RegexMatch(itSubject, MSONDefaultTypeSectionRegex) ||
200
+ RegexMatch(itSubject, MSONSampleTypeSectionRegex) ||
201
+ RegexMatch(itSubject, MSONValueMembersTypeSectionRegex)) {
202
+
203
+ return MSONParameterSectionType;
204
+ }
205
+
206
+ if (RegexMatch(itSubject, ParameterValuesRegex)) {
207
+ return ParameterSectionType;
208
+ }
209
+ }
210
+ }
211
+
212
+ ParameterType parameterType = getParameterType(subject);
213
+
214
+ if (parameterType == OldParameterType) {
215
+ return ParameterSectionType;
216
+ }
217
+
218
+ if (parameterType == NewParameterType) {
219
+ return MSONParameterSectionType;
220
+ }
221
+ }
222
+
223
+ return UndefinedSectionType;
224
+ }
225
+
226
+ static SectionType nestedSectionType(const MarkdownNodeIterator& node) {
227
+
228
+ return SectionProcessor<Values>::sectionType(node);
229
+ }
230
+
231
+ template<typename T>
232
+ static void parseAttributes(const mdp::MarkdownNodeIterator& node,
233
+ SectionParserData& pd,
234
+ const std::vector<mdp::ByteBuffer>& attributes,
235
+ const ParseResultRef<T>& out,
236
+ const bool oldSyntax = true) {
237
+
238
+ out.node.use = UndefinedParameterUse;
239
+ size_t max = oldSyntax ? OLD_SYNTAX_MAX_ATTRIBUTES : NEW_SYNTAX_MAX_ATTRIBUTES;
240
+
241
+ if (attributes.size() > max) {
242
+ return warnAboutAdditionalTraits(node, pd, out, oldSyntax);
243
+ }
244
+
245
+ bool definedUse = false;
246
+
247
+ // Traverse over parameter's traits
248
+ for (size_t i = 0; i < attributes.size(); i++) {
249
+ CaptureGroups captureGroups;
250
+
251
+ if (RegexMatch(attributes[i], ParameterOptionalRegex) && !definedUse) {
252
+ out.node.use = OptionalParameterUse;
253
+ definedUse = true;
254
+ }
255
+ else if (RegexMatch(attributes[i], ParameterRequiredRegex) && !definedUse) {
256
+ out.node.use = RequiredParameterUse;
257
+ definedUse = true;
258
+ }
259
+ else if (oldSyntax &&
260
+ RegexCapture(attributes[i], AdditionalTraitsExampleRegex, captureGroups) &&
261
+ captureGroups.size() > 1) {
262
+
263
+ out.node.exampleValue = captureGroups[1];
264
+ }
265
+ else {
266
+ if (!out.node.type.empty()) {
267
+ return warnAboutAdditionalTraits(node, pd, out, oldSyntax);
268
+ }
269
+
270
+ out.node.type = attributes[i];
271
+ }
272
+ }
273
+
274
+ // For new syntax, Retrieve the type which is wrapped by enum[]
275
+ if (!oldSyntax && !out.node.type.empty()) {
276
+ std::string typeInsideEnum = RegexCaptureFirst(out.node.type, EnumRegex);
277
+ TrimString(typeInsideEnum);
278
+
279
+ if (!typeInsideEnum.empty()) {
280
+ out.node.type = typeInsideEnum;
281
+ }
282
+ }
283
+
284
+ if (pd.exportSourceMap()) {
285
+ if (!out.node.type.empty()) {
286
+ out.sourceMap.type.sourceMap = node->sourceMap;
287
+ }
288
+
289
+ if (definedUse) {
290
+ out.sourceMap.use.sourceMap = node->sourceMap;
291
+ }
292
+
293
+ if (oldSyntax && !out.node.exampleValue.empty()) {
294
+ out.sourceMap.exampleValue.sourceMap = node->sourceMap;
295
+ }
296
+ }
297
+ }
298
+
299
+ template<typename T>
300
+ static void warnAboutAdditionalTraits(const mdp::MarkdownNodeIterator& node,
301
+ SectionParserData& pd,
302
+ const ParseResultRef<T>& out,
303
+ bool oldSyntax) {
304
+
305
+ // WARN: Additional parameters traits warning
306
+ std::stringstream ss;
307
+ ss << "unable to parse additional parameter traits";
308
+ ss << (oldSyntax ? OldSyntaxAdditionalTraitsWarning : NewSyntaxAdditionalTraitsWarning);
309
+
310
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
311
+ out.report.warnings.push_back(Warning(ss.str(),
312
+ FormattingWarning,
313
+ sourceMap));
314
+
315
+ out.node.type.clear();
316
+ out.node.use = UndefinedParameterUse;
317
+
318
+ if (pd.exportSourceMap()) {
319
+ out.sourceMap.type.sourceMap.clear();
320
+ out.sourceMap.use.sourceMap.clear();
321
+ }
322
+
323
+ // Clear example value for old syntax
324
+ if (oldSyntax) {
325
+ out.node.exampleValue.clear();
326
+
327
+ if (pd.exportSourceMap()) {
328
+ out.sourceMap.exampleValue.sourceMap.clear();
329
+ }
330
+ }
331
+ }
332
+
333
+ template<typename T>
334
+ static void checkDefaultAndRequiredClash(const mdp::MarkdownNodeIterator& node,
335
+ SectionParserData& pd,
336
+ const ParseResultRef<T>& out) {
337
+
338
+ // Check possible required vs default clash
339
+ if (out.node.use != OptionalParameterUse &&
340
+ !out.node.defaultValue.empty()) {
341
+
342
+ // WARN: Required vs default clash
343
+ std::stringstream ss;
344
+ ss << "specifying parameter '" << out.node.name << "' as required supersedes its default value"\
345
+ ", declare the parameter as 'optional' to specify its default value";
346
+
347
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
348
+ out.report.warnings.push_back(Warning(ss.str(),
349
+ LogicalErrorWarning,
350
+ sourceMap));
351
+ }
352
+ }
353
+
354
+ template<typename T>
355
+ static void checkExampleAndDefaultValue(const mdp::MarkdownNodeIterator& node,
356
+ SectionParserData& pd,
357
+ const ParseResultRef<T>& out) {
358
+
359
+ if ((out.node.exampleValue.empty() && out.node.defaultValue.empty()) ||
360
+ out.node.values.empty()) {
361
+
362
+ return;
363
+ }
364
+
365
+ bool isExampleFound = false;
366
+ bool isDefaultFound = false;
367
+
368
+ std::stringstream ss;
369
+ bool printWarning = false;
370
+
371
+ for (Collection<Value>::iterator it = out.node.values.begin();
372
+ it != out.node.values.end();
373
+ ++it) {
374
+
375
+ if (out.node.exampleValue == *it) {
376
+ isExampleFound = true;
377
+ }
378
+
379
+ if (out.node.defaultValue == *it) {
380
+ isDefaultFound = true;
381
+ }
382
+ }
383
+
384
+ if(!out.node.exampleValue.empty() &&
385
+ !isExampleFound) {
386
+
387
+ // WARN: missing example in values.
388
+ ss << "the example value '" << out.node.exampleValue << "' of parameter '"<< out.node.name <<"' is not in its list of expected values";
389
+ printWarning = true;
390
+ }
391
+
392
+ if(!out.node.defaultValue.empty() &&
393
+ !isDefaultFound) {
394
+
395
+ // WARN: missing default in values.
396
+ ss << "the default value '" << out.node.defaultValue << "' of parameter '"<< out.node.name <<"' is not in its list of expected values";
397
+ printWarning = true;
398
+ }
399
+
400
+ if (printWarning) {
401
+ mdp::CharactersRangeSet sourceMap = mdp::BytesRangeSetToCharactersRangeSet(node->sourceMap, pd.sourceCharacterIndex);
402
+ out.report.warnings.push_back(Warning(ss.str(),
403
+ LogicalErrorWarning,
404
+ sourceMap));
405
+ }
406
+ }
407
+
408
+ /**
409
+ * \brief Determine the type of parameter using the signature
410
+ */
411
+ static ParameterType getParameterType(const mdp::ByteBuffer& signature) {
412
+
413
+ mdp::ByteBuffer innerSignature = signature;
414
+ CaptureGroups captureGroups;
415
+
416
+ TrimString(innerSignature);
417
+
418
+ if (innerSignature.empty()) {
419
+ return NotParameterType; // Empty string, invalid
420
+ }
421
+
422
+ if (RegexCapture(innerSignature, "^" PARAMETER_IDENTIFIER "[[:blank:]]*", captureGroups) &&
423
+ !captureGroups[0].empty()) {
424
+
425
+ innerSignature = innerSignature.substr(captureGroups[0].size());
426
+ TrimString(innerSignature);
427
+ }
428
+ else {
429
+ return NotParameterType;
430
+ }
431
+
432
+ // If contains only parameter name
433
+ if (innerSignature.empty()) {
434
+ return NewParameterType;
435
+ }
436
+
437
+ std::string firstChar = innerSignature.substr(0, 1);
438
+
439
+ // If first char is ':' or `=`
440
+ if (firstChar == ":" || firstChar == "=") {
441
+
442
+ innerSignature = innerSignature.substr(1);
443
+ TrimString(innerSignature);
444
+
445
+ if (innerSignature.empty()) {
446
+ return NotParameterType; // No sample or default value
447
+ }
448
+
449
+ // Traverse over the value
450
+ while (!innerSignature.empty()) {
451
+
452
+ std::string first = innerSignature.substr(0, 1);
453
+
454
+ if (first == "`") {
455
+ std::string escaped = RetrieveEscaped(innerSignature);
456
+
457
+ // If empty value is returned
458
+ if (escaped.empty()) {
459
+ innerSignature.clear();
460
+ }
461
+
462
+ TrimString(innerSignature);
463
+ }
464
+ else if (first == "(") {
465
+ break;
466
+ }
467
+ else {
468
+ innerSignature = innerSignature.substr(1);
469
+ }
470
+ }
471
+
472
+ return firstChar == ":" ? NewParameterType : OldParameterType;
473
+ }
474
+
475
+ if (innerSignature.substr(0, 1) == "(") {
476
+
477
+ mdp::ByteBuffer inner = matchBrackets(innerSignature, 0, ')');
478
+
479
+ if (inner.length() == 2 || inner == innerSignature) {
480
+ return NotParameterType; // Expecting close of attributes
481
+ }
482
+
483
+ std::string attributes = inner.substr(1, inner.length()-1);
484
+
485
+ if (RegexMatch(attributes, "enum\\[[^][]+]")) {
486
+ return NewParameterType;
487
+ }
488
+
489
+ if (RegexMatch(attributes, "`")) {
490
+ return OldParameterType;
491
+ }
492
+
493
+ TrimString(innerSignature);
494
+
495
+ if (innerSignature.empty()) {
496
+ return NewParameterType;
497
+ }
498
+ }
499
+
500
+ if (innerSignature.substr(0, 1) == "-") {
501
+ return NewParameterType;
502
+ }
503
+
504
+ if (innerSignature.substr(0, 3) == "...") {
505
+ return OldParameterType;
506
+ }
507
+
508
+ return NotParameterType;
509
+ }
510
+ };
511
+
512
+ /** Parameter Section Parser */
513
+ typedef SectionParser<Parameter, ListSectionAdapter> ParameterParser;
514
+ }
515
+
516
+ #endif