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,231 @@
1
+ //
2
+ // refract/VisitorUtils.h
3
+ // librefract
4
+ //
5
+ // Created by Vilibald Wanča on 09/11/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+ #ifndef REFRACT_VISITORUTILS_H
9
+ #define REFRACT_VISITORUTILS_H
10
+
11
+ #include "Element.h"
12
+ #include "Visitor.h"
13
+
14
+ #include "TypeQueryVisitor.h"
15
+ #include "ComparableVisitor.h"
16
+
17
+ // this will be removed, refract should not contain reference to other libraries
18
+ #include "SourceAnnotation.h"
19
+
20
+ namespace refract
21
+ {
22
+ template<typename T>
23
+ bool IsTypeAttribute(const T& e, std::string typeAttribute) {
24
+ IElement::MemberElementCollection::const_iterator ta = e.attributes.find("typeAttributes");
25
+
26
+ if (ta == e.attributes.end()) {
27
+ return false;
28
+ }
29
+
30
+ ArrayElement* attrs = TypeQueryVisitor::as<ArrayElement>((*ta)->value.second);
31
+
32
+ if (!attrs) {
33
+ return false;
34
+ }
35
+
36
+ for (ArrayElement::ValueType::const_iterator it = attrs->value.begin() ; it != attrs->value.end() ; ++it ) {
37
+ StringElement* attr = TypeQueryVisitor::as<StringElement>(*it);
38
+ if (!attr) {
39
+ continue;
40
+ }
41
+ if (attr->value == typeAttribute) {
42
+ return true;
43
+ }
44
+ }
45
+
46
+ return false;
47
+ }
48
+
49
+ template<typename T>
50
+ bool IsVariableProperty(const T& e) {
51
+ IElement::MemberElementCollection::const_iterator i = e.attributes.find("variable");
52
+
53
+ if (i == e.attributes.end()) {
54
+ return false;
55
+ }
56
+
57
+ BooleanElement* b = TypeQueryVisitor::as<BooleanElement>((*i)->value.second);
58
+ return b ? b->value : false;
59
+ }
60
+
61
+
62
+ template<typename T>
63
+ const T* GetDefault(const T& e) {
64
+ IElement::MemberElementCollection::const_iterator i = e.attributes.find("default");
65
+
66
+ if (i == e.attributes.end()) {
67
+ return NULL;
68
+ }
69
+
70
+ return TypeQueryVisitor::as<T>((*i)->value.second);
71
+ }
72
+
73
+ template<typename T>
74
+ const T* GetSample(const T& e) {
75
+ IElement::MemberElementCollection::const_iterator i = e.attributes.find("samples");
76
+
77
+ if (i == e.attributes.end()) {
78
+ return NULL;
79
+ }
80
+
81
+ ArrayElement* a = TypeQueryVisitor::as<ArrayElement>((*i)->value.second);
82
+
83
+ if (!a || a->value.empty()) {
84
+ return NULL;
85
+ }
86
+
87
+ return TypeQueryVisitor::as<T>(*(a->value.begin()));
88
+ }
89
+
90
+ template<typename T, typename R = typename T::ValueType>
91
+ struct GetValue {
92
+ const T& element;
93
+
94
+ GetValue(const T& e) : element(e) {}
95
+
96
+ operator const R*() {
97
+ // FIXME: if value is propageted as first
98
+ // following example will be rendered w/ empty members
99
+ // ```
100
+ // - o
101
+ // - m1
102
+ // - m2
103
+ // - sample
104
+ // - m1: a
105
+ // - m2: b
106
+ // ```
107
+ // because `o` has members `m1` and `m2` , but members has no sed value
108
+ if (!element.empty()) {
109
+ return &element.value;
110
+ }
111
+
112
+ if (const T* s = GetSample(element)) {
113
+ return &s->value;
114
+ }
115
+
116
+ if (const T* d = GetDefault(element)) {
117
+ return &d->value;
118
+ }
119
+
120
+ if (element.empty() && IsTypeAttribute(element, "nullable")) {
121
+ return NULL;
122
+ }
123
+
124
+ return &element.value;
125
+ }
126
+ };
127
+
128
+ struct GetEnumValue {
129
+ const EnumElement& element;
130
+
131
+ GetEnumValue(const EnumElement& e) : element(e) {}
132
+
133
+ operator const EnumElement::ValueType*() {
134
+ if (const EnumElement* s = GetSample(element)) {
135
+ return &s->value;
136
+ }
137
+
138
+ if (const EnumElement* d = GetDefault(element)) {
139
+ return &d->value;
140
+ }
141
+
142
+ if (!element.empty()) {
143
+ return &element.value;
144
+ }
145
+
146
+ if (element.empty() && IsTypeAttribute(element, "nullable")) {
147
+ return NULL;
148
+ }
149
+
150
+ return &element.value;
151
+ }
152
+ };
153
+
154
+ // will be moved into different header (as part of drafter instead of refract)
155
+ template <typename T>
156
+ void CheckMixinParent(refract::IElement* element)
157
+ {
158
+ const T* resolved = TypeQueryVisitor::as<T>(element);
159
+
160
+ if (!resolved) {
161
+ throw snowcrash::Error("mixin base type should be the same as parent base type. objects should contain object mixins. arrays should contain array mixins", snowcrash::MSONError);
162
+ }
163
+ }
164
+
165
+ // will be moved into different header (as part of drafter instead of refract)
166
+ template<typename T, typename Functor>
167
+ void HandleRefWhenFetchingMembers(const refract::IElement* e, typename T::ValueType& members, const Functor& functor)
168
+ {
169
+ IElement::MemberElementCollection::const_iterator found = e->attributes.find("resolved");
170
+
171
+ if (found == e->attributes.end()) {
172
+ return;
173
+ }
174
+
175
+ const ExtendElement* extended = TypeQueryVisitor::as<ExtendElement>((*found)->value.second);
176
+
177
+ if (!extended) {
178
+ CheckMixinParent<T>((*found)->value.second);
179
+ // We can safely cast it because we are already checking the type in the above line.
180
+ functor(static_cast<const T&>(*(*found)->value.second), members);
181
+ return;
182
+ }
183
+
184
+ for (RefractElements::const_iterator it = extended->value.begin();
185
+ it != extended->value.end();
186
+ ++it) {
187
+
188
+ CheckMixinParent<T>(*it);
189
+ // We can safely cast it because we are already checking the type in the above line.
190
+ functor(static_cast<const T&>(**it), members);
191
+ }
192
+ }
193
+
194
+ template <typename T>
195
+ MemberElement* FindMemberByKey(const T& e,
196
+ const std::string& name)
197
+ {
198
+ for (typename T::ValueType::const_iterator it = e.value.begin()
199
+ ; it != e.value.end()
200
+ ; ++it ) {
201
+
202
+ ComparableVisitor cmp(name, ComparableVisitor::key);
203
+ VisitBy(*(*it), cmp);
204
+
205
+ if (cmp.get()) { // key was recognized - it is save to cast to MemberElement
206
+ return static_cast<MemberElement*>(*it);
207
+ }
208
+ }
209
+
210
+ return NULL;
211
+ }
212
+
213
+ template <typename T>
214
+ T* FindCollectionMemberValue(const IElement::MemberElementCollection& collection, const std::string& key) {
215
+ IElement::MemberElementCollection::const_iterator i = collection.find(key);
216
+ if (i == collection.end()) {
217
+ return NULL;
218
+ }
219
+
220
+ return TypeQueryVisitor::as<T>((*i)->value.second);
221
+ }
222
+
223
+ std::string GetKeyAsString(const MemberElement& e);
224
+
225
+ StringElement* GetDescription(const IElement& e);
226
+
227
+ void SetRenderFlag(RefractElements& elements, const IElement::renderFlags flag);
228
+
229
+ }
230
+
231
+ #endif /* REFRACT_VISITORUTILS_H */
@@ -0,0 +1,263 @@
1
+ //
2
+ // reporting.cc
3
+ // drafter
4
+ //
5
+ // Created by Jiri Kratochvil on 2015-02-13
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "reporting.h"
10
+
11
+ #include <algorithm>
12
+ #include <iostream>
13
+
14
+ #include "refract/Element.h"
15
+ #include "refract/FilterVisitor.h"
16
+ #include "refract/Query.h"
17
+ #include "refract/Iterate.h"
18
+ #include "refract/TypeQueryVisitor.h"
19
+
20
+ #include "refract/VisitorUtils.h"
21
+
22
+ namespace sc = snowcrash;
23
+
24
+ /** structure contains starting and ending position of a error/warning. */
25
+ struct AnnotationPosition {
26
+ size_t fromLine;
27
+ size_t fromColumn;
28
+ size_t toLine;
29
+ size_t toColumn;
30
+ };
31
+
32
+ /**
33
+ * \brief Convert character index mapping to line and column number
34
+ * \param linesEndIndex Vector containing indexes of end line characters
35
+ * \param range Character index mapping as input
36
+ * \param out Position of the given range as output
37
+ */
38
+ void GetLineFromMap(const std::vector<size_t>& linesEndIndex,
39
+ const mdp::Range& range,
40
+ AnnotationPosition& out)
41
+ {
42
+
43
+ std::vector<size_t>::const_iterator annotationPositionIt;
44
+
45
+ out.fromLine = 0;
46
+ out.fromColumn = 0;
47
+ out.toLine = 0;
48
+ out.toColumn = 0;
49
+
50
+ // Finds starting line and column position
51
+ annotationPositionIt = std::upper_bound(linesEndIndex.begin(), linesEndIndex.end(), range.location) - 1;
52
+
53
+ if (annotationPositionIt != linesEndIndex.end()) {
54
+
55
+ out.fromLine = std::distance(linesEndIndex.begin(), annotationPositionIt) + 1;
56
+ out.fromColumn = range.location - *annotationPositionIt + 1;
57
+ }
58
+
59
+ // Finds ending line and column position
60
+ annotationPositionIt = std::lower_bound(linesEndIndex.begin(), linesEndIndex.end(), range.location + range.length) - 1;
61
+
62
+ if (annotationPositionIt != linesEndIndex.end()) {
63
+
64
+ out.toLine = std::distance(linesEndIndex.begin(), annotationPositionIt) + 1;
65
+ out.toColumn = (range.location + range.length) - *annotationPositionIt + 1;
66
+
67
+ if (*(annotationPositionIt + 1) == (range.location + range.length)) {
68
+ out.toColumn--;
69
+ }
70
+ }
71
+ }
72
+
73
+ /**
74
+ * \brief Given the source returns the length of all the lines in source as a vector
75
+ * \param source Source data
76
+ * \param out Vector containing indexes of all end line character in source
77
+ */
78
+ void GetLinesEndIndex(const std::string& source,
79
+ std::vector<size_t>& out)
80
+ {
81
+
82
+ out.push_back(0);
83
+
84
+ for (size_t i = 0; i < source.length(); i++) {
85
+
86
+ if (source[i] == '\n') {
87
+ out.push_back(i + 1);
88
+ }
89
+ }
90
+ }
91
+
92
+ void PrintAnnotation(const std::string& prefix,
93
+ const snowcrash::SourceAnnotation& annotation,
94
+ const std::string& source,
95
+ const bool useLineNumbers)
96
+ {
97
+
98
+ std::cerr << prefix;
99
+
100
+ if (annotation.code != sc::SourceAnnotation::OK) {
101
+ std::cerr << " (" << annotation.code << ") ";
102
+ }
103
+
104
+ if (!annotation.message.empty()) {
105
+ std::cerr << " " << annotation.message;
106
+ }
107
+
108
+ std::vector<size_t> linesEndIndex;
109
+
110
+ if (useLineNumbers) {
111
+ GetLinesEndIndex(source, linesEndIndex);
112
+ }
113
+
114
+ if (!annotation.location.empty()) {
115
+
116
+ for (mdp::CharactersRangeSet::const_iterator it = annotation.location.begin();
117
+ it != annotation.location.end();
118
+ ++it) {
119
+
120
+ if (useLineNumbers) {
121
+
122
+ AnnotationPosition annotationPosition;
123
+ GetLineFromMap(linesEndIndex, *it, annotationPosition);
124
+
125
+ std::cerr << "; line " << annotationPosition.fromLine << ", column " << annotationPosition.fromColumn;
126
+ std::cerr << " - line " << annotationPosition.toLine << ", column " << annotationPosition.toColumn;
127
+ }
128
+ else {
129
+
130
+ std::cerr << ((it == annotation.location.begin()) ? " :" : ";");
131
+ std::cerr << it->location << ":" << it->length;
132
+ }
133
+ }
134
+ }
135
+
136
+ std::cerr << std::endl;
137
+ }
138
+
139
+ /**
140
+ * \brief Print parser report to stderr.
141
+ * \param report A parser report to print
142
+ * \param source Source data
143
+ * \param isUseLineNumbers True if the annotations needs to be printed by line and column number
144
+ */
145
+ void PrintReport(const snowcrash::Report& report,
146
+ const std::string& source,
147
+ const bool isUseLineNumbers)
148
+ {
149
+
150
+ std::cerr << std::endl;
151
+
152
+ if (report.error.code == sc::Error::OK) {
153
+ std::cerr << "OK.\n";
154
+ }
155
+ else {
156
+ PrintAnnotation("error:", report.error, source, isUseLineNumbers);
157
+ }
158
+
159
+ for (snowcrash::Warnings::const_iterator it = report.warnings.begin(); it != report.warnings.end(); ++it) {
160
+ PrintAnnotation("warning:", *it, source, isUseLineNumbers);
161
+ }
162
+ }
163
+
164
+ struct AnnotationToString {
165
+
166
+ std::vector<size_t> linesEndIndex;
167
+ const bool useLineNumbers;
168
+
169
+ AnnotationToString(const std::string& source, const bool useLineNumbers) : useLineNumbers(useLineNumbers) {
170
+ if (useLineNumbers) {
171
+ GetLinesEndIndex(source, linesEndIndex);
172
+ }
173
+ }
174
+
175
+ const std::string location(const refract::IElement* sourceMap) {
176
+ std::stringstream output;
177
+ const refract::ArrayElement* map = refract::TypeQueryVisitor::as<refract::ArrayElement>(sourceMap);
178
+ if (map && map->value.size() == 2) {
179
+ refract::NumberElement* loc = refract::TypeQueryVisitor::as<refract::NumberElement>(map->value[0]);
180
+ refract::NumberElement* len = refract::TypeQueryVisitor::as<refract::NumberElement>(map->value[1]);
181
+ if (loc && len) {
182
+ if (useLineNumbers) {
183
+
184
+ AnnotationPosition annotationPosition;
185
+ mdp::Range pos(loc->value, len->value);
186
+ GetLineFromMap(linesEndIndex, pos, annotationPosition);
187
+
188
+ output << "; line " << annotationPosition.fromLine << ", column " << annotationPosition.fromColumn;
189
+ output << " - line " << annotationPosition.toLine << ", column " << annotationPosition.toColumn;
190
+ }
191
+ else {
192
+ output << loc->value << ":" << len->value;
193
+ }
194
+ }
195
+ }
196
+ return output.str();
197
+ }
198
+
199
+ const std::string operator()(const refract::IElement* annotation) {
200
+ std::stringstream output;
201
+
202
+ if (!annotation || annotation->element() != "annotation") {
203
+ return output.str();
204
+ }
205
+
206
+ if (const refract::ArrayElement* classes = refract::FindCollectionMemberValue<refract::ArrayElement>(annotation->meta, "classes")) {
207
+ if (classes->value.size() == 1) {
208
+ refract::StringElement* type = refract::TypeQueryVisitor::as<refract::StringElement>(classes->value.front());
209
+ if (type) {
210
+ output << type->value << ": ";
211
+ }
212
+ }
213
+ };
214
+
215
+ if (const refract::NumberElement* code = refract::FindCollectionMemberValue<refract::NumberElement>(annotation->attributes, "code")) {
216
+ output << "(" <<code->value << ") ";
217
+ }
218
+
219
+ if (const refract::StringElement* message = refract::TypeQueryVisitor::as<refract::StringElement>(annotation)) {
220
+ output << message->value;
221
+ }
222
+
223
+ if (refract::ArrayElement* sourceMap = refract::FindCollectionMemberValue<refract::ArrayElement>(annotation->attributes, "sourceMap")) {
224
+ if (sourceMap->value.size() == 1) {
225
+ sourceMap = refract::TypeQueryVisitor::as<refract::ArrayElement>(sourceMap->value.front());
226
+ if (sourceMap) {
227
+ for (refract::IElement* array : sourceMap->value) {
228
+ if (!useLineNumbers) {
229
+ const char* prefix = array == (*sourceMap->value.begin()) ? " :" :";";
230
+ output << prefix;
231
+ }
232
+ output << location(array);
233
+ }
234
+ }
235
+ }
236
+ };
237
+
238
+ return output.str();
239
+ }
240
+ };
241
+
242
+ void PrintReport(const drafter_result* result,
243
+ const std::string& source,
244
+ const bool useLineNumbers,
245
+ const int error)
246
+ {
247
+ std::cerr << std::endl;
248
+
249
+ refract::FilterVisitor filter(refract::query::Element("annotation"));
250
+ refract::Iterate<refract::Children> iterate(filter);
251
+ iterate(*result);
252
+
253
+ refract::RefractElements elements;
254
+
255
+ if (error == sc::Error::OK) {
256
+ std::cerr << "OK.\n";
257
+ }
258
+
259
+ std::transform(filter.elements().begin(), filter.elements().end(),
260
+ std::ostream_iterator<std::string>(std::cerr, "\n"),
261
+ AnnotationToString(source, useLineNumbers));
262
+
263
+ }
@@ -0,0 +1,39 @@
1
+ //
2
+ // reporting.h
3
+ // drafter
4
+ //
5
+ // Created by Jiri Kratochvil on 2015-02-13
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_REPORTING_H
10
+ #define DRAFTER_REPORTING_H
11
+
12
+ #include "drafter.h"
13
+ #include "SourceAnnotation.h"
14
+
15
+ /**
16
+ * \brief Print parser report to stderr.
17
+ *
18
+ * \param report A parser report to print
19
+ * \param source Source data
20
+ * \param useLineNumbers True if the annotations needs to be printed by line and column number
21
+ */
22
+ void PrintReport(const snowcrash::Report& report,
23
+ const std::string& source,
24
+ const bool useLineNumbers);
25
+
26
+ /**
27
+ * \brief Print parser report to stderr.
28
+ *
29
+ * \param report A parser report to print
30
+ * \param source Source data
31
+ * \param useLineNumbers True if the annotations needs to be printed by line and column number
32
+ * \param error - code form parsing
33
+ */
34
+ void PrintReport(const drafter_result*,
35
+ const std::string& source,
36
+ const bool useLineNumbers,
37
+ const int error);
38
+
39
+ #endif // #ifndef DRAFTER_REPORTING_H
@@ -0,0 +1,148 @@
1
+ //
2
+ // stream.h
3
+ // drafter
4
+ //
5
+ // Created by Jiri Kratochvil on 2015-03-03
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_STREAM_H
10
+ #define DRAFTER_STREAM_H
11
+
12
+ #include <memory>
13
+
14
+ #include <string>
15
+
16
+ #include <iostream>
17
+ #include <sstream>
18
+ #include <fstream>
19
+
20
+ /**
21
+ * \brief proxy redirect i/o operations to stdin/stdout
22
+ * and avoid close stdin/stdout while delete
23
+ */
24
+ template <typename T> struct std_io_proxy;
25
+
26
+ template <> struct std_io_proxy<std::ostream> : public std::ostream {
27
+ //std::streambuf dummy;
28
+ std::stringbuf dummy;
29
+
30
+ std_io_proxy() : std::ostream(std::cout.rdbuf())
31
+ {
32
+ //rdbuf(std::cout.rdbuf());
33
+ }
34
+
35
+ virtual ~std_io_proxy()
36
+ {
37
+ rdbuf(&dummy);
38
+ }
39
+ };
40
+
41
+ template <> struct std_io_proxy<std::istream> : public std::istream {
42
+ //std::streambuf dummy;
43
+ std::stringbuf dummy;
44
+
45
+ std_io_proxy() : std::istream(std::cin.rdbuf())
46
+ {
47
+ //saved = rdbuf(std::cin.rdbuf());
48
+ }
49
+
50
+ virtual ~std_io_proxy()
51
+ {
52
+ rdbuf(&dummy);
53
+ }
54
+ };
55
+
56
+ /**
57
+ * \brief functor returns cin/cout ptr in based on istream or ostream
58
+ */
59
+ template<typename T> struct std_io {
60
+ T* operator()() const
61
+ {
62
+ return new std_io_proxy<T>();
63
+ }
64
+ };
65
+
66
+ /**
67
+ * \brief functor returns appropriate cin/cout based on istream/ostream
68
+ */
69
+ template<typename T> struct std_io_selector {
70
+ typedef T stream_type;
71
+ typedef stream_type* return_type;
72
+
73
+ return_type operator()() const
74
+ {
75
+ return return_type(std_io<T>()());
76
+ }
77
+ };
78
+
79
+ /**
80
+ * \brief functor select fstream based on iostream
81
+ */
82
+ template <typename T> struct to_fstream;
83
+
84
+ template<>
85
+ struct to_fstream<std::istream>{
86
+ typedef std::ifstream stream_type;
87
+ static std::ios_base::openmode open_flags() { return std::ios_base::in | std::ios_base::binary; }
88
+ };
89
+
90
+ template<>
91
+ struct to_fstream<std::ostream>{
92
+ typedef std::ofstream stream_type;
93
+ static std::ios_base::openmode open_flags() { return std::ios_base::out | std::ios_base::binary; }
94
+ };
95
+
96
+ /**
97
+ * \brief functor select return appropriate opened fstream based on type of stream
98
+ */
99
+ template<typename T> struct fstream_io_selector{
100
+ typedef typename to_fstream<T>::stream_type stream_type;
101
+ typedef stream_type* return_type;
102
+
103
+ return_type operator()(const char* name) const
104
+ {
105
+ return return_type(new stream_type(name, to_fstream<T>::open_flags()));
106
+ }
107
+ };
108
+
109
+ /**
110
+ * \brief return pointer to readable/writable stream or report error and exit()
111
+ *
112
+ * free allocated memory must be released by calling `delete`
113
+ * optionaly you can use std::unique_ptr<>
114
+ *
115
+ * return is based on \template param T (must be std::ostream or std::istream)
116
+ *
117
+ * For std::istream it return opened std::ifstream with filename as in \param `file`
118
+ * if \param `file` is empty it will return std::cin
119
+ *
120
+ * In similar way it work for std::ostream
121
+ *
122
+ * \param template<T> type of returned stream
123
+ * \param file - name of file to open for read/write if empty use standart input/output
124
+ *
125
+ */
126
+
127
+ template<typename T>
128
+ T* CreateStreamFromName(const std::string& file)
129
+ {
130
+ if (file.empty()) {
131
+ return std_io_selector<T>()();
132
+ }
133
+
134
+ typedef typename fstream_io_selector<T>::return_type return_type;
135
+
136
+ return_type stream = fstream_io_selector<T>()(file.c_str());
137
+
138
+ if (!stream->is_open()) {
139
+ std::cerr << "fatal: unable to open file '" << file << "'\n";
140
+ delete stream;
141
+ exit(EXIT_FAILURE);
142
+ }
143
+
144
+ return stream;
145
+ }
146
+
147
+
148
+ #endif // #ifndef DRAFTER_STREAM_H
@@ -0,0 +1,18 @@
1
+ require 'formula'
2
+
3
+ class Drafter < Formula
4
+ homepage 'http://apiblueprint.org'
5
+ head 'https://github.com/apiaryio/drafter.git', :tag => 'v3.2.2'
6
+
7
+ def install
8
+ system "./configure", "--shared"
9
+ system "make", "drafter"
10
+ bin.install Dir["bin/drafter"]
11
+ (include + "drafter").install Dir["src/drafter.h"]
12
+ lib.install Dir["build/out/Release/libdrafter.dylib"]
13
+ end
14
+
15
+ test do
16
+ system bin/"drafter", "--help"
17
+ end
18
+ end