poly-cms 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (460) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/Gemfile +27 -0
  4. data/Gemfile.lock +95 -0
  5. data/README.md +3 -0
  6. data/Rakefile +45 -0
  7. data/bin/poly +88 -0
  8. data/config.ru +3 -0
  9. data/core/admin/assets/images/icons/cache-clear.svg +11 -0
  10. data/core/admin/assets/images/icons/delete-dark.svg +10 -0
  11. data/core/admin/assets/images/icons/delete.svg +10 -0
  12. data/core/admin/assets/images/icons/handle.svg +12 -0
  13. data/core/admin/assets/images/icons/logout.svg +13 -0
  14. data/core/admin/assets/images/icons/move.svg +10 -0
  15. data/core/admin/assets/images/icons/new.svg +9 -0
  16. data/core/admin/assets/images/icons/prompt.svg +11 -0
  17. data/core/admin/assets/images/icons/refresh.svg +40 -0
  18. data/core/admin/assets/images/icons/save.svg +7 -0
  19. data/core/admin/assets/images/poly-small-boxed.svg +51 -0
  20. data/core/admin/assets/images/poly-small.svg +52 -0
  21. data/core/admin/assets/images/poly.svg +36 -0
  22. data/core/admin/assets/js/app/file-ext.js +15 -0
  23. data/core/admin/assets/js/app/views/editor.js +300 -0
  24. data/core/admin/assets/js/app/views/git.js +65 -0
  25. data/core/admin/assets/js/app/views/main.js +59 -0
  26. data/core/admin/assets/js/main.js +44 -0
  27. data/core/admin/assets/js/routes.js +25 -0
  28. data/core/admin/assets/js/vendor/backbone.js +4 -0
  29. data/core/admin/assets/js/vendor/codemirror/.gitattributes +8 -0
  30. data/core/admin/assets/js/vendor/codemirror/.gitignore +6 -0
  31. data/core/admin/assets/js/vendor/codemirror/.travis.yml +3 -0
  32. data/core/admin/assets/js/vendor/codemirror/addon/comment/comment.js +145 -0
  33. data/core/admin/assets/js/vendor/codemirror/addon/comment/continuecomment.js +54 -0
  34. data/core/admin/assets/js/vendor/codemirror/addon/dialog/dialog.css +32 -0
  35. data/core/admin/assets/js/vendor/codemirror/addon/dialog/dialog.js +80 -0
  36. data/core/admin/assets/js/vendor/codemirror/addon/display/fullscreen.css +6 -0
  37. data/core/admin/assets/js/vendor/codemirror/addon/display/fullscreen.js +30 -0
  38. data/core/admin/assets/js/vendor/codemirror/addon/display/placeholder.js +54 -0
  39. data/core/admin/assets/js/vendor/codemirror/addon/edit/closebrackets.js +82 -0
  40. data/core/admin/assets/js/vendor/codemirror/addon/edit/closetag.js +87 -0
  41. data/core/admin/assets/js/vendor/codemirror/addon/edit/continuelist.js +25 -0
  42. data/core/admin/assets/js/vendor/codemirror/addon/edit/matchbrackets.js +86 -0
  43. data/core/admin/assets/js/vendor/codemirror/addon/edit/matchtags.js +56 -0
  44. data/core/admin/assets/js/vendor/codemirror/addon/edit/trailingspace.js +15 -0
  45. data/core/admin/assets/js/vendor/codemirror/addon/fold/brace-fold.js +93 -0
  46. data/core/admin/assets/js/vendor/codemirror/addon/fold/comment-fold.js +40 -0
  47. data/core/admin/assets/js/vendor/codemirror/addon/fold/foldcode.js +75 -0
  48. data/core/admin/assets/js/vendor/codemirror/addon/fold/foldgutter.css +21 -0
  49. data/core/admin/assets/js/vendor/codemirror/addon/fold/foldgutter.js +124 -0
  50. data/core/admin/assets/js/vendor/codemirror/addon/fold/indent-fold.js +26 -0
  51. data/core/admin/assets/js/vendor/codemirror/addon/fold/xml-fold.js +167 -0
  52. data/core/admin/assets/js/vendor/codemirror/addon/hint/anyword-hint.js +34 -0
  53. data/core/admin/assets/js/vendor/codemirror/addon/hint/css-hint.js +50 -0
  54. data/core/admin/assets/js/vendor/codemirror/addon/hint/html-hint.js +337 -0
  55. data/core/admin/assets/js/vendor/codemirror/addon/hint/javascript-hint.js +130 -0
  56. data/core/admin/assets/js/vendor/codemirror/addon/hint/pig-hint.js +121 -0
  57. data/core/admin/assets/js/vendor/codemirror/addon/hint/python-hint.js +95 -0
  58. data/core/admin/assets/js/vendor/codemirror/addon/hint/show-hint.css +38 -0
  59. data/core/admin/assets/js/vendor/codemirror/addon/hint/show-hint.js +274 -0
  60. data/core/admin/assets/js/vendor/codemirror/addon/hint/sql-hint.js +105 -0
  61. data/core/admin/assets/js/vendor/codemirror/addon/hint/xml-hint.js +69 -0
  62. data/core/admin/assets/js/vendor/codemirror/addon/lint/coffeescript-lint.js +27 -0
  63. data/core/admin/assets/js/vendor/codemirror/addon/lint/css-lint.js +19 -0
  64. data/core/admin/assets/js/vendor/codemirror/addon/lint/javascript-lint.js +126 -0
  65. data/core/admin/assets/js/vendor/codemirror/addon/lint/json-lint.js +17 -0
  66. data/core/admin/assets/js/vendor/codemirror/addon/lint/lint.css +73 -0
  67. data/core/admin/assets/js/vendor/codemirror/addon/lint/lint.js +203 -0
  68. data/core/admin/assets/js/vendor/codemirror/addon/merge/dep/diff_match_patch.js +50 -0
  69. data/core/admin/assets/js/vendor/codemirror/addon/merge/merge.css +92 -0
  70. data/core/admin/assets/js/vendor/codemirror/addon/merge/merge.js +474 -0
  71. data/core/admin/assets/js/vendor/codemirror/addon/mode/loadmode.js +51 -0
  72. data/core/admin/assets/js/vendor/codemirror/addon/mode/multiplex.js +101 -0
  73. data/core/admin/assets/js/vendor/codemirror/addon/mode/multiplex_test.js +30 -0
  74. data/core/admin/assets/js/vendor/codemirror/addon/mode/overlay.js +59 -0
  75. data/core/admin/assets/js/vendor/codemirror/addon/runmode/colorize.js +29 -0
  76. data/core/admin/assets/js/vendor/codemirror/addon/runmode/runmode-standalone.js +136 -0
  77. data/core/admin/assets/js/vendor/codemirror/addon/runmode/runmode.js +56 -0
  78. data/core/admin/assets/js/vendor/codemirror/addon/runmode/runmode.node.js +103 -0
  79. data/core/admin/assets/js/vendor/codemirror/addon/scroll/scrollpastend.js +34 -0
  80. data/core/admin/assets/js/vendor/codemirror/addon/search/match-highlighter.js +91 -0
  81. data/core/admin/assets/js/vendor/codemirror/addon/search/search.js +133 -0
  82. data/core/admin/assets/js/vendor/codemirror/addon/search/searchcursor.js +143 -0
  83. data/core/admin/assets/js/vendor/codemirror/addon/selection/active-line.js +39 -0
  84. data/core/admin/assets/js/vendor/codemirror/addon/selection/mark-selection.js +108 -0
  85. data/core/admin/assets/js/vendor/codemirror/addon/tern/tern.css +85 -0
  86. data/core/admin/assets/js/vendor/codemirror/addon/tern/tern.js +632 -0
  87. data/core/admin/assets/js/vendor/codemirror/addon/tern/worker.js +41 -0
  88. data/core/admin/assets/js/vendor/codemirror/addon/wrap/hardwrap.js +99 -0
  89. data/core/admin/assets/js/vendor/codemirror/bin/authors.sh +6 -0
  90. data/core/admin/assets/js/vendor/codemirror/bin/compress +92 -0
  91. data/core/admin/assets/js/vendor/codemirror/bin/lint +16 -0
  92. data/core/admin/assets/js/vendor/codemirror/bin/source-highlight +61 -0
  93. data/core/admin/assets/js/vendor/codemirror/bower.json +15 -0
  94. data/core/admin/assets/js/vendor/codemirror/demo/activeline.html +78 -0
  95. data/core/admin/assets/js/vendor/codemirror/demo/anywordhint.html +79 -0
  96. data/core/admin/assets/js/vendor/codemirror/demo/bidi.html +74 -0
  97. data/core/admin/assets/js/vendor/codemirror/demo/btree.html +86 -0
  98. data/core/admin/assets/js/vendor/codemirror/demo/buffers.html +109 -0
  99. data/core/admin/assets/js/vendor/codemirror/demo/changemode.html +59 -0
  100. data/core/admin/assets/js/vendor/codemirror/demo/closebrackets.html +63 -0
  101. data/core/admin/assets/js/vendor/codemirror/demo/closetag.html +40 -0
  102. data/core/admin/assets/js/vendor/codemirror/demo/complete.html +80 -0
  103. data/core/admin/assets/js/vendor/codemirror/demo/emacs.html +75 -0
  104. data/core/admin/assets/js/vendor/codemirror/demo/folding.html +75 -0
  105. data/core/admin/assets/js/vendor/codemirror/demo/fullscreen.html +130 -0
  106. data/core/admin/assets/js/vendor/codemirror/demo/hardwrap.html +69 -0
  107. data/core/admin/assets/js/vendor/codemirror/demo/html5complete.html +54 -0
  108. data/core/admin/assets/js/vendor/codemirror/demo/indentwrap.html +58 -0
  109. data/core/admin/assets/js/vendor/codemirror/demo/lint.html +171 -0
  110. data/core/admin/assets/js/vendor/codemirror/demo/loadmode.html +49 -0
  111. data/core/admin/assets/js/vendor/codemirror/demo/marker.html +52 -0
  112. data/core/admin/assets/js/vendor/codemirror/demo/markselection.html +45 -0
  113. data/core/admin/assets/js/vendor/codemirror/demo/matchhighlighter.html +47 -0
  114. data/core/admin/assets/js/vendor/codemirror/demo/matchtags.html +49 -0
  115. data/core/admin/assets/js/vendor/codemirror/demo/merge.html +82 -0
  116. data/core/admin/assets/js/vendor/codemirror/demo/multiplex.html +75 -0
  117. data/core/admin/assets/js/vendor/codemirror/demo/mustache.html +68 -0
  118. data/core/admin/assets/js/vendor/codemirror/demo/placeholder.html +45 -0
  119. data/core/admin/assets/js/vendor/codemirror/demo/preview.html +88 -0
  120. data/core/admin/assets/js/vendor/codemirror/demo/resize.html +58 -0
  121. data/core/admin/assets/js/vendor/codemirror/demo/runmode.html +62 -0
  122. data/core/admin/assets/js/vendor/codemirror/demo/search.html +94 -0
  123. data/core/admin/assets/js/vendor/codemirror/demo/spanaffectswrapping_shim.html +85 -0
  124. data/core/admin/assets/js/vendor/codemirror/demo/tern.html +128 -0
  125. data/core/admin/assets/js/vendor/codemirror/demo/theme.html +121 -0
  126. data/core/admin/assets/js/vendor/codemirror/demo/trailingspace.html +48 -0
  127. data/core/admin/assets/js/vendor/codemirror/demo/variableheight.html +61 -0
  128. data/core/admin/assets/js/vendor/codemirror/demo/vim.html +74 -0
  129. data/core/admin/assets/js/vendor/codemirror/demo/visibletabs.html +62 -0
  130. data/core/admin/assets/js/vendor/codemirror/demo/widget.html +85 -0
  131. data/core/admin/assets/js/vendor/codemirror/demo/xmlcomplete.html +116 -0
  132. data/core/admin/assets/js/vendor/codemirror/doc/activebookmark.js +42 -0
  133. data/core/admin/assets/js/vendor/codemirror/doc/compress.html +231 -0
  134. data/core/admin/assets/js/vendor/codemirror/doc/docs.css +226 -0
  135. data/core/admin/assets/js/vendor/codemirror/doc/internals.html +503 -0
  136. data/core/admin/assets/js/vendor/codemirror/doc/logo.png +0 -0
  137. data/core/admin/assets/js/vendor/codemirror/doc/logo.svg +147 -0
  138. data/core/admin/assets/js/vendor/codemirror/doc/manual.html +2512 -0
  139. data/core/admin/assets/js/vendor/codemirror/doc/realworld.html +134 -0
  140. data/core/admin/assets/js/vendor/codemirror/doc/releases.html +779 -0
  141. data/core/admin/assets/js/vendor/codemirror/doc/reporting.html +61 -0
  142. data/core/admin/assets/js/vendor/codemirror/doc/upgrade_v2.2.html +96 -0
  143. data/core/admin/assets/js/vendor/codemirror/doc/upgrade_v3.html +230 -0
  144. data/core/admin/assets/js/vendor/codemirror/index.html +192 -0
  145. data/core/admin/assets/js/vendor/codemirror/keymap/emacs.js +387 -0
  146. data/core/admin/assets/js/vendor/codemirror/keymap/extra.js +43 -0
  147. data/core/admin/assets/js/vendor/codemirror/keymap/vim.js +3704 -0
  148. data/core/admin/assets/js/vendor/codemirror/lib/codemirror.css +263 -0
  149. data/core/admin/assets/js/vendor/codemirror/lib/codemirror.js +5910 -0
  150. data/core/admin/assets/js/vendor/codemirror/mode/apl/apl.js +160 -0
  151. data/core/admin/assets/js/vendor/codemirror/mode/apl/index.html +72 -0
  152. data/core/admin/assets/js/vendor/codemirror/mode/asterisk/asterisk.js +183 -0
  153. data/core/admin/assets/js/vendor/codemirror/mode/asterisk/index.html +154 -0
  154. data/core/admin/assets/js/vendor/codemirror/mode/clike/clike.js +362 -0
  155. data/core/admin/assets/js/vendor/codemirror/mode/clike/index.html +195 -0
  156. data/core/admin/assets/js/vendor/codemirror/mode/clike/scala.html +767 -0
  157. data/core/admin/assets/js/vendor/codemirror/mode/clojure/clojure.js +224 -0
  158. data/core/admin/assets/js/vendor/codemirror/mode/clojure/index.html +88 -0
  159. data/core/admin/assets/js/vendor/codemirror/mode/cobol/cobol.js +240 -0
  160. data/core/admin/assets/js/vendor/codemirror/mode/cobol/index.html +210 -0
  161. data/core/admin/assets/js/vendor/codemirror/mode/coffeescript/coffeescript.js +349 -0
  162. data/core/admin/assets/js/vendor/codemirror/mode/coffeescript/index.html +740 -0
  163. data/core/admin/assets/js/vendor/codemirror/mode/commonlisp/commonlisp.js +105 -0
  164. data/core/admin/assets/js/vendor/codemirror/mode/commonlisp/index.html +177 -0
  165. data/core/admin/assets/js/vendor/codemirror/mode/css/css.js +639 -0
  166. data/core/admin/assets/js/vendor/codemirror/mode/css/index.html +70 -0
  167. data/core/admin/assets/js/vendor/codemirror/mode/css/scss.html +157 -0
  168. data/core/admin/assets/js/vendor/codemirror/mode/css/scss_test.js +84 -0
  169. data/core/admin/assets/js/vendor/codemirror/mode/css/test.js +130 -0
  170. data/core/admin/assets/js/vendor/codemirror/mode/d/d.js +205 -0
  171. data/core/admin/assets/js/vendor/codemirror/mode/d/index.html +273 -0
  172. data/core/admin/assets/js/vendor/codemirror/mode/diff/diff.js +32 -0
  173. data/core/admin/assets/js/vendor/codemirror/mode/diff/index.html +117 -0
  174. data/core/admin/assets/js/vendor/codemirror/mode/dtd/dtd.js +127 -0
  175. data/core/admin/assets/js/vendor/codemirror/mode/dtd/index.html +89 -0
  176. data/core/admin/assets/js/vendor/codemirror/mode/ecl/ecl.js +192 -0
  177. data/core/admin/assets/js/vendor/codemirror/mode/ecl/index.html +52 -0
  178. data/core/admin/assets/js/vendor/codemirror/mode/eiffel/eiffel.js +147 -0
  179. data/core/admin/assets/js/vendor/codemirror/mode/eiffel/index.html +430 -0
  180. data/core/admin/assets/js/vendor/codemirror/mode/erlang/erlang.js +484 -0
  181. data/core/admin/assets/js/vendor/codemirror/mode/erlang/index.html +75 -0
  182. data/core/admin/assets/js/vendor/codemirror/mode/fortran/fortran.js +173 -0
  183. data/core/admin/assets/js/vendor/codemirror/mode/fortran/index.html +81 -0
  184. data/core/admin/assets/js/vendor/codemirror/mode/gas/gas.js +330 -0
  185. data/core/admin/assets/js/vendor/codemirror/mode/gas/index.html +68 -0
  186. data/core/admin/assets/js/vendor/codemirror/mode/gfm/gfm.js +97 -0
  187. data/core/admin/assets/js/vendor/codemirror/mode/gfm/index.html +82 -0
  188. data/core/admin/assets/js/vendor/codemirror/mode/gfm/test.js +112 -0
  189. data/core/admin/assets/js/vendor/codemirror/mode/gherkin/gherkin.js +168 -0
  190. data/core/admin/assets/js/vendor/codemirror/mode/gherkin/index.html +48 -0
  191. data/core/admin/assets/js/vendor/codemirror/mode/go/go.js +168 -0
  192. data/core/admin/assets/js/vendor/codemirror/mode/go/index.html +85 -0
  193. data/core/admin/assets/js/vendor/codemirror/mode/groovy/groovy.js +211 -0
  194. data/core/admin/assets/js/vendor/codemirror/mode/groovy/index.html +84 -0
  195. data/core/admin/assets/js/vendor/codemirror/mode/haml/haml.js +153 -0
  196. data/core/admin/assets/js/vendor/codemirror/mode/haml/index.html +79 -0
  197. data/core/admin/assets/js/vendor/codemirror/mode/haml/test.js +94 -0
  198. data/core/admin/assets/js/vendor/codemirror/mode/haskell/haskell.js +250 -0
  199. data/core/admin/assets/js/vendor/codemirror/mode/haskell/index.html +73 -0
  200. data/core/admin/assets/js/vendor/codemirror/mode/haxe/haxe.js +429 -0
  201. data/core/admin/assets/js/vendor/codemirror/mode/haxe/index.html +103 -0
  202. data/core/admin/assets/js/vendor/codemirror/mode/htmlembedded/htmlembedded.js +73 -0
  203. data/core/admin/assets/js/vendor/codemirror/mode/htmlembedded/index.html +60 -0
  204. data/core/admin/assets/js/vendor/codemirror/mode/htmlmixed/htmlmixed.js +104 -0
  205. data/core/admin/assets/js/vendor/codemirror/mode/htmlmixed/index.html +85 -0
  206. data/core/admin/assets/js/vendor/codemirror/mode/http/http.js +98 -0
  207. data/core/admin/assets/js/vendor/codemirror/mode/http/index.html +45 -0
  208. data/core/admin/assets/js/vendor/codemirror/mode/index.html +112 -0
  209. data/core/admin/assets/js/vendor/codemirror/mode/jade/index.html +66 -0
  210. data/core/admin/assets/js/vendor/codemirror/mode/jade/jade.js +90 -0
  211. data/core/admin/assets/js/vendor/codemirror/mode/javascript/index.html +107 -0
  212. data/core/admin/assets/js/vendor/codemirror/mode/javascript/javascript.js +480 -0
  213. data/core/admin/assets/js/vendor/codemirror/mode/javascript/test.js +10 -0
  214. data/core/admin/assets/js/vendor/codemirror/mode/javascript/typescript.html +61 -0
  215. data/core/admin/assets/js/vendor/codemirror/mode/jinja2/index.html +50 -0
  216. data/core/admin/assets/js/vendor/codemirror/mode/jinja2/jinja2.js +42 -0
  217. data/core/admin/assets/js/vendor/codemirror/mode/less/index.html +753 -0
  218. data/core/admin/assets/js/vendor/codemirror/mode/less/less.js +344 -0
  219. data/core/admin/assets/js/vendor/codemirror/mode/livescript/index.html +459 -0
  220. data/core/admin/assets/js/vendor/codemirror/mode/livescript/livescript.js +267 -0
  221. data/core/admin/assets/js/vendor/codemirror/mode/livescript/livescript.ls +266 -0
  222. data/core/admin/assets/js/vendor/codemirror/mode/lua/index.html +86 -0
  223. data/core/admin/assets/js/vendor/codemirror/mode/lua/lua.js +144 -0
  224. data/core/admin/assets/js/vendor/codemirror/mode/markdown/index.html +359 -0
  225. data/core/admin/assets/js/vendor/codemirror/mode/markdown/markdown.js +551 -0
  226. data/core/admin/assets/js/vendor/codemirror/mode/markdown/test.js +656 -0
  227. data/core/admin/assets/js/vendor/codemirror/mode/meta.js +89 -0
  228. data/core/admin/assets/js/vendor/codemirror/mode/mirc/index.html +161 -0
  229. data/core/admin/assets/js/vendor/codemirror/mode/mirc/mirc.js +177 -0
  230. data/core/admin/assets/js/vendor/codemirror/mode/nginx/index.html +181 -0
  231. data/core/admin/assets/js/vendor/codemirror/mode/nginx/nginx.js +163 -0
  232. data/core/admin/assets/js/vendor/codemirror/mode/ntriples/index.html +45 -0
  233. data/core/admin/assets/js/vendor/codemirror/mode/ntriples/ntriples.js +170 -0
  234. data/core/admin/assets/js/vendor/codemirror/mode/ocaml/index.html +146 -0
  235. data/core/admin/assets/js/vendor/codemirror/mode/ocaml/ocaml.js +116 -0
  236. data/core/admin/assets/js/vendor/codemirror/mode/octave/index.html +95 -0
  237. data/core/admin/assets/js/vendor/codemirror/mode/octave/octave.js +118 -0
  238. data/core/admin/assets/js/vendor/codemirror/mode/pascal/index.html +61 -0
  239. data/core/admin/assets/js/vendor/codemirror/mode/pascal/pascal.js +94 -0
  240. data/core/admin/assets/js/vendor/codemirror/mode/perl/index.html +75 -0
  241. data/core/admin/assets/js/vendor/codemirror/mode/perl/perl.js +816 -0
  242. data/core/admin/assets/js/vendor/codemirror/mode/php/index.html +62 -0
  243. data/core/admin/assets/js/vendor/codemirror/mode/php/php.js +132 -0
  244. data/core/admin/assets/js/vendor/codemirror/mode/pig/index.html +55 -0
  245. data/core/admin/assets/js/vendor/codemirror/mode/pig/pig.js +171 -0
  246. data/core/admin/assets/js/vendor/codemirror/mode/properties/index.html +53 -0
  247. data/core/admin/assets/js/vendor/codemirror/mode/properties/properties.js +63 -0
  248. data/core/admin/assets/js/vendor/codemirror/mode/python/index.html +187 -0
  249. data/core/admin/assets/js/vendor/codemirror/mode/python/python.js +368 -0
  250. data/core/admin/assets/js/vendor/codemirror/mode/q/index.html +144 -0
  251. data/core/admin/assets/js/vendor/codemirror/mode/q/q.js +124 -0
  252. data/core/admin/assets/js/vendor/codemirror/mode/r/index.html +86 -0
  253. data/core/admin/assets/js/vendor/codemirror/mode/r/r.js +141 -0
  254. data/core/admin/assets/js/vendor/codemirror/mode/rpm/changes/changes.js +19 -0
  255. data/core/admin/assets/js/vendor/codemirror/mode/rpm/changes/index.html +67 -0
  256. data/core/admin/assets/js/vendor/codemirror/mode/rpm/spec/index.html +114 -0
  257. data/core/admin/assets/js/vendor/codemirror/mode/rpm/spec/spec.css +5 -0
  258. data/core/admin/assets/js/vendor/codemirror/mode/rpm/spec/spec.js +66 -0
  259. data/core/admin/assets/js/vendor/codemirror/mode/rst/index.html +534 -0
  260. data/core/admin/assets/js/vendor/codemirror/mode/rst/rst.js +560 -0
  261. data/core/admin/assets/js/vendor/codemirror/mode/ruby/index.html +185 -0
  262. data/core/admin/assets/js/vendor/codemirror/mode/ruby/ruby.js +247 -0
  263. data/core/admin/assets/js/vendor/codemirror/mode/rust/index.html +61 -0
  264. data/core/admin/assets/js/vendor/codemirror/mode/rust/rust.js +436 -0
  265. data/core/admin/assets/js/vendor/codemirror/mode/sass/index.html +66 -0
  266. data/core/admin/assets/js/vendor/codemirror/mode/sass/sass.js +330 -0
  267. data/core/admin/assets/js/vendor/codemirror/mode/scheme/index.html +77 -0
  268. data/core/admin/assets/js/vendor/codemirror/mode/scheme/scheme.js +232 -0
  269. data/core/admin/assets/js/vendor/codemirror/mode/shell/index.html +66 -0
  270. data/core/admin/assets/js/vendor/codemirror/mode/shell/shell.js +118 -0
  271. data/core/admin/assets/js/vendor/codemirror/mode/sieve/index.html +93 -0
  272. data/core/admin/assets/js/vendor/codemirror/mode/sieve/sieve.js +183 -0
  273. data/core/admin/assets/js/vendor/codemirror/mode/smalltalk/index.html +68 -0
  274. data/core/admin/assets/js/vendor/codemirror/mode/smalltalk/smalltalk.js +151 -0
  275. data/core/admin/assets/js/vendor/codemirror/mode/smarty/index.html +136 -0
  276. data/core/admin/assets/js/vendor/codemirror/mode/smarty/smarty.js +205 -0
  277. data/core/admin/assets/js/vendor/codemirror/mode/smartymixed/index.html +114 -0
  278. data/core/admin/assets/js/vendor/codemirror/mode/smartymixed/smartymixed.js +175 -0
  279. data/core/admin/assets/js/vendor/codemirror/mode/sparql/index.html +54 -0
  280. data/core/admin/assets/js/vendor/codemirror/mode/sparql/sparql.js +145 -0
  281. data/core/admin/assets/js/vendor/codemirror/mode/sql/index.html +75 -0
  282. data/core/admin/assets/js/vendor/codemirror/mode/sql/sql.js +365 -0
  283. data/core/admin/assets/js/vendor/codemirror/mode/stex/index.html +110 -0
  284. data/core/admin/assets/js/vendor/codemirror/mode/stex/stex.js +246 -0
  285. data/core/admin/assets/js/vendor/codemirror/mode/stex/test.js +120 -0
  286. data/core/admin/assets/js/vendor/codemirror/mode/tcl/index.html +143 -0
  287. data/core/admin/assets/js/vendor/codemirror/mode/tcl/tcl.js +131 -0
  288. data/core/admin/assets/js/vendor/codemirror/mode/tiddlywiki/index.html +155 -0
  289. data/core/admin/assets/js/vendor/codemirror/mode/tiddlywiki/tiddlywiki.css +14 -0
  290. data/core/admin/assets/js/vendor/codemirror/mode/tiddlywiki/tiddlywiki.js +353 -0
  291. data/core/admin/assets/js/vendor/codemirror/mode/tiki/index.html +95 -0
  292. data/core/admin/assets/js/vendor/codemirror/mode/tiki/tiki.css +26 -0
  293. data/core/admin/assets/js/vendor/codemirror/mode/tiki/tiki.js +308 -0
  294. data/core/admin/assets/js/vendor/codemirror/mode/toml/index.html +73 -0
  295. data/core/admin/assets/js/vendor/codemirror/mode/toml/toml.js +71 -0
  296. data/core/admin/assets/js/vendor/codemirror/mode/turtle/index.html +51 -0
  297. data/core/admin/assets/js/vendor/codemirror/mode/turtle/turtle.js +145 -0
  298. data/core/admin/assets/js/vendor/codemirror/mode/vb/index.html +103 -0
  299. data/core/admin/assets/js/vendor/codemirror/mode/vb/vb.js +259 -0
  300. data/core/admin/assets/js/vendor/codemirror/mode/vbscript/index.html +55 -0
  301. data/core/admin/assets/js/vendor/codemirror/mode/vbscript/vbscript.js +334 -0
  302. data/core/admin/assets/js/vendor/codemirror/mode/velocity/index.html +119 -0
  303. data/core/admin/assets/js/vendor/codemirror/mode/velocity/velocity.js +186 -0
  304. data/core/admin/assets/js/vendor/codemirror/mode/verilog/index.html +132 -0
  305. data/core/admin/assets/js/vendor/codemirror/mode/verilog/verilog.js +182 -0
  306. data/core/admin/assets/js/vendor/codemirror/mode/xml/index.html +57 -0
  307. data/core/admin/assets/js/vendor/codemirror/mode/xml/xml.js +345 -0
  308. data/core/admin/assets/js/vendor/codemirror/mode/xquery/index.html +210 -0
  309. data/core/admin/assets/js/vendor/codemirror/mode/xquery/test.js +64 -0
  310. data/core/admin/assets/js/vendor/codemirror/mode/xquery/xquery.js +432 -0
  311. data/core/admin/assets/js/vendor/codemirror/mode/yaml/index.html +80 -0
  312. data/core/admin/assets/js/vendor/codemirror/mode/yaml/yaml.js +97 -0
  313. data/core/admin/assets/js/vendor/codemirror/mode/z80/index.html +52 -0
  314. data/core/admin/assets/js/vendor/codemirror/mode/z80/z80.js +85 -0
  315. data/core/admin/assets/js/vendor/codemirror/package.json +19 -0
  316. data/core/admin/assets/js/vendor/codemirror/test/comment_test.js +51 -0
  317. data/core/admin/assets/js/vendor/codemirror/test/doc_test.js +329 -0
  318. data/core/admin/assets/js/vendor/codemirror/test/driver.js +139 -0
  319. data/core/admin/assets/js/vendor/codemirror/test/emacs_test.js +135 -0
  320. data/core/admin/assets/js/vendor/codemirror/test/index.html +209 -0
  321. data/core/admin/assets/js/vendor/codemirror/test/lint/acorn.js +1593 -0
  322. data/core/admin/assets/js/vendor/codemirror/test/lint/lint.js +139 -0
  323. data/core/admin/assets/js/vendor/codemirror/test/lint/walk.js +216 -0
  324. data/core/admin/assets/js/vendor/codemirror/test/mode_test.css +10 -0
  325. data/core/admin/assets/js/vendor/codemirror/test/mode_test.js +200 -0
  326. data/core/admin/assets/js/vendor/codemirror/test/phantom_driver.js +31 -0
  327. data/core/admin/assets/js/vendor/codemirror/test/run.js +34 -0
  328. data/core/admin/assets/js/vendor/codemirror/test/test.js +1562 -0
  329. data/core/admin/assets/js/vendor/codemirror/test/vim_test.js +2391 -0
  330. data/core/admin/assets/js/vendor/codemirror/theme/3024-day.css +34 -0
  331. data/core/admin/assets/js/vendor/codemirror/theme/3024-night.css +34 -0
  332. data/core/admin/assets/js/vendor/codemirror/theme/ambiance-mobile.css +5 -0
  333. data/core/admin/assets/js/vendor/codemirror/theme/ambiance.css +75 -0
  334. data/core/admin/assets/js/vendor/codemirror/theme/base16-dark.css +34 -0
  335. data/core/admin/assets/js/vendor/codemirror/theme/base16-light.css +34 -0
  336. data/core/admin/assets/js/vendor/codemirror/theme/blackboard.css +28 -0
  337. data/core/admin/assets/js/vendor/codemirror/theme/cobalt.css +21 -0
  338. data/core/admin/assets/js/vendor/codemirror/theme/eclipse.css +23 -0
  339. data/core/admin/assets/js/vendor/codemirror/theme/elegant.css +13 -0
  340. data/core/admin/assets/js/vendor/codemirror/theme/erlang-dark.css +30 -0
  341. data/core/admin/assets/js/vendor/codemirror/theme/lesser-dark.css +47 -0
  342. data/core/admin/assets/js/vendor/codemirror/theme/mbo.css +35 -0
  343. data/core/admin/assets/js/vendor/codemirror/theme/midnight.css +43 -0
  344. data/core/admin/assets/js/vendor/codemirror/theme/monokai.css +29 -0
  345. data/core/admin/assets/js/vendor/codemirror/theme/neat.css +12 -0
  346. data/core/admin/assets/js/vendor/codemirror/theme/night.css +24 -0
  347. data/core/admin/assets/js/vendor/codemirror/theme/paraiso-dark.css +34 -0
  348. data/core/admin/assets/js/vendor/codemirror/theme/paraiso-light.css +34 -0
  349. data/core/admin/assets/js/vendor/codemirror/theme/rubyblue.css +23 -0
  350. data/core/admin/assets/js/vendor/codemirror/theme/solarized-mod.css +181 -0
  351. data/core/admin/assets/js/vendor/codemirror/theme/solarized.css +180 -0
  352. data/core/admin/assets/js/vendor/codemirror/theme/the-matrix.css +26 -0
  353. data/core/admin/assets/js/vendor/codemirror/theme/tomorrow-night-eighties.css +34 -0
  354. data/core/admin/assets/js/vendor/codemirror/theme/twilight.css +28 -0
  355. data/core/admin/assets/js/vendor/codemirror/theme/vibrant-ink.css +30 -0
  356. data/core/admin/assets/js/vendor/codemirror/theme/xq-dark.css +49 -0
  357. data/core/admin/assets/js/vendor/codemirror/theme/xq-light.css +43 -0
  358. data/core/admin/assets/js/vendor/fastclick.js +777 -0
  359. data/core/admin/assets/js/vendor/jquery.js +6 -0
  360. data/core/admin/assets/js/vendor/lodash.underscore.js +38 -0
  361. data/core/admin/assets/js/vendor/require.js +36 -0
  362. data/core/admin/assets/scss/bootstrap.scss +18 -0
  363. data/core/admin/assets/scss/modules/_all.scss +7 -0
  364. data/core/admin/assets/scss/modules/_colors.scss +7 -0
  365. data/core/admin/assets/scss/modules/_extensions.scss +24 -0
  366. data/core/admin/assets/scss/modules/_mixins.scss +18 -0
  367. data/core/admin/assets/scss/modules/_susy.scss +7 -0
  368. data/core/admin/assets/scss/partials/_base.scss +33 -0
  369. data/core/admin/assets/scss/partials/_buttons.scss +9 -0
  370. data/core/admin/assets/scss/partials/_links.scss +15 -0
  371. data/core/admin/assets/scss/partials/_main.scss +14 -0
  372. data/core/admin/assets/scss/partials/_typography.scss +15 -0
  373. data/core/admin/assets/scss/sections/_editor.scss +274 -0
  374. data/core/admin/assets/scss/sections/_login.scss +34 -0
  375. data/core/admin/assets/scss/vendor/_normalize.scss +406 -0
  376. data/core/admin/layouts/admin.haml +67 -0
  377. data/core/admin/partials/_head.haml +23 -0
  378. data/core/admin/partials/_tree.haml +3 -0
  379. data/core/admin/partials/_treeitem.haml +4 -0
  380. data/core/admin/settings.yml +4 -0
  381. data/core/app.rb +21 -0
  382. data/core/classes/cached.rb +35 -0
  383. data/core/classes/checker.rb +37 -0
  384. data/core/classes/commit.rb +62 -0
  385. data/core/classes/error.rb +9 -0
  386. data/core/classes/page.rb +165 -0
  387. data/core/classes/partial.rb +13 -0
  388. data/core/classes/path.rb +30 -0
  389. data/core/classes/persona.rb +55 -0
  390. data/core/classes/sassfile.rb +95 -0
  391. data/core/classes/settings.rb +19 -0
  392. data/core/classes/theme.rb +55 -0
  393. data/core/helpers/base.rb +46 -0
  394. data/core/helpers/render.rb +26 -0
  395. data/core/helpers/truncate.rb +17 -0
  396. data/core/routes/admin.rb +139 -0
  397. data/core/routes/assetcompiler.rb +23 -0
  398. data/core/routes/base.rb +22 -0
  399. data/core/routes/bootstrap.rb +35 -0
  400. data/core/routes/cache.rb +52 -0
  401. data/core/routes/deploy.rb +16 -0
  402. data/core/routes/git.rb +23 -0
  403. data/poly.gemspec +29 -0
  404. data/sample/.cabi-data +0 -0
  405. data/sample/data/home/index.haml +22 -0
  406. data/sample/data/other/nav/links.yml +4 -0
  407. data/sample/data/page/about/index.haml +12 -0
  408. data/sample/data/page/contact-us/index.haml +11 -0
  409. data/sample/data/page/dynamic-page/index.haml +14 -0
  410. data/sample/data/page/error/index.haml +8 -0
  411. data/sample/data/page/html/index.html +4 -0
  412. data/sample/data/page/no-front-matter/index.haml +7 -0
  413. data/sample/data/page/not-found/index.haml +8 -0
  414. data/sample/data/page/static-page/index.haml +14 -0
  415. data/sample/data/post/about-life/index.md +12 -0
  416. data/sample/data/post/sample-post/index.haml +12 -0
  417. data/sample/data/post/technology/index.haml +12 -0
  418. data/sample/data/post/the-40-hour-workweek/index.haml +9 -0
  419. data/sample/data/post/things-are-changing/index.haml +9 -0
  420. data/sample/data/post/yet-another-post/index.haml +11 -0
  421. data/sample/plugins/my-plugin/plugin.rb +15 -0
  422. data/sample/settings.yml +21 -0
  423. data/sample/themes/base/assets/css/readme.txt +6 -0
  424. data/sample/themes/base/assets/images/poly.svg +36 -0
  425. data/sample/themes/base/assets/js/app/views/main.js +13 -0
  426. data/sample/themes/base/assets/js/main.js +31 -0
  427. data/sample/themes/base/assets/js/vendor/backbone.js +4 -0
  428. data/sample/themes/base/assets/js/vendor/jquery.js +6 -0
  429. data/sample/themes/base/assets/js/vendor/lodash.underscore.js +38 -0
  430. data/sample/themes/base/assets/js/vendor/require.js +36 -0
  431. data/sample/themes/base/assets/scss/bootstrap.scss +20 -0
  432. data/sample/themes/base/assets/scss/modules/_all.scss +7 -0
  433. data/sample/themes/base/assets/scss/modules/_colors.scss +7 -0
  434. data/sample/themes/base/assets/scss/modules/_extensions.scss +13 -0
  435. data/sample/themes/base/assets/scss/modules/_mixins.scss +11 -0
  436. data/sample/themes/base/assets/scss/modules/_susy.scss +7 -0
  437. data/sample/themes/base/assets/scss/partials/_base.scss +33 -0
  438. data/sample/themes/base/assets/scss/partials/_buttons.scss +0 -0
  439. data/sample/themes/base/assets/scss/partials/_links.scss +15 -0
  440. data/sample/themes/base/assets/scss/partials/_main.scss +39 -0
  441. data/sample/themes/base/assets/scss/partials/_typography.scss +15 -0
  442. data/sample/themes/base/assets/scss/sections/_footer.scss +22 -0
  443. data/sample/themes/base/assets/scss/sections/_header.scss +23 -0
  444. data/sample/themes/base/assets/scss/sections/_home.scss +13 -0
  445. data/sample/themes/base/assets/scss/sections/_pages.scss +11 -0
  446. data/sample/themes/base/assets/scss/vendor/_normalize.scss +406 -0
  447. data/sample/themes/base/layouts/default.haml +14 -0
  448. data/sample/themes/base/layouts/post.haml +15 -0
  449. data/sample/themes/base/partials/_footer.haml +9 -0
  450. data/sample/themes/base/partials/_ga.haml +10 -0
  451. data/sample/themes/base/partials/_head.haml +20 -0
  452. data/sample/themes/base/partials/_header.haml +5 -0
  453. data/sample/themes/base/settings.yml +4 -0
  454. data/test/data/post-receive-hook.json +146 -0
  455. data/test/test_basics.rb +50 -0
  456. data/test/test_data.rb +14 -0
  457. data/test/test_deploy.rb +23 -0
  458. data/test/test_includes.rb +43 -0
  459. data/test/test_page.rb +47 -0
  460. metadata +1049 -0
@@ -0,0 +1,656 @@
1
+ (function() {
2
+ var mode = CodeMirror.getMode({tabSize: 4}, "markdown");
3
+ function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); }
4
+
5
+ MT("plainText",
6
+ "foo");
7
+
8
+ // Don't style single trailing space
9
+ MT("trailingSpace1",
10
+ "foo ");
11
+
12
+ // Two or more trailing spaces should be styled with line break character
13
+ MT("trailingSpace2",
14
+ "foo[trailing-space-a ][trailing-space-new-line ]");
15
+
16
+ MT("trailingSpace3",
17
+ "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]");
18
+
19
+ MT("trailingSpace4",
20
+ "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]");
21
+
22
+ // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value)
23
+ MT("codeBlocksUsing4Spaces",
24
+ " [comment foo]");
25
+
26
+ // Code blocks using 4 spaces with internal indentation
27
+ MT("codeBlocksUsing4SpacesIndentation",
28
+ " [comment bar]",
29
+ " [comment hello]",
30
+ " [comment world]",
31
+ " [comment foo]",
32
+ "bar");
33
+
34
+ // Code blocks using 4 spaces with internal indentation
35
+ MT("codeBlocksUsing4SpacesIndentation",
36
+ " foo",
37
+ " [comment bar]",
38
+ " [comment hello]",
39
+ " [comment world]");
40
+
41
+ // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value)
42
+ MT("codeBlocksUsing1Tab",
43
+ "\t[comment foo]");
44
+
45
+ // Inline code using backticks
46
+ MT("inlineCodeUsingBackticks",
47
+ "foo [comment `bar`]");
48
+
49
+ // Block code using single backtick (shouldn't work)
50
+ MT("blockCodeSingleBacktick",
51
+ "[comment `]",
52
+ "foo",
53
+ "[comment `]");
54
+
55
+ // Unclosed backticks
56
+ // Instead of simply marking as CODE, it would be nice to have an
57
+ // incomplete flag for CODE, that is styled slightly different.
58
+ MT("unclosedBackticks",
59
+ "foo [comment `bar]");
60
+
61
+ // Per documentation: "To include a literal backtick character within a
62
+ // code span, you can use multiple backticks as the opening and closing
63
+ // delimiters"
64
+ MT("doubleBackticks",
65
+ "[comment ``foo ` bar``]");
66
+
67
+ // Tests based on Dingus
68
+ // http://daringfireball.net/projects/markdown/dingus
69
+ //
70
+ // Multiple backticks within an inline code block
71
+ MT("consecutiveBackticks",
72
+ "[comment `foo```bar`]");
73
+
74
+ // Multiple backticks within an inline code block with a second code block
75
+ MT("consecutiveBackticks",
76
+ "[comment `foo```bar`] hello [comment `world`]");
77
+
78
+ // Unclosed with several different groups of backticks
79
+ MT("unclosedBackticks",
80
+ "[comment ``foo ``` bar` hello]");
81
+
82
+ // Closed with several different groups of backticks
83
+ MT("closedBackticks",
84
+ "[comment ``foo ``` bar` hello``] world");
85
+
86
+ // atx headers
87
+ // http://daringfireball.net/projects/markdown/syntax#header
88
+
89
+ MT("atxH1",
90
+ "[header # foo]");
91
+
92
+ MT("atxH2",
93
+ "[header ## foo]");
94
+
95
+ MT("atxH3",
96
+ "[header ### foo]");
97
+
98
+ MT("atxH4",
99
+ "[header #### foo]");
100
+
101
+ MT("atxH5",
102
+ "[header ##### foo]");
103
+
104
+ MT("atxH6",
105
+ "[header ###### foo]");
106
+
107
+ // H6 - 7x '#' should still be H6, per Dingus
108
+ // http://daringfireball.net/projects/markdown/dingus
109
+ MT("atxH6NotH7",
110
+ "[header ####### foo]");
111
+
112
+ // Setext headers - H1, H2
113
+ // Per documentation, "Any number of underlining =’s or -’s will work."
114
+ // http://daringfireball.net/projects/markdown/syntax#header
115
+ // Ideally, the text would be marked as `header` as well, but this is
116
+ // not really feasible at the moment. So, instead, we're testing against
117
+ // what works today, to avoid any regressions.
118
+ //
119
+ // Check if single underlining = works
120
+ MT("setextH1",
121
+ "foo",
122
+ "[header =]");
123
+
124
+ // Check if 3+ ='s work
125
+ MT("setextH1",
126
+ "foo",
127
+ "[header ===]");
128
+
129
+ // Check if single underlining - works
130
+ MT("setextH2",
131
+ "foo",
132
+ "[header -]");
133
+
134
+ // Check if 3+ -'s work
135
+ MT("setextH2",
136
+ "foo",
137
+ "[header ---]");
138
+
139
+ // Single-line blockquote with trailing space
140
+ MT("blockquoteSpace",
141
+ "[atom > foo]");
142
+
143
+ // Single-line blockquote
144
+ MT("blockquoteNoSpace",
145
+ "[atom >foo]");
146
+
147
+ // No blank line before blockquote
148
+ MT("blockquoteNoBlankLine",
149
+ "foo",
150
+ "[atom > bar]");
151
+
152
+ // Nested blockquote
153
+ MT("blockquoteSpace",
154
+ "[atom > foo]",
155
+ "[number > > foo]",
156
+ "[atom > > > foo]");
157
+
158
+ // Single-line blockquote followed by normal paragraph
159
+ MT("blockquoteThenParagraph",
160
+ "[atom >foo]",
161
+ "",
162
+ "bar");
163
+
164
+ // Multi-line blockquote (lazy mode)
165
+ MT("multiBlockquoteLazy",
166
+ "[atom >foo]",
167
+ "[atom bar]");
168
+
169
+ // Multi-line blockquote followed by normal paragraph (lazy mode)
170
+ MT("multiBlockquoteLazyThenParagraph",
171
+ "[atom >foo]",
172
+ "[atom bar]",
173
+ "",
174
+ "hello");
175
+
176
+ // Multi-line blockquote (non-lazy mode)
177
+ MT("multiBlockquote",
178
+ "[atom >foo]",
179
+ "[atom >bar]");
180
+
181
+ // Multi-line blockquote followed by normal paragraph (non-lazy mode)
182
+ MT("multiBlockquoteThenParagraph",
183
+ "[atom >foo]",
184
+ "[atom >bar]",
185
+ "",
186
+ "hello");
187
+
188
+ // Check list types
189
+
190
+ MT("listAsterisk",
191
+ "foo",
192
+ "bar",
193
+ "",
194
+ "[variable-2 * foo]",
195
+ "[variable-2 * bar]");
196
+
197
+ MT("listPlus",
198
+ "foo",
199
+ "bar",
200
+ "",
201
+ "[variable-2 + foo]",
202
+ "[variable-2 + bar]");
203
+
204
+ MT("listDash",
205
+ "foo",
206
+ "bar",
207
+ "",
208
+ "[variable-2 - foo]",
209
+ "[variable-2 - bar]");
210
+
211
+ MT("listNumber",
212
+ "foo",
213
+ "bar",
214
+ "",
215
+ "[variable-2 1. foo]",
216
+ "[variable-2 2. bar]");
217
+
218
+ // Lists require a preceding blank line (per Dingus)
219
+ MT("listBogus",
220
+ "foo",
221
+ "1. bar",
222
+ "2. hello");
223
+
224
+ // Formatting in lists (*)
225
+ MT("listAsteriskFormatting",
226
+ "[variable-2 * ][variable-2&em *foo*][variable-2 bar]",
227
+ "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]",
228
+ "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
229
+ "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]");
230
+
231
+ // Formatting in lists (+)
232
+ MT("listPlusFormatting",
233
+ "[variable-2 + ][variable-2&em *foo*][variable-2 bar]",
234
+ "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]",
235
+ "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
236
+ "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]");
237
+
238
+ // Formatting in lists (-)
239
+ MT("listDashFormatting",
240
+ "[variable-2 - ][variable-2&em *foo*][variable-2 bar]",
241
+ "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]",
242
+ "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
243
+ "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]");
244
+
245
+ // Formatting in lists (1.)
246
+ MT("listNumberFormatting",
247
+ "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]",
248
+ "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]",
249
+ "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]",
250
+ "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]");
251
+
252
+ // Paragraph lists
253
+ MT("listParagraph",
254
+ "[variable-2 * foo]",
255
+ "",
256
+ "[variable-2 * bar]");
257
+
258
+ // Multi-paragraph lists
259
+ //
260
+ // 4 spaces
261
+ MT("listMultiParagraph",
262
+ "[variable-2 * foo]",
263
+ "",
264
+ "[variable-2 * bar]",
265
+ "",
266
+ " [variable-2 hello]");
267
+
268
+ // 4 spaces, extra blank lines (should still be list, per Dingus)
269
+ MT("listMultiParagraphExtra",
270
+ "[variable-2 * foo]",
271
+ "",
272
+ "[variable-2 * bar]",
273
+ "",
274
+ "",
275
+ " [variable-2 hello]");
276
+
277
+ // 4 spaces, plus 1 space (should still be list, per Dingus)
278
+ MT("listMultiParagraphExtraSpace",
279
+ "[variable-2 * foo]",
280
+ "",
281
+ "[variable-2 * bar]",
282
+ "",
283
+ " [variable-2 hello]",
284
+ "",
285
+ " [variable-2 world]");
286
+
287
+ // 1 tab
288
+ MT("listTab",
289
+ "[variable-2 * foo]",
290
+ "",
291
+ "[variable-2 * bar]",
292
+ "",
293
+ "\t[variable-2 hello]");
294
+
295
+ // No indent
296
+ MT("listNoIndent",
297
+ "[variable-2 * foo]",
298
+ "",
299
+ "[variable-2 * bar]",
300
+ "",
301
+ "hello");
302
+
303
+ // Blockquote
304
+ MT("blockquote",
305
+ "[variable-2 * foo]",
306
+ "",
307
+ "[variable-2 * bar]",
308
+ "",
309
+ " [variable-2&atom > hello]");
310
+
311
+ // Code block
312
+ MT("blockquoteCode",
313
+ "[variable-2 * foo]",
314
+ "",
315
+ "[variable-2 * bar]",
316
+ "",
317
+ " [comment > hello]",
318
+ "",
319
+ " [variable-2 world]");
320
+
321
+ // Code block followed by text
322
+ MT("blockquoteCodeText",
323
+ "[variable-2 * foo]",
324
+ "",
325
+ " [variable-2 bar]",
326
+ "",
327
+ " [comment hello]",
328
+ "",
329
+ " [variable-2 world]");
330
+
331
+ // Nested list
332
+
333
+ MT("listAsteriskNested",
334
+ "[variable-2 * foo]",
335
+ "",
336
+ " [variable-3 * bar]");
337
+
338
+ MT("listPlusNested",
339
+ "[variable-2 + foo]",
340
+ "",
341
+ " [variable-3 + bar]");
342
+
343
+ MT("listDashNested",
344
+ "[variable-2 - foo]",
345
+ "",
346
+ " [variable-3 - bar]");
347
+
348
+ MT("listNumberNested",
349
+ "[variable-2 1. foo]",
350
+ "",
351
+ " [variable-3 2. bar]");
352
+
353
+ MT("listMixed",
354
+ "[variable-2 * foo]",
355
+ "",
356
+ " [variable-3 + bar]",
357
+ "",
358
+ " [keyword - hello]",
359
+ "",
360
+ " [variable-2 1. world]");
361
+
362
+ MT("listBlockquote",
363
+ "[variable-2 * foo]",
364
+ "",
365
+ " [variable-3 + bar]",
366
+ "",
367
+ " [atom&variable-3 > hello]");
368
+
369
+ MT("listCode",
370
+ "[variable-2 * foo]",
371
+ "",
372
+ " [variable-3 + bar]",
373
+ "",
374
+ " [comment hello]");
375
+
376
+ // Code with internal indentation
377
+ MT("listCodeIndentation",
378
+ "[variable-2 * foo]",
379
+ "",
380
+ " [comment bar]",
381
+ " [comment hello]",
382
+ " [comment world]",
383
+ " [comment foo]",
384
+ " [variable-2 bar]");
385
+
386
+ // List nesting edge cases
387
+ MT("listNested",
388
+ "[variable-2 * foo]",
389
+ "",
390
+ " [variable-3 * bar]",
391
+ "",
392
+ " [variable-2 hello]"
393
+ );
394
+ MT("listNested",
395
+ "[variable-2 * foo]",
396
+ "",
397
+ " [variable-3 * bar]",
398
+ "",
399
+ " [variable-3 * foo]"
400
+ );
401
+
402
+ // Code followed by text
403
+ MT("listCodeText",
404
+ "[variable-2 * foo]",
405
+ "",
406
+ " [comment bar]",
407
+ "",
408
+ "hello");
409
+
410
+ // Following tests directly from official Markdown documentation
411
+ // http://daringfireball.net/projects/markdown/syntax#hr
412
+
413
+ MT("hrSpace",
414
+ "[hr * * *]");
415
+
416
+ MT("hr",
417
+ "[hr ***]");
418
+
419
+ MT("hrLong",
420
+ "[hr *****]");
421
+
422
+ MT("hrSpaceDash",
423
+ "[hr - - -]");
424
+
425
+ MT("hrDashLong",
426
+ "[hr ---------------------------------------]");
427
+
428
+ // Inline link with title
429
+ MT("linkTitle",
430
+ "[link [[foo]]][string (http://example.com/ \"bar\")] hello");
431
+
432
+ // Inline link without title
433
+ MT("linkNoTitle",
434
+ "[link [[foo]]][string (http://example.com/)] bar");
435
+
436
+ // Inline link with image
437
+ MT("linkImage",
438
+ "[link [[][tag ![[foo]]][string (http://example.com/)][link ]]][string (http://example.com/)] bar");
439
+
440
+ // Inline link with Em
441
+ MT("linkEm",
442
+ "[link [[][link&em *foo*][link ]]][string (http://example.com/)] bar");
443
+
444
+ // Inline link with Strong
445
+ MT("linkStrong",
446
+ "[link [[][link&strong **foo**][link ]]][string (http://example.com/)] bar");
447
+
448
+ // Inline link with EmStrong
449
+ MT("linkEmStrong",
450
+ "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string (http://example.com/)] bar");
451
+
452
+ // Image with title
453
+ MT("imageTitle",
454
+ "[tag ![[foo]]][string (http://example.com/ \"bar\")] hello");
455
+
456
+ // Image without title
457
+ MT("imageNoTitle",
458
+ "[tag ![[foo]]][string (http://example.com/)] bar");
459
+
460
+ // Image with asterisks
461
+ MT("imageAsterisks",
462
+ "[tag ![[*foo*]]][string (http://example.com/)] bar");
463
+
464
+ // Not a link. Should be normal text due to square brackets being used
465
+ // regularly in text, especially in quoted material, and no space is allowed
466
+ // between square brackets and parentheses (per Dingus).
467
+ MT("notALink",
468
+ "[[foo]] (bar)");
469
+
470
+ // Reference-style links
471
+ MT("linkReference",
472
+ "[link [[foo]]][string [[bar]]] hello");
473
+
474
+ // Reference-style links with Em
475
+ MT("linkReferenceEm",
476
+ "[link [[][link&em *foo*][link ]]][string [[bar]]] hello");
477
+
478
+ // Reference-style links with Strong
479
+ MT("linkReferenceStrong",
480
+ "[link [[][link&strong **foo**][link ]]][string [[bar]]] hello");
481
+
482
+ // Reference-style links with EmStrong
483
+ MT("linkReferenceEmStrong",
484
+ "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string [[bar]]] hello");
485
+
486
+ // Reference-style links with optional space separator (per docuentation)
487
+ // "You can optionally use a space to separate the sets of brackets"
488
+ MT("linkReferenceSpace",
489
+ "[link [[foo]]] [string [[bar]]] hello");
490
+
491
+ // Should only allow a single space ("...use *a* space...")
492
+ MT("linkReferenceDoubleSpace",
493
+ "[[foo]] [[bar]] hello");
494
+
495
+ // Reference-style links with implicit link name
496
+ MT("linkImplicit",
497
+ "[link [[foo]]][string [[]]] hello");
498
+
499
+ // @todo It would be nice if, at some point, the document was actually
500
+ // checked to see if the referenced link exists
501
+
502
+ // Link label, for reference-style links (taken from documentation)
503
+
504
+ MT("labelNoTitle",
505
+ "[link [[foo]]:] [string http://example.com/]");
506
+
507
+ MT("labelIndented",
508
+ " [link [[foo]]:] [string http://example.com/]");
509
+
510
+ MT("labelSpaceTitle",
511
+ "[link [[foo bar]]:] [string http://example.com/ \"hello\"]");
512
+
513
+ MT("labelDoubleTitle",
514
+ "[link [[foo bar]]:] [string http://example.com/ \"hello\"] \"world\"");
515
+
516
+ MT("labelTitleDoubleQuotes",
517
+ "[link [[foo]]:] [string http://example.com/ \"bar\"]");
518
+
519
+ MT("labelTitleSingleQuotes",
520
+ "[link [[foo]]:] [string http://example.com/ 'bar']");
521
+
522
+ MT("labelTitleParenthese",
523
+ "[link [[foo]]:] [string http://example.com/ (bar)]");
524
+
525
+ MT("labelTitleInvalid",
526
+ "[link [[foo]]:] [string http://example.com/] bar");
527
+
528
+ MT("labelLinkAngleBrackets",
529
+ "[link [[foo]]:] [string <http://example.com/> \"bar\"]");
530
+
531
+ MT("labelTitleNextDoubleQuotes",
532
+ "[link [[foo]]:] [string http://example.com/]",
533
+ "[string \"bar\"] hello");
534
+
535
+ MT("labelTitleNextSingleQuotes",
536
+ "[link [[foo]]:] [string http://example.com/]",
537
+ "[string 'bar'] hello");
538
+
539
+ MT("labelTitleNextParenthese",
540
+ "[link [[foo]]:] [string http://example.com/]",
541
+ "[string (bar)] hello");
542
+
543
+ MT("labelTitleNextMixed",
544
+ "[link [[foo]]:] [string http://example.com/]",
545
+ "(bar\" hello");
546
+
547
+ MT("linkWeb",
548
+ "[link <http://example.com/>] foo");
549
+
550
+ MT("linkWebDouble",
551
+ "[link <http://example.com/>] foo [link <http://example.com/>]");
552
+
553
+ MT("linkEmail",
554
+ "[link <user@example.com>] foo");
555
+
556
+ MT("linkEmailDouble",
557
+ "[link <user@example.com>] foo [link <user@example.com>]");
558
+
559
+ MT("emAsterisk",
560
+ "[em *foo*] bar");
561
+
562
+ MT("emUnderscore",
563
+ "[em _foo_] bar");
564
+
565
+ MT("emInWordAsterisk",
566
+ "foo[em *bar*]hello");
567
+
568
+ MT("emInWordUnderscore",
569
+ "foo[em _bar_]hello");
570
+
571
+ // Per documentation: "...surround an * or _ with spaces, it’ll be
572
+ // treated as a literal asterisk or underscore."
573
+
574
+ MT("emEscapedBySpaceIn",
575
+ "foo [em _bar _ hello_] world");
576
+
577
+ MT("emEscapedBySpaceOut",
578
+ "foo _ bar[em _hello_]world");
579
+
580
+ // Unclosed emphasis characters
581
+ // Instead of simply marking as EM / STRONG, it would be nice to have an
582
+ // incomplete flag for EM and STRONG, that is styled slightly different.
583
+ MT("emIncompleteAsterisk",
584
+ "foo [em *bar]");
585
+
586
+ MT("emIncompleteUnderscore",
587
+ "foo [em _bar]");
588
+
589
+ MT("strongAsterisk",
590
+ "[strong **foo**] bar");
591
+
592
+ MT("strongUnderscore",
593
+ "[strong __foo__] bar");
594
+
595
+ MT("emStrongAsterisk",
596
+ "[em *foo][em&strong **bar*][strong hello**] world");
597
+
598
+ MT("emStrongUnderscore",
599
+ "[em _foo][em&strong __bar_][strong hello__] world");
600
+
601
+ // "...same character must be used to open and close an emphasis span.""
602
+ MT("emStrongMixed",
603
+ "[em _foo][em&strong **bar*hello__ world]");
604
+
605
+ MT("emStrongMixed",
606
+ "[em *foo][em&strong __bar_hello** world]");
607
+
608
+ // These characters should be escaped:
609
+ // \ backslash
610
+ // ` backtick
611
+ // * asterisk
612
+ // _ underscore
613
+ // {} curly braces
614
+ // [] square brackets
615
+ // () parentheses
616
+ // # hash mark
617
+ // + plus sign
618
+ // - minus sign (hyphen)
619
+ // . dot
620
+ // ! exclamation mark
621
+
622
+ MT("escapeBacktick",
623
+ "foo \\`bar\\`");
624
+
625
+ MT("doubleEscapeBacktick",
626
+ "foo \\\\[comment `bar\\\\`]");
627
+
628
+ MT("escapeAsterisk",
629
+ "foo \\*bar\\*");
630
+
631
+ MT("doubleEscapeAsterisk",
632
+ "foo \\\\[em *bar\\\\*]");
633
+
634
+ MT("escapeUnderscore",
635
+ "foo \\_bar\\_");
636
+
637
+ MT("doubleEscapeUnderscore",
638
+ "foo \\\\[em _bar\\\\_]");
639
+
640
+ MT("escapeHash",
641
+ "\\# foo");
642
+
643
+ MT("doubleEscapeHash",
644
+ "\\\\# foo");
645
+
646
+
647
+ // Tests to make sure GFM-specific things aren't getting through
648
+
649
+ MT("taskList",
650
+ "[variable-2 * [ ]] bar]");
651
+
652
+ MT("fencedCodeBlocks",
653
+ "[comment ```]",
654
+ "foo",
655
+ "[comment ```]");
656
+ })();