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,102 @@
1
+ //
2
+ // drafter.h
3
+ // drafter
4
+ //
5
+ // Created by Jiri Kratochvil on 2016-06-27
6
+ // Copyright (c) 2016 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef DRAFTER_H
10
+ #define DRAFTER_H
11
+
12
+ #ifdef __cplusplus
13
+ extern "C" {
14
+ #endif
15
+
16
+ //#if defined(BUILDING_DRAFTER)
17
+ #if defined(BUILDING_SNOWCRASH)
18
+ # define DEPRECATED
19
+ #endif
20
+
21
+ #if defined(_MSC_VER)
22
+ # if !defined(DEPRECATED)
23
+ # define DEPRECATED __declspec(deprecated)
24
+ # endif
25
+ #elif defined(__clang__) || defined(__GNUC__)
26
+ # if !defined(DEPRECATED)
27
+ # define DEPRECATED __attribute__((deprecated))
28
+ # endif
29
+ #else
30
+ # if !defined(DEPRECATED)
31
+ # define DEPRECATED
32
+ # endif
33
+ #endif
34
+
35
+ #ifndef DRAFTER_API
36
+ # if defined _WIN32 || defined __CYGWIN__
37
+ # if defined(DRAFTER_BUILD_SHARED) /* build dll */
38
+ # define DRAFTER_API __declspec(dllexport)
39
+ # elif !defined(DRAFTER_BUILD_STATIC) /* use dll */
40
+ # define DRAFTER_API __declspec(dllimport)
41
+ # else /* static library */
42
+ # define DRAFTER_API /* nothing */
43
+ # endif
44
+ # else
45
+ # if __GNUC__ >= 4
46
+ # define DRAFTER_API __attribute__((visibility("default")))
47
+ # else
48
+ # define DRAFTER_API
49
+ # endif
50
+ # endif
51
+ #endif
52
+
53
+
54
+ #ifndef __cplusplus
55
+ #include <stdbool.h>
56
+ typedef struct drafter_result drafter_result;
57
+ #else
58
+ namespace refract {
59
+ struct IElement;
60
+ }
61
+ typedef refract::IElement drafter_result;
62
+ #endif
63
+
64
+
65
+ typedef enum {
66
+ DRAFTER_SERIALIZE_YAML = 0,
67
+ DRAFTER_SERIALIZE_JSON
68
+ } drafter_format;
69
+
70
+ typedef struct {
71
+ bool sourcemap;
72
+ drafter_format format;
73
+ } drafter_options;
74
+
75
+ /* Parse API Blueprint and serialize it to given format.*/
76
+ DRAFTER_API int drafter_parse_blueprint_to(const char* source,
77
+ char** out,
78
+ const drafter_options options);
79
+
80
+ /* Parse API Blueprint and return result, which is a opaque handle for
81
+ * later use*/
82
+ DRAFTER_API int drafter_parse_blueprint(const char* source, drafter_result** out);
83
+
84
+ /* Serialize result to given format*/
85
+ DRAFTER_API char* drafter_serialize(drafter_result *res, const drafter_options options);
86
+
87
+ /* Free memory alocated for result handler */
88
+ DRAFTER_API void drafter_free_result(drafter_result* result);
89
+
90
+ /* Parse API Blueprint and return only annotations, if NULL than
91
+ * document is error and warning free.*/
92
+ DRAFTER_API drafter_result* drafter_check_blueprint(const char* source);
93
+
94
+ DRAFTER_API unsigned int drafter_version(void);
95
+
96
+ DRAFTER_API const char* drafter_version_string(void);
97
+
98
+ #ifdef __cplusplus
99
+ }
100
+ #endif
101
+
102
+ #endif // #ifndef DRAFTER_H
@@ -0,0 +1,85 @@
1
+ //
2
+ // drafter_private.cc
3
+ // drafter
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 20/10/16.
6
+ // Copyright © 2016 Apiary. All rights reserved.
7
+ //
8
+
9
+ #include "drafter_private.h"
10
+
11
+ #include "snowcrash.h"
12
+
13
+ #include "refract/Element.h"
14
+ #include "refract/FilterVisitor.h"
15
+ #include "refract/Query.h"
16
+ #include "refract/Iterate.h"
17
+
18
+ #include "SerializeResult.h" // FIXME: remove - actualy required by WrapParseResultRefract()
19
+ #include "Serialize.h" // FIXME: remove - actualy required by WrapperOptions
20
+ #include "ConversionContext.h" // FIXME: remove - required by ConversionContext
21
+
22
+ namespace sc = snowcrash;
23
+
24
+ DRAFTER_API int drafter_parse_blueprint_with_options(const char* source,
25
+ drafter_result** out,
26
+ const drafter_parse_options options) {
27
+
28
+ if (!source || !out) {
29
+ return -1;
30
+ }
31
+
32
+ sc::BlueprintParserOptions scOptions = sc::ExportSourcemapOption;
33
+
34
+ if (options.requireBlueprintName) {
35
+ scOptions |= sc::RequireBlueprintNameOption;
36
+ }
37
+
38
+ sc::ParseResult<sc::Blueprint> blueprint;
39
+ sc::parse(source, scOptions, blueprint);
40
+
41
+ drafter::WrapperOptions wrapperOptions(drafter::RefractASTType);
42
+ drafter::ConversionContext context(wrapperOptions);
43
+ refract::IElement* result = WrapParseResultRefract(blueprint, context);
44
+
45
+ *out = result;
46
+
47
+ return blueprint.report.error.code;
48
+ }
49
+
50
+ DRAFTER_API drafter_result* drafter_check_blueprint_with_options(const char* source,
51
+ const drafter_parse_options options) {
52
+
53
+ if (!source) {
54
+ return nullptr;
55
+ }
56
+
57
+ drafter_result* result = nullptr;
58
+
59
+ drafter_parse_blueprint_with_options(source, &result, options);
60
+
61
+ if (!result) {
62
+ return nullptr;
63
+ }
64
+
65
+ drafter_result* out = nullptr;
66
+
67
+ refract::FilterVisitor filter(refract::query::Element("annotation"));
68
+ refract::Iterate<refract::Children> iterate(filter);
69
+ iterate(*result);
70
+
71
+ if (!filter.empty()) {
72
+ refract::ArrayElement::ValueType elements;
73
+
74
+ std::transform(filter.elements().begin(), filter.elements().end(),
75
+ std::back_inserter(elements),
76
+ std::bind(&refract::IElement::clone, std::placeholders::_1, refract::IElement::cAll));
77
+
78
+ out = new refract::ArrayElement(elements);
79
+ out->element(drafter::SerializeKey::ParseResult);
80
+ }
81
+
82
+ drafter_free_result(result);
83
+
84
+ return out;
85
+ }
@@ -0,0 +1,34 @@
1
+ //
2
+ // drafter_private.h
3
+ // drafter
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 20/10/16.
6
+ // Copyright © 2016 Apiary. All rights reserved.
7
+ //
8
+
9
+ //TODO: This should be merged with drafter.h in next major release
10
+ #ifndef DRAFTER_PRIVATE_H
11
+ #define DRAFTER_PRIVATE_H
12
+
13
+ #include "drafter.h"
14
+
15
+ #ifdef __cplusplus
16
+ extern "C" {
17
+ #endif
18
+
19
+ typedef struct {
20
+ bool requireBlueprintName;
21
+ } drafter_parse_options;
22
+
23
+ DRAFTER_API int drafter_parse_blueprint_with_options(const char* source,
24
+ drafter_result** out,
25
+ const drafter_parse_options options);
26
+
27
+ DRAFTER_API drafter_result* drafter_check_blueprint_with_options(const char* source,
28
+ const drafter_parse_options options);
29
+
30
+ #ifdef __cplusplus
31
+ }
32
+ #endif
33
+
34
+ #endif // #ifndef DRAFTER_PRIVATE_H
@@ -0,0 +1,137 @@
1
+ // vi:cin:et:sw=4 ts=4
2
+ //
3
+ // drafter.cc
4
+ //
5
+ // Created by Jiri Kratochvil on 2015-02-11
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+ //
9
+ #include "drafter.h"
10
+
11
+ #include "snowcrash.h"
12
+ #include "SectionParserData.h" // snowcrash::BlueprintParserOptions
13
+
14
+ #include "sos.h"
15
+ #include "sosJSON.h"
16
+ #include "sosYAML.h"
17
+
18
+ #include "SerializeResult.h"
19
+
20
+ #include "reporting.h"
21
+ #include "config.h"
22
+ #include "stream.h"
23
+
24
+ #include "ConversionContext.h"
25
+
26
+ namespace sc = snowcrash;
27
+
28
+ /**
29
+ * \brief return instance sos::Serializer based on \param `format`
30
+ *
31
+ * \param format - output format for serialization
32
+ */
33
+ sos::Serialize* CreateSerializer(const drafter::SerializeFormat& format)
34
+ {
35
+ if (format == drafter::JSONFormat) {
36
+ return new sos::SerializeJSON;
37
+ }
38
+
39
+ return new sos::SerializeYAML;
40
+ }
41
+
42
+ /**
43
+ * \brief Serialize sos::Object into stream
44
+ */
45
+ void Serialization(std::ostream *stream,
46
+ const sos::Object& object,
47
+ sos::Serialize* serializer)
48
+ {
49
+ serializer->process(object, *stream);
50
+ *stream << "\n";
51
+ *stream << std::flush;
52
+ }
53
+
54
+ int ProcessAST(const Config& config, std::unique_ptr<std::istream>& in, std::unique_ptr<std::ostream>& out)
55
+ {
56
+ std::stringstream inputStream;
57
+ inputStream << in->rdbuf();
58
+
59
+ sc::ParseResult<sc::Blueprint> blueprint;
60
+ sc::parse(inputStream.str(), snowcrash::ExportSourcemapOption, blueprint);
61
+
62
+ std::unique_ptr<sos::Serialize> serializer(CreateSerializer(config.format));
63
+
64
+ try {
65
+ sos::Object resultObject = drafter::WrapResult(blueprint, drafter::WrapperOptions(config.astType, config.sourceMap));
66
+
67
+ if (!config.validate) { // If not validate, we serialize
68
+ Serialization(out.get(), resultObject, serializer.get());
69
+ }
70
+ }
71
+ catch (snowcrash::Error& e) {
72
+ blueprint.report.error = e;
73
+ }
74
+ catch (std::exception& e) {
75
+ blueprint.report.error = snowcrash::Error(e.what(), snowcrash::ApplicationError);
76
+ }
77
+
78
+ PrintReport(blueprint.report, inputStream.str(), config.lineNumbers);
79
+
80
+ return blueprint.report.error.code;
81
+ }
82
+
83
+ int ProcessRefract(const Config& config, std::unique_ptr<std::istream>& in, std::unique_ptr<std::ostream>& out)
84
+ {
85
+ std::stringstream inputStream;
86
+ inputStream << in->rdbuf();
87
+
88
+ drafter_options options;
89
+ options.sourcemap = config.sourceMap;
90
+ options.format = config.format == drafter::YAMLFormat
91
+ ? DRAFTER_SERIALIZE_YAML
92
+ : DRAFTER_SERIALIZE_JSON;
93
+
94
+ refract::IElement* result = nullptr;
95
+
96
+ int ret = drafter_parse_blueprint(inputStream.str().c_str(), &result);
97
+
98
+ if (!result) {
99
+ return -1;
100
+ }
101
+
102
+ if (!config.validate) { // If not validate, we serialize
103
+ char* output = drafter_serialize(result, options);
104
+
105
+ if (output) {
106
+ *out << output
107
+ << "\n"
108
+ << std::flush;
109
+
110
+ free(output);
111
+ }
112
+ }
113
+
114
+ PrintReport(result, inputStream.str(), config.lineNumbers, ret);
115
+
116
+ drafter_free_result(result);
117
+
118
+ return ret;
119
+ }
120
+
121
+ int main(int argc, const char *argv[])
122
+ {
123
+ Config config;
124
+ ParseCommadLineOptions(argc, argv, config);
125
+
126
+ std::unique_ptr<std::istream> in(CreateStreamFromName<std::istream>(config.input));
127
+ std::unique_ptr<std::ostream> out(CreateStreamFromName<std::ostream>(config.output));
128
+
129
+ if (config.astType == drafter::RefractASTType) {
130
+ return ProcessRefract(config, in, out);
131
+ }
132
+ else if (config.astType == drafter::NormalASTType) {
133
+ return ProcessAST(config, in, out);
134
+ }
135
+
136
+
137
+ }
@@ -0,0 +1,58 @@
1
+ //
2
+ // refract/AppendDecorator.h
3
+ // librefract
4
+ //
5
+ // Created by Jiri Kratochvil on 17/06/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+ #ifndef REFRACT_APPENDDECORATOR_H
9
+ #define REFRACT_APPENDDECORATOR_H
10
+
11
+ #include <iterator>
12
+
13
+ namespace refract
14
+ {
15
+
16
+ // Forward declarations of Elements
17
+ struct IElement;
18
+
19
+ template <typename T, typename V = typename T::ValueType>
20
+ struct AppendDecorator {
21
+ typedef T ElementType;
22
+ typedef V ValueType;
23
+ ElementType*& element;
24
+ AppendDecorator(ElementType*& e) : element(e)
25
+ {
26
+ }
27
+
28
+ void operator()(const V& value)
29
+ {
30
+ // FIXME: snowcrash warn about "Primitive type can not have member"
31
+ // but in real it create "empty" member
32
+ //
33
+ // solution for now: set if element has no already value, otherwise silently ignore
34
+ if (element->empty()) {
35
+ element->set(value);
36
+ }
37
+ }
38
+ };
39
+
40
+ template <typename T>
41
+ struct AppendDecorator<T, std::vector<refract::IElement*> > {
42
+ typedef T ElementType;
43
+ typedef typename T::ValueType ValueType;
44
+ ElementType*& element;
45
+
46
+ AppendDecorator(ElementType*& e) : element(e)
47
+ {
48
+ }
49
+
50
+ void operator()(const ValueType& value)
51
+ {
52
+ std::transform(value.begin(), value.end(), std::back_inserter(element));
53
+ }
54
+ };
55
+
56
+ }; // namespace refract
57
+
58
+ #endif // #ifndef REFRACT_APPENDDECORATOR_H
@@ -0,0 +1,67 @@
1
+
2
+ //
3
+ // refract/Build.h
4
+ // librefract
5
+ //
6
+ // Created by Jiri Kratochvil on 03/01/16.
7
+ // Copyright (c) 2016 Apiary Inc. All rights reserved.
8
+ //
9
+ #ifndef REFRACT_BUILD_H
10
+ #define REFRACT_BUILD_H
11
+
12
+ namespace refract
13
+ {
14
+ /**
15
+ * Simple concept based on operator() override. It
16
+ * allows tricky creating of complex refract structures
17
+ * eg:
18
+ * ```
19
+ return Build(new ObjectElement)
20
+ ("m1", IElement::Create("Value"))
21
+ ("m2", Build(new ArrayElement)
22
+ (IElement::Create("m2[0]"))
23
+ )
24
+ ("m3", Build(new ObjectElement)
25
+ ("m3.1", IElement::Create("Str3.1"))
26
+ ("m3.2", IElement::Create(3.2))
27
+ ("m3.3", Build(new ObjectElement)
28
+ ("m3.3.1", IElement::Create("Str3/4/1"))
29
+ ("m3.3.2", IElement::Create(3.42))
30
+ ("m3.3.2", new NullElement)
31
+ )
32
+ );
33
+ * ```
34
+ */
35
+ template <typename T>
36
+ struct ElementBuilder {
37
+ T* element;
38
+
39
+ ElementBuilder(T* element) : element(element) {}
40
+
41
+ operator T*() {
42
+ return element;
43
+ }
44
+
45
+ ElementBuilder<T>& operator()(IElement* member) {
46
+ element->push_back(member);
47
+ return *this;
48
+ }
49
+
50
+ ElementBuilder<T>& operator()(IElement* key, IElement* value) {
51
+ element->push_back(new MemberElement(key, value));
52
+ return *this;
53
+ }
54
+
55
+ ElementBuilder<T>& operator()(const std::string& key, IElement* value) {
56
+ element->push_back(new MemberElement(key, value));
57
+ return *this;
58
+ }
59
+ };
60
+
61
+ template <typename E>
62
+ ElementBuilder<E> Build(E* e) {
63
+ return ElementBuilder<E>(e);
64
+ }
65
+ }; // namespace refract
66
+
67
+ #endif // #ifndef REFRACT_BUILD_H
@@ -0,0 +1,43 @@
1
+ //
2
+ // refract/ComparableVisitor.cc
3
+ // librefract
4
+ //
5
+ // Created by Jiri Kratochvil on 21/05/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+ #include "Element.h"
9
+ #include "ComparableVisitor.h"
10
+
11
+ namespace refract
12
+ {
13
+
14
+ ComparableVisitor::ComparableVisitor(const std::string& str, const int compare) : compare_to(str), result(false), compare(compare)
15
+ {
16
+ }
17
+
18
+ void ComparableVisitor::operator()(const MemberElement& e)
19
+ {
20
+ ComparableVisitor v(compare_to);
21
+ Visitor visitor(v);
22
+
23
+ if (compare == key && e.value.first) {
24
+ e.value.first->content(visitor);
25
+ }
26
+ else if (e.value.second) {
27
+ e.value.second->content(visitor);
28
+ }
29
+
30
+ result = v.get();
31
+ }
32
+
33
+ void ComparableVisitor::operator()(const IElement& e)
34
+ {
35
+ throw LogicError("Fallback impl - behavioration for Base class IElement is not defined");
36
+ }
37
+
38
+ bool ComparableVisitor::get() const
39
+ {
40
+ return result;
41
+ }
42
+
43
+ }; // namespace refract
@@ -0,0 +1,62 @@
1
+ //
2
+ // refract/ComparableVisitor.h
3
+ // librefract
4
+ //
5
+ // Created by Jiri Kratochvil on 21/05/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+ #ifndef REFRACT_COMPARABLEVISITOR_H
9
+ #define REFRACT_COMPARABLEVISITOR_H
10
+
11
+ namespace refract
12
+ {
13
+
14
+ // Forward declarations of Elements
15
+ struct IElement;
16
+ struct MemberElement;
17
+
18
+ class ComparableVisitor
19
+ {
20
+ std::string compare_to;
21
+ bool result;
22
+ int compare;
23
+
24
+ template <typename T, typename U>
25
+ bool IsEqual(const T& first, const U& second)
26
+ {
27
+ return false;
28
+ }
29
+
30
+ template <typename T>
31
+ bool IsEqual(const T& first, const T& second)
32
+ {
33
+ return first == second;
34
+ }
35
+
36
+ public:
37
+
38
+ enum {
39
+ key,
40
+ value
41
+ };
42
+
43
+ ComparableVisitor(const std::string& str, const int compare = value);
44
+
45
+ template <typename E>
46
+ void operator()(const E& e)
47
+ {
48
+ if (compare == value) {
49
+ result = IsEqual(compare_to, e.value);
50
+ }
51
+ }
52
+
53
+ void operator()(const MemberElement& e);
54
+ void operator()(const IElement& e);
55
+
56
+ bool get() const;
57
+ };
58
+
59
+
60
+ }; // namespace refract
61
+
62
+ #endif // #ifndef REFRACT_COMPARABLEVISITOR_H