lounge_lizard 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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,656 @@
1
+ //
2
+ // refract/Element.h
3
+ // librefract
4
+ //
5
+ // Created by Jiri Kratochvil on 18/05/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+ #ifndef REFRACT_ELEMENT_H
9
+ #define REFRACT_ELEMENT_H
10
+
11
+ #include <string>
12
+ #include <vector>
13
+ #include <algorithm>
14
+ #include <functional>
15
+ #include <stdexcept>
16
+ #include <iterator>
17
+
18
+ #include "Exception.h"
19
+ #include "Visitor.h"
20
+
21
+ #include "ElementFwd.h"
22
+
23
+ namespace refract
24
+ {
25
+
26
+ class Visitor;
27
+
28
+ template <typename T> struct ElementTypeSelector;
29
+
30
+ // NOTE: alternative solution:
31
+ // find in Element* for ValueType instead of specialized templates
32
+ template <>
33
+ struct ElementTypeSelector<std::string>
34
+ {
35
+ typedef StringElement ElementType;
36
+ };
37
+
38
+ template <>
39
+ struct ElementTypeSelector<char*>
40
+ {
41
+ typedef StringElement ElementType;
42
+ };
43
+
44
+ template <>
45
+ struct ElementTypeSelector<double>
46
+ {
47
+ typedef NumberElement ElementType;
48
+ };
49
+
50
+ template <>
51
+ struct ElementTypeSelector<int>
52
+ {
53
+ typedef NumberElement ElementType;
54
+ };
55
+
56
+ template <>
57
+ struct ElementTypeSelector<size_t>
58
+ {
59
+ typedef NumberElement ElementType;
60
+ };
61
+
62
+ template <>
63
+ struct ElementTypeSelector<bool>
64
+ {
65
+ typedef BooleanElement ElementType;
66
+ };
67
+
68
+ struct IElement
69
+ {
70
+
71
+ struct MemberElementCollection : public std::vector<MemberElement*>
72
+ {
73
+ virtual const_iterator find(const std::string& name) const;
74
+ virtual iterator find(const std::string& name);
75
+ MemberElement& operator[](const std::string& name);
76
+ MemberElement& operator[](const int index);
77
+ virtual void clone(const MemberElementCollection& other); /// < clone elements from `other` to `this`
78
+ virtual void erase(const std::string& key);
79
+ virtual ~MemberElementCollection();
80
+ };
81
+
82
+ MemberElementCollection meta;
83
+ MemberElementCollection attributes;
84
+
85
+ /**
86
+ * return "name" of element
87
+ * usualy injected by "trait", but you can set own
88
+ * via pair method `element(std::string)`
89
+ */
90
+ virtual std::string element() const = 0;
91
+ virtual void element(const std::string&) = 0;
92
+
93
+ // NOTE: probably rename to Accept
94
+ virtual void content(Visitor& v) const = 0;
95
+
96
+ /**
97
+ * Flags for clone() element - select parts of refract element to be clonned
98
+ * \see Element<T>::clone()
99
+ */
100
+ typedef enum {
101
+ cMeta = 0x01,
102
+ cAttributes = 0x02,
103
+ cValue = 0x04,
104
+ cElement = 0x08,
105
+ cAll = cMeta | cAttributes | cValue | cElement,
106
+
107
+ cNoMetaId = 0x10,
108
+ } cloneFlags;
109
+
110
+
111
+ virtual IElement* clone(const int flag = cAll) const = 0;
112
+
113
+ virtual bool empty() const = 0;
114
+
115
+ /**
116
+ * select seriaization/rendering type of element
117
+ * by default are elements serialized in expanded form,
118
+ * with compact form of meta and attributes
119
+ *
120
+ * `renderType()` allows to change default behavior of selected element
121
+ * (behavioration must be implemented in serialization visitors - it is partially done)
122
+ */
123
+
124
+ typedef enum {
125
+ rDefault = 0,
126
+ rFull,
127
+ rCompact,
128
+ rCompactContent
129
+ } renderFlags;
130
+
131
+ virtual renderFlags renderType() const = 0;
132
+ virtual void renderType(const renderFlags render) = 0;
133
+
134
+ /**
135
+ * Returns new element with content set as `value`
136
+ * Type of returned element depends on type of `value`
137
+ *
138
+ * In current implementation iis able create just primitive element types: (Bool|Number|String)
139
+ */
140
+ template <typename T>
141
+ static typename ElementTypeSelector<T>::ElementType* Create(const T& value, IElement::renderFlags render = IElement::rDefault)
142
+ {
143
+ typedef typename ElementTypeSelector<T>::ElementType ElementType;
144
+ return new ElementType(value, render);
145
+ };
146
+
147
+ /**
148
+ * overrided for static function `Create()` with classic c-string
149
+ */
150
+ static StringElement* Create(const char* value, IElement::renderFlags render = IElement::rDefault);
151
+
152
+ virtual ~IElement() {}
153
+ };
154
+
155
+ bool isReserved(const std::string& element);
156
+
157
+ /**
158
+ * CRTP implementation of RefractElement
159
+ */
160
+ template <typename T, typename Trait>
161
+ class Element : public IElement
162
+ {
163
+
164
+ public:
165
+
166
+ typedef Element<T, Trait> Type;
167
+ typedef Trait TraitType;
168
+ typedef typename TraitType::ValueType ValueType;
169
+
170
+ protected:
171
+ std::string element_;
172
+ bool hasContent; ///< was content of element already set? \see empty()
173
+ renderFlags renderStrategy;
174
+
175
+ public:
176
+
177
+ // FIXME: move into protected part, currently still required in ComparableVisitor
178
+ ValueType value;
179
+
180
+ virtual std::string element() const
181
+ {
182
+ return element_.empty() ? TraitType::element() : element_;
183
+ }
184
+
185
+ virtual void element(const std::string& name)
186
+ {
187
+ element_ = name;
188
+ }
189
+
190
+ void set(const ValueType& val)
191
+ {
192
+ hasContent = true;
193
+ value = val;
194
+ }
195
+
196
+ const ValueType& get() const
197
+ {
198
+ return value;
199
+ }
200
+
201
+ virtual void content(Visitor& v) const
202
+ {
203
+ v.visit(static_cast<const T&>(*this));
204
+ }
205
+
206
+ virtual IElement* clone(const int flags = cAll) const {
207
+ const Type* self = static_cast<const T*>(this);
208
+ Type* element = new Type;
209
+
210
+ element->hasContent = self->hasContent;
211
+ element->renderStrategy = self->renderStrategy;
212
+
213
+ if (flags & cElement) {
214
+ element->element_ = self->element_;
215
+ }
216
+
217
+ if (flags & cAttributes) {
218
+ element->attributes.clone(self->attributes);
219
+ }
220
+
221
+ if (flags & cMeta) {
222
+ element->meta.clone(self->meta);
223
+
224
+ if (flags & cNoMetaId) {
225
+ element->meta.erase("id");
226
+ }
227
+ }
228
+
229
+ if (flags & cValue) {
230
+ TraitType::cloneValue(value, element->value);
231
+ }
232
+
233
+ return element;
234
+ }
235
+
236
+ Element() : hasContent(false), renderStrategy(IElement::rDefault), value(TraitType::init())
237
+ {
238
+ }
239
+
240
+ virtual bool empty() const
241
+ {
242
+ return !hasContent;
243
+ }
244
+
245
+ // FIXME: remove all thing related to "render" from base class
246
+ // it should be implemented in "serialize" class
247
+ virtual renderFlags renderType() const
248
+ {
249
+ return renderStrategy;
250
+ }
251
+
252
+ virtual void renderType(const renderFlags render)
253
+ {
254
+ renderStrategy = render;
255
+ }
256
+
257
+ virtual ~Element()
258
+ {
259
+ TraitType::release(value);
260
+ }
261
+ };
262
+
263
+ struct NullElementTrait
264
+ {
265
+ struct null_type {};
266
+ typedef null_type ValueType;
267
+
268
+ static ValueType init() { return ValueType(); }
269
+ static const std::string element() { return "null"; }
270
+ static void release(ValueType&) {}
271
+ static void cloneValue(const ValueType&, ValueType&) {}
272
+ };
273
+
274
+ struct NullElement : Element<NullElement, NullElementTrait> {};
275
+
276
+ struct StringElementTrait
277
+ {
278
+ typedef std::string ValueType;
279
+
280
+ static ValueType init() { return ValueType(); }
281
+ static const std::string element() { return "string"; }
282
+ static void release(ValueType&) {}
283
+ static void cloneValue(const ValueType& self, ValueType& other) { other = self; }
284
+ };
285
+
286
+ struct StringElement : Element<StringElement, StringElementTrait> {
287
+
288
+ StringElement() : Type() {}
289
+
290
+ StringElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
291
+ {
292
+ set(value);
293
+ renderType(render);
294
+ }
295
+ };
296
+
297
+ struct NumberElementTrait
298
+ {
299
+ typedef double ValueType;
300
+
301
+ static ValueType init() { return 0; }
302
+ static const std::string element() { return "number"; }
303
+ static void release(ValueType&) {}
304
+ static void cloneValue(const ValueType& self, ValueType& other) { other = self; }
305
+ };
306
+
307
+ struct NumberElement : Element<NumberElement, NumberElementTrait> {
308
+
309
+ NumberElement() : Type() {}
310
+
311
+ NumberElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
312
+ {
313
+ set(value);
314
+ renderType(render);
315
+ }
316
+ };
317
+
318
+ struct BooleanElementTrait
319
+ {
320
+ typedef bool ValueType;
321
+
322
+ static ValueType init() { return false; }
323
+ static const std::string element() { return "boolean"; }
324
+ static void release(ValueType&) {}
325
+ static void cloneValue(const ValueType& self, ValueType& other) { other = self; }
326
+ };
327
+
328
+ struct BooleanElement : Element<BooleanElement, BooleanElementTrait> {
329
+
330
+ BooleanElement() : Type() {}
331
+
332
+ BooleanElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type() {
333
+ set(value);
334
+ renderType(render);
335
+ }
336
+ };
337
+
338
+ typedef std::vector<IElement*> RefractElements;
339
+
340
+ template <typename Type = IElement, typename Collection = std::vector<Type*> >
341
+ struct ElementCollectionTrait
342
+ {
343
+ typedef Collection ValueType;
344
+ typedef ElementCollectionTrait<Type, Collection> SelfType;
345
+
346
+ static ValueType init() { return ValueType(); }
347
+
348
+ static void release(ValueType& values)
349
+ {
350
+ for (typename ValueType::iterator it = values.begin(); it != values.end(); ++it) {
351
+ delete (*it);
352
+ }
353
+
354
+ values.clear();
355
+ }
356
+
357
+ /**
358
+ * WARN: possible dangerous method. We trust underlaying type in collection
359
+ * if anyone push casted type, bad things can happen.
360
+ */
361
+ static typename ValueType::value_type typedMemberClone(IElement* element, const IElement::cloneFlags flags) {
362
+ if (!element) {
363
+ return NULL;
364
+ }
365
+
366
+ return static_cast<typename ValueType::value_type>(element->clone(flags));
367
+ }
368
+
369
+ static void cloneValue(const ValueType& self, ValueType& other) {
370
+ std::transform(self.begin(), self.end(),
371
+ std::back_inserter(other),
372
+ std::bind(&SelfType::typedMemberClone, std::placeholders::_1, IElement::cAll));
373
+ }
374
+ };
375
+
376
+
377
+ struct ArrayElementTrait : public ElementCollectionTrait<>
378
+ {
379
+ static const std::string element() { return "array"; }
380
+ };
381
+
382
+ struct ArrayElement : Element<ArrayElement, ArrayElementTrait>
383
+ {
384
+ ArrayElement() : Type()
385
+ {
386
+ }
387
+
388
+ ArrayElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
389
+ {
390
+ set(value);
391
+ renderType(render);
392
+ }
393
+
394
+ void push_back(IElement* e)
395
+ {
396
+ // FIXME: warn if MemberElement
397
+ // there is no way to present "key: value" in array
398
+ hasContent = true;
399
+ value.push_back(e);
400
+ }
401
+ };
402
+
403
+ struct EnumElementTrait : public ElementCollectionTrait<>
404
+ {
405
+ static const std::string element() { return "enum"; }
406
+ };
407
+
408
+ struct EnumElement : Element<EnumElement, EnumElementTrait>
409
+ {
410
+ EnumElement() : Type()
411
+ {
412
+ }
413
+
414
+ EnumElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
415
+ {
416
+ set(value);
417
+ renderType(render);
418
+ }
419
+
420
+ void push_back(IElement* e)
421
+ {
422
+ hasContent = true;
423
+ value.push_back(e);
424
+ }
425
+ };
426
+
427
+ struct MemberElementTrait
428
+ {
429
+ typedef std::pair<IElement*, IElement*> ValueType;
430
+
431
+ static ValueType init() { return ValueType(); }
432
+ static const std::string element() { return "member"; }
433
+
434
+ static void release(ValueType& member)
435
+ {
436
+ if (member.first) {
437
+ delete member.first;
438
+ member.first = NULL;
439
+ }
440
+
441
+ if (member.second) {
442
+ delete member.second;
443
+ member.second = NULL;
444
+ }
445
+ }
446
+
447
+ static void cloneValue(const ValueType& self, ValueType& other) {
448
+ other.first = self.first
449
+ ? self.first->clone()
450
+ : NULL;
451
+
452
+ other.second = self.second
453
+ ? self.second->clone()
454
+ : NULL;
455
+ }
456
+ };
457
+
458
+ struct MemberElement : Element<MemberElement, MemberElementTrait>
459
+ {
460
+
461
+ MemberElement() : Type()
462
+ {
463
+ }
464
+
465
+ MemberElement(IElement* key, IElement* value, IElement::renderFlags render = IElement::rDefault) : Type()
466
+ {
467
+ set(key, value);
468
+ renderType(render);
469
+ }
470
+
471
+ MemberElement(const std::string& key, IElement* value, IElement::renderFlags render = IElement::rDefault) : Type()
472
+ {
473
+ set(key, value);
474
+ renderType(render);
475
+ }
476
+
477
+ void set(const std::string& key, IElement* element)
478
+ {
479
+ set(IElement::Create(key), element);
480
+ }
481
+
482
+ void set(IElement* key, IElement* element)
483
+ {
484
+ if (value.first != NULL) {
485
+ delete value.first;
486
+ value.first = NULL;
487
+ }
488
+
489
+ value.first = key;
490
+
491
+ if (value.second != NULL) {
492
+ delete value.second;
493
+ value.second = NULL;
494
+ }
495
+
496
+ value.second = element;
497
+
498
+ hasContent = true;
499
+ }
500
+
501
+ MemberElement& operator=(IElement* element)
502
+ {
503
+ if (value.second != NULL) {
504
+ delete value.second;
505
+ value.second = NULL;
506
+ }
507
+
508
+ value.second = element;
509
+ return *this;
510
+ }
511
+ };
512
+
513
+ struct ObjectElementTrait : public ElementCollectionTrait<>
514
+ {
515
+ // Use inherited ValueType definition instead of specialized std::vector<MemberElement*>
516
+ // because ObjectElement can contain:
517
+ // - (array[Member Element])
518
+ // - (object)
519
+ // - (Extend Element)
520
+ // - (Select Element)
521
+ // - (Ref Element)
522
+ //
523
+ // FIXME: behavioration for content types different than
524
+ // `(array[Member Element])` is not currently implemented
525
+
526
+ static const std::string element() { return "object"; }
527
+ };
528
+
529
+ struct ObjectElement : Element<ObjectElement, ObjectElementTrait>
530
+ {
531
+
532
+ ObjectElement() : Type()
533
+ {
534
+ }
535
+
536
+ ObjectElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
537
+ {
538
+ set(value);
539
+ renderType(render);
540
+ }
541
+
542
+ ObjectElement(IElement* e, IElement::renderFlags render = IElement::rDefault) : Type()
543
+ {
544
+ renderType(render);
545
+ value.push_back(e);
546
+ }
547
+
548
+ void push_back(IElement* e)
549
+ {
550
+ // FIXME:
551
+ // probably add check for allowed type
552
+ hasContent = true;
553
+ value.push_back(e);
554
+ }
555
+ };
556
+
557
+ struct ExtendElementTrait : public ElementCollectionTrait<>
558
+ {
559
+ static const std::string element() { return "extend"; }
560
+ };
561
+
562
+ struct ExtendElement : Element<ExtendElement, ExtendElementTrait>
563
+ {
564
+ ExtendElement() : Type()
565
+ {
566
+ }
567
+
568
+ ExtendElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
569
+ {
570
+ set(value);
571
+ renderType(render);
572
+ }
573
+
574
+ void push_back(IElement* e);
575
+ void set(const ValueType& val);
576
+
577
+ IElement* merge() const;
578
+ };
579
+
580
+ struct OptionElementTrait : public ElementCollectionTrait<>
581
+ {
582
+ static const std::string element() { return "option"; }
583
+ };
584
+
585
+ struct OptionElement : Element<OptionElement, OptionElementTrait>
586
+ {
587
+
588
+ OptionElement() : Type()
589
+ {
590
+ }
591
+
592
+ OptionElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
593
+ {
594
+ set(value);
595
+ renderType(render);
596
+ }
597
+
598
+ OptionElement(IElement* e, IElement::renderFlags render = IElement::rDefault) : Type()
599
+ {
600
+ renderType(render);
601
+ value.push_back(e);
602
+ }
603
+
604
+ void push_back(IElement* e)
605
+ {
606
+ // FIXME:
607
+ // probably add check for allowed type
608
+ hasContent = true;
609
+ value.push_back(e);
610
+ }
611
+ };
612
+
613
+ struct SelectElementTrait : public ElementCollectionTrait<OptionElement>
614
+ {
615
+ static const std::string element() { return "select"; }
616
+
617
+ static void cloneValue(const ValueType& self, ValueType& other)
618
+ {
619
+ for (std::vector<OptionElement*>::const_iterator it = self.begin(); it != self.end(); ++it) {
620
+ IElement* clonned = (*it)->clone();
621
+ other.push_back(static_cast<OptionElement*>(clonned));
622
+ }
623
+ }
624
+ };
625
+
626
+ struct SelectElement : Element<SelectElement, SelectElementTrait>
627
+ {
628
+
629
+ SelectElement() : Type()
630
+ {
631
+ }
632
+
633
+ SelectElement(const TraitType::ValueType& value, IElement::renderFlags render = IElement::rDefault) : Type()
634
+ {
635
+ set(value);
636
+ renderType(render);
637
+ }
638
+
639
+ SelectElement(OptionElement* e, IElement::renderFlags render = IElement::rDefault) : Type()
640
+ {
641
+ renderType(render);
642
+ value.push_back(e);
643
+ }
644
+
645
+ void push_back(OptionElement* e)
646
+ {
647
+ // FIXME:
648
+ // probably add check for allowed type
649
+ hasContent = true;
650
+ value.push_back(e);
651
+ }
652
+ };
653
+
654
+ };
655
+
656
+ #endif // #ifndef REFRACT_ELEMENT_H
@@ -0,0 +1,37 @@
1
+ //
2
+ // refract/ElementFwd.h
3
+ // librefract
4
+ //
5
+ // Created by Jiri Kratochvil on 01/01/2016
6
+ // Copyright (c) 2016 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef REFRACT_ELEMENTFWD_H
10
+ #define REFRACT_ELEMENTFWD_H
11
+
12
+ namespace refract
13
+ {
14
+
15
+ // Forward declarations of Elements
16
+ struct IElement;
17
+
18
+ struct NullElement;
19
+
20
+ struct StringElement;
21
+ struct NumberElement;
22
+ struct BooleanElement;
23
+
24
+ struct MemberElement;
25
+
26
+ struct ArrayElement;
27
+ struct EnumElement;
28
+ struct ObjectElement;
29
+
30
+ struct ExtendElement;
31
+
32
+ struct OptionElement;
33
+ struct SelectElement;
34
+ }
35
+
36
+
37
+ #endif /* #ifndef REFRACT_ELEMENTFWD_H */