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,139 @@
1
+ @echo off
2
+
3
+ @rem Attribution Notice
4
+ @rem ------------------
5
+ @rem This file uses parts of Node.js `vcbuild.bat`.
6
+ @rem Please refer to https://github.com/joyent/node.
7
+
8
+ cd %~dp0
9
+
10
+ if /i "%1"=="help" goto help
11
+ if /i "%1"=="--help" goto help
12
+ if /i "%1"=="-help" goto help
13
+ if /i "%1"=="/help" goto help
14
+ if /i "%1"=="?" goto help
15
+ if /i "%1"=="-?" goto help
16
+ if /i "%1"=="--?" goto help
17
+ if /i "%1"=="/?" goto help
18
+
19
+ @rem Process arguments.
20
+ set config=Release
21
+ set target=Build
22
+ set target_arch=ia32
23
+ set noprojgen=
24
+ set nobuild=
25
+ set test=
26
+
27
+ :next-arg
28
+ if "%1"=="" goto args-done
29
+ if /i "%1"=="debug" set config=Debug&goto arg-ok
30
+ if /i "%1"=="release" set config=Release&goto arg-ok
31
+ if /i "%1"=="clean" set target=Clean&goto arg-ok
32
+ if /i "%1"=="ia32" set target_arch=ia32&goto arg-ok
33
+ if /i "%1"=="x86" set target_arch=ia32&goto arg-ok
34
+ if /i "%1"=="x64" set target_arch=x64&goto arg-ok
35
+ if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok
36
+ if /i "%1"=="nobuild" set nobuild=1&goto arg-ok
37
+ if /i "%1"=="test" set test=test&goto arg-ok
38
+ if /i "%1"=="MSVC2013" set GYP_MSVS_VERSION=2013&goto arg-ok
39
+ if /i "%1"=="MSVC2012" set GYP_MSVS_VERSION=2012&goto arg-ok
40
+ if /i "%1"=="MSVC2010" set GYP_MSVS_VERSION=2010&goto arg-ok
41
+ if /i "%1"=="MSVC2008" set GYP_MSVS_VERSION=2008&goto arg-ok
42
+
43
+ echo Warning: ignoring invalid command line option `%1`.
44
+
45
+ :arg-ok
46
+ shift
47
+ goto next-arg
48
+
49
+ :args-done
50
+ if "%config%"=="Debug" set debug_arg=--debug
51
+
52
+ :project-gen
53
+ @rem Skip project generation if requested.
54
+ if defined noprojgen goto msbuild
55
+ if "%GYP_MSVS_VERSION%"=="" set GYP_MSVS_VERSION=2012
56
+
57
+ @rem Generate the VS project.
58
+ SETLOCAL
59
+ if defined VS120COMNTOOLS call "%VS120COMNTOOLS%\VCVarsQueryRegistry.bat"
60
+ if not defined inttest python configure %debug_arg% --dest-cpu=%target_arch%
61
+ if errorlevel 1 goto create-msvs-files-failed
62
+ if not exist build/snowcrash.sln goto create-msvs-files-failed
63
+ echo Project files generated.
64
+ ENDLOCAL
65
+
66
+ @rem Skip to the end for now
67
+ @rem goto exit
68
+
69
+ :msbuild
70
+ @rem Skip project generation if requested.
71
+ if defined nobuild goto exit
72
+ if "%GYP_MSVS_VERSION%"=="2012" goto vc-set-2012
73
+ if "%GYP_MSVS_VERSION%"=="2010" goto vc-set-2010
74
+ if "%GYP_MSVS_VERSION%"=="2008" goto vc-set-2008
75
+
76
+ @rem Look for Visual Studio 2013
77
+ if not defined VS120COMNTOOLS goto vc-set-2012
78
+ if not exist "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2012
79
+ call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat"
80
+ if not defined VCINSTALLDIR goto msbuild-not-found
81
+ goto msbuild-found
82
+
83
+ :vc-set-2012
84
+ if not defined VS110COMNTOOLS goto vc-set-2010
85
+ if not exist "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2010
86
+ call "%VS110COMNTOOLS%\..\..\vc\vcvarsall.bat"
87
+ if not defined VCINSTALLDIR goto msbuild-not-found
88
+ goto msbuild-found
89
+
90
+ :vc-set-2010
91
+ if not defined VS100COMNTOOLS goto vc-set-2008
92
+ if not exist "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat" goto vc-set-2008
93
+ call "%VS100COMNTOOLS%\..\..\vc\vcvarsall.bat"
94
+ if not defined VCINSTALLDIR goto msbuild-not-found
95
+ goto msbuild-found
96
+
97
+ :vc-set-2008
98
+ if not defined VS90COMNTOOLS goto msbuild-not-found
99
+ if not exist "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat" goto msbuild-not-found
100
+ call "%VS90COMNTOOLS%\..\..\vc\vcvarsall.bat"
101
+ if not defined VCINSTALLDIR goto msbuild-not-found
102
+ goto msbuild-found
103
+
104
+ :msbuild-not-found
105
+ echo Build skipped. To build, this file needs to run from VS cmd prompt.
106
+ goto exit
107
+
108
+ :msbuild-found
109
+ @rem Build the sln with msbuild.
110
+ @rem Refer to http://msdn.microsoft.com/en-us/library/ms164311.aspx
111
+ echo Building Snow Crash...
112
+ msbuild build/snowcrash.sln /m /clp:NoSummary;NoItemAndPropertyList;Verbosity=normal /nologo /property:Configuration=%config%
113
+ if errorlevel 1 goto exit
114
+
115
+ :run
116
+ @rem Run tests if requested.
117
+ echo Running tests...
118
+ .\build\%config%\test-libsnowcrash.exe
119
+
120
+ @rem All Done
121
+ goto exit
122
+
123
+ :create-msvs-files-failed
124
+ echo Failed to create vc project files.
125
+ goto exit
126
+
127
+ :help
128
+ echo vcbuild.bat [debug/release] [test] [clean] [noprojgen] [nobuild] [x86/x64] [inttest] [MSVC2012/MSVC2013]
129
+ echo Examples:
130
+ echo vcbuild.bat : builds release build
131
+ echo vcbuild.bat nobuild : generate MSVS project files only
132
+ echo vcbuild.bat debug : builds debug build
133
+ echo vcbuild.bat test : builds debug build and runs tests
134
+ echo vcbuild.bat inttest : include integration tests
135
+ echo vcbuild.bat MSVC2013 : indicate target solution's version, could also define as MSVC2012, MSVC2013
136
+ goto exit
137
+
138
+ :exit
139
+ goto :EOF
@@ -0,0 +1,62 @@
1
+ # Default Shell
2
+ SHELL = /bin/bash
3
+
4
+ # Default build path
5
+ BUILD_PATH = build
6
+
7
+ # Flags
8
+ CXXFLAGS = -g -O3 -fPIC -Wall -Werror -Wsign-compare -std=c++11
9
+ LDFLAGS = -g -O3 -Wall -Werror
10
+
11
+ # SOS source directory
12
+ SRC_PATH = src
13
+
14
+ # SOS test source directory
15
+ TEST_SRC_PATH = test
16
+
17
+ # SOS include paths
18
+ INCLUDES = -I$(SRC_PATH)
19
+
20
+ # Test include paths
21
+ TEST_INCLUDES = $(INCLUDES) -I$(TEST_SRC_PATH) -Itest/ext/Catch/single_include
22
+
23
+ # SOS objects
24
+ LIB_SRC = $(SRC_PATH)/sos.cc
25
+ LIB_OBJ = $(BUILD_PATH)/sos.o
26
+
27
+ # SOS tests object
28
+ TEST_SRC = $(TEST_SRC_PATH)/test-libsos.cc
29
+ TEST_OBJ = $(BUILD_PATH)/test-libsos.o
30
+
31
+ OBJECTS = $(LIB_OBJ) $(TEST_OBJ)
32
+ DEPENDS = $(OBJECTS:.o=.d)
33
+
34
+ .PHONY: all
35
+ all: libsos.a test-libsos
36
+
37
+ libsos.a: $(LIB_OBJ)
38
+ $(AR) rcs $(BUILD_PATH)/libsos.a $^
39
+
40
+ test-libsos: libsos.a $(TEST_OBJ)
41
+ $(CXX) $(TEST_OBJ) $(BUILD_PATH)/libsos.a $(LDFLAGS) -o $(BUILD_PATH)/$@
42
+
43
+ .PHONY: test
44
+ test: test-libsos
45
+ $(BUILD_PATH)/test-libsos
46
+
47
+ .PHONY: clean
48
+ clean:
49
+ $(RM) -r build
50
+
51
+ $(BUILD_PATH)/%.o: $(SRC_PATH)/%.cc
52
+ $(CXX) $(CXXFLAGS) $(INCLUDES) -MP -MMD -c $< -o $@
53
+
54
+ $(BUILD_PATH)/%.o: $(TEST_SRC_PATH)/%.cc
55
+ $(CXX) $(CXXFLAGS) $(TEST_INCLUDES) -MP -MMD -c $< -o $@
56
+
57
+ $(LIB_OBJ): | $(BUILD_PATH)
58
+
59
+ $(BUILD_PATH):
60
+ mkdir -p $(BUILD_PATH)
61
+
62
+ -include $(DEPENDS)
@@ -0,0 +1,235 @@
1
+ //
2
+ // sos.cc
3
+ // sos
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 20/01/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #include "sos.h"
10
+
11
+ sos::Base::Base(Base::Type type_)
12
+ : type(type_)
13
+ {
14
+ m_object.reset(::new KeyValues);
15
+ m_array.reset(::new Bases);
16
+ }
17
+
18
+ sos::Base::Base(const sos::Base& rhs)
19
+ {
20
+ this->type = rhs.type;
21
+ this->str = rhs.str;
22
+ this->number = rhs.number;
23
+ this->boolean = rhs.boolean;
24
+ this->keys = rhs.keys;
25
+
26
+ this->m_object.reset(::new KeyValues(*rhs.m_object.get()));
27
+ this->m_array.reset(::new Bases(*rhs.m_array.get()));
28
+ }
29
+
30
+ sos::Base& sos::Base::operator=(const sos::Base &rhs)
31
+ {
32
+ this->type = rhs.type;
33
+ this->str = rhs.str;
34
+ this->number = rhs.number;
35
+ this->boolean = rhs.boolean;
36
+ this->keys = rhs.keys;
37
+
38
+ this->m_object.reset(::new KeyValues(*rhs.m_object.get()));
39
+ this->m_array.reset(::new Bases(*rhs.m_array.get()));
40
+
41
+ return *this;
42
+ }
43
+
44
+ sos::KeyValues& sos::Base::object()
45
+ {
46
+ if (!m_object.get())
47
+ throw std::logic_error("no object key-values set");
48
+
49
+ return *m_object;
50
+ }
51
+
52
+ const sos::KeyValues& sos::Base::object() const
53
+ {
54
+ if (!m_object.get())
55
+ throw std::logic_error("no object key-values set");
56
+
57
+ return *m_object;
58
+ }
59
+
60
+ sos::Bases& sos::Base::array()
61
+ {
62
+ if (!m_array.get())
63
+ throw std::logic_error("no array values set");
64
+
65
+ return *m_array;
66
+ }
67
+
68
+ const sos::Bases& sos::Base::array() const
69
+ {
70
+ if (!m_array.get())
71
+ throw std::logic_error("no array values set");
72
+
73
+ return *m_array;
74
+ }
75
+
76
+ sos::Null::Null()
77
+ : Base(NullType)
78
+ {}
79
+
80
+ sos::String::String(std::string str_)
81
+ {
82
+ type = StringType;
83
+ str = str_;
84
+ }
85
+
86
+ sos::Number::Number(double number_)
87
+ {
88
+ type = NumberType;
89
+ number = number_;
90
+ }
91
+
92
+ sos::Boolean::Boolean(bool boolean_)
93
+ {
94
+ type = BooleanType;
95
+ boolean = boolean_;
96
+ }
97
+
98
+ sos::Array::Array()
99
+ : Base(ArrayType)
100
+ {}
101
+
102
+ void sos::Array::push(const sos::Base& value)
103
+ {
104
+ array().push_back(value);
105
+ }
106
+
107
+ void sos::Array::set(const size_t index, const sos::Base& value)
108
+ {
109
+ if (array().size() <= index)
110
+ throw std::logic_error("not enough array values set");
111
+
112
+ array().at(index) = value;
113
+ }
114
+
115
+ bool sos::Array::empty()
116
+ {
117
+ return array().empty();
118
+ }
119
+
120
+ sos::Object::Object()
121
+ : Base(ObjectType)
122
+ {}
123
+
124
+ void sos::Object::set(const std::string& key, const sos::Base& value, bool doNotOverride)
125
+ {
126
+ sos::Keys::iterator it = std::find(keys.begin(), keys.end(), key);
127
+
128
+ if (it != keys.end()) {
129
+ if (doNotOverride) {
130
+ throw std::logic_error("key already present in the object");
131
+ }
132
+ else {
133
+ keys.erase(it);
134
+ }
135
+ }
136
+
137
+ keys.push_back(key);
138
+ object().operator[](key) = value;
139
+ }
140
+
141
+ void sos::Object::unset(const std::string &key)
142
+ {
143
+ sos::Keys::iterator it = std::find(keys.begin(), keys.end(), key);
144
+
145
+ if (it == keys.end()) {
146
+ return;
147
+ }
148
+
149
+ sos::KeyValues::iterator valueIt = object().find(key);
150
+
151
+ keys.erase(it);
152
+ object().erase(valueIt);
153
+ }
154
+
155
+ bool sos::Object::empty()
156
+ {
157
+ return keys.empty();
158
+ }
159
+
160
+ sos::Serialize::Serialize()
161
+ {}
162
+
163
+ void sos::Serialize::process(const Base& root, std::ostream& os, size_t level)
164
+ {
165
+ sos::Base::Type type = root.type;
166
+
167
+ switch (type) {
168
+
169
+ case Base::NullType:
170
+ null(os);
171
+ break;
172
+
173
+ case Base::StringType:
174
+ string(root.str, os);
175
+ break;
176
+
177
+ case Base::NumberType:
178
+ number(root.number, os);
179
+ break;
180
+
181
+ case Base::BooleanType:
182
+ boolean(root.boolean, os);
183
+ break;
184
+
185
+ case Base::ArrayType:
186
+ array(root, os, level);
187
+ break;
188
+
189
+ case Base::ObjectType:
190
+ object(root, os, level);
191
+ break;
192
+
193
+ default:
194
+ break;
195
+ }
196
+ }
197
+
198
+ std::string sos::escapeNewlines(const std::string &input)
199
+ {
200
+ size_t pos = 0;
201
+ std::string target(input);
202
+
203
+ while ((pos = target.find("\n", pos)) != std::string::npos) {
204
+ target.replace(pos, 1, "\\n");
205
+ pos += 2;
206
+ }
207
+
208
+ return target;
209
+ }
210
+
211
+ std::string sos::escapeDoubleQuotes(const std::string &input)
212
+ {
213
+ size_t pos = 0;
214
+ std::string target(input);
215
+
216
+ while ((pos = target.find("\"", pos)) != std::string::npos) {
217
+ target.replace(pos, 1, "\\\"");
218
+ pos += 2;
219
+ }
220
+
221
+ return target;
222
+ }
223
+
224
+ std::string sos::escapeBackslashes(const std::string &input)
225
+ {
226
+ size_t pos = 0;
227
+ std::string target(input);
228
+
229
+ while ((pos = target.find("\\", pos)) != std::string::npos) {
230
+ target.replace(pos, 1, "\\\\");
231
+ pos += 2;
232
+ }
233
+
234
+ return target;
235
+ }
@@ -0,0 +1,188 @@
1
+ //
2
+ // sos.h
3
+ // sos
4
+ //
5
+ // Created by Pavan Kumar Sunkara on 10/01/15.
6
+ // Copyright (c) 2015 Apiary Inc. All rights reserved.
7
+ //
8
+
9
+ #ifndef SOS_H
10
+ #define SOS_H
11
+
12
+ #include <string>
13
+ #include <vector>
14
+ #include <map>
15
+ #include <ostream>
16
+ #include <algorithm>
17
+ #include <memory>
18
+ #include <stdexcept>
19
+
20
+ namespace sos {
21
+
22
+ /** Forward Declaration */
23
+ class Base;
24
+
25
+ /** Key-value pairs (object) */
26
+ typedef std::map<std::string, Base> KeyValues;
27
+
28
+ /** List of keys for object (for deterministic output) */
29
+ typedef std::vector<std::string> Keys;
30
+
31
+ /** Array of values */
32
+ typedef std::vector<Base> Bases;
33
+
34
+ /** Base class for values */
35
+ class Base {
36
+ public:
37
+
38
+ /** Enum for Type of the value */
39
+ enum Type {
40
+ UndefinedType = 0,
41
+ NullType, // Null
42
+ StringType, // A string
43
+ NumberType, // A number
44
+ BooleanType, // A boolean value
45
+ ArrayType, // An array
46
+ ObjectType // An object
47
+ };
48
+
49
+ /** Type of the value */
50
+ Type type;
51
+
52
+ /** String value */
53
+ std::string str;
54
+
55
+ /** Number value */
56
+ double number;
57
+
58
+ /** Boolean value */
59
+ bool boolean;
60
+
61
+ /** Object value */
62
+ KeyValues& object();
63
+ const KeyValues& object() const;
64
+
65
+ Keys keys;
66
+
67
+ /** Array value */
68
+ Bases& array();
69
+ const Bases& array() const;
70
+
71
+ /** Constructor */
72
+ Base(Type type_ = UndefinedType);
73
+
74
+ /** Copy constructor */
75
+ Base(const Base& rhs);
76
+
77
+ /** Assignment operator */
78
+ Base& operator=(const Base& rhs);
79
+
80
+ /** Destructor */
81
+ ~Base() {};
82
+
83
+ private:
84
+ std::unique_ptr<KeyValues> m_object;
85
+ std::unique_ptr<Bases> m_array;
86
+ };
87
+
88
+ class Null : public Base {
89
+ public:
90
+
91
+ /** Constructor */
92
+ Null();
93
+ };
94
+
95
+ class String : public Base {
96
+ public:
97
+
98
+ /** Constructor */
99
+ String(std::string string_ = "");
100
+ };
101
+
102
+ class Number : public Base {
103
+ public:
104
+
105
+ /** Constructor */
106
+ Number(double number_ = 0);
107
+ };
108
+
109
+ class Boolean : public Base {
110
+ public:
111
+
112
+ /** Constructor */
113
+ Boolean(bool boolean_ = false);
114
+ };
115
+
116
+ class Array : public Base {
117
+ public:
118
+
119
+ /** Constructor */
120
+ Array();
121
+
122
+ void push(const Base& value);
123
+ void set(const size_t index, const Base& value);
124
+
125
+ /** Check if empty */
126
+ bool empty();
127
+ };
128
+
129
+ class Object : public Base {
130
+ public:
131
+
132
+ /** Constructor */
133
+ Object();
134
+
135
+ void set(const std::string& key, const Base& value, bool doNotOverride = false);
136
+ void unset(const std::string& key);
137
+
138
+ /** Check if empty */
139
+ bool empty();
140
+ };
141
+
142
+ /** Base class for serializers */
143
+ struct Serialize {
144
+
145
+ /** Constructor */
146
+ Serialize();
147
+
148
+ /** Destructor */
149
+ virtual ~Serialize() {};
150
+
151
+ /** Process the given value with the serializer logic */
152
+ void process(const Base& value, std::ostream& os, size_t level = 0);
153
+
154
+ virtual void null(std::ostream& os) = 0;
155
+ virtual void string(const std::string& value, std::ostream& os) = 0;
156
+ virtual void number(double value, std::ostream& os) = 0;
157
+ virtual void boolean(bool value, std::ostream& os) = 0;
158
+ virtual void array(const Base& value, std::ostream& os, size_t level) = 0;
159
+ virtual void object(const Base& value, std::ostream& os, size_t level) = 0;
160
+
161
+ virtual void indent(size_t level, std::ostream& os) = 0;
162
+ };
163
+
164
+ /**
165
+ * \brief Escape every backslash in input string.
166
+ * \param input A string to escape its backslashes.
167
+ * \return A new string with backslashes escaped.
168
+ */
169
+ std::string escapeBackslashes(const std::string& input);
170
+
171
+ /**
172
+ * \brief Escape every double quote in input string.
173
+ * \param input A string to escape its double quotes.
174
+ * \return A new string with double quotes escaped.
175
+ */
176
+ std::string escapeDoubleQuotes(const std::string& input);
177
+
178
+ /**
179
+ * \brief Escape new lines in input string.
180
+ * \param input A string to escape its new lines.
181
+ * \return A new string with lines escaped.
182
+ *
183
+ * This function replaces all occurences of "\n" with "\\n".
184
+ */
185
+ std::string escapeNewlines(const std::string& input);
186
+ }
187
+
188
+ #endif