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,139 @@
1
+ var tests = [], debug = null, debugUsed = new Array(), allNames = [];
2
+
3
+ function Failure(why) {this.message = why;}
4
+ Failure.prototype.toString = function() { return this.message; };
5
+
6
+ function indexOf(collection, elt) {
7
+ if (collection.indexOf) return collection.indexOf(elt);
8
+ for (var i = 0, e = collection.length; i < e; ++i)
9
+ if (collection[i] == elt) return i;
10
+ return -1;
11
+ }
12
+
13
+ function test(name, run, expectedFail) {
14
+ // Force unique names
15
+ var originalName = name;
16
+ var i = 2; // Second function would be NAME_2
17
+ while (indexOf(allNames, name) !== -1){
18
+ name = originalName + "_" + i;
19
+ i++;
20
+ }
21
+ allNames.push(name);
22
+ // Add test
23
+ tests.push({name: name, func: run, expectedFail: expectedFail});
24
+ return name;
25
+ }
26
+ var namespace = "";
27
+ function testCM(name, run, opts, expectedFail) {
28
+ return test(namespace + name, function() {
29
+ var place = document.getElementById("testground"), cm = window.cm = CodeMirror(place, opts);
30
+ var successful = false;
31
+ try {
32
+ run(cm);
33
+ successful = true;
34
+ } finally {
35
+ if ((debug && !successful) || verbose) {
36
+ place.style.visibility = "visible";
37
+ } else {
38
+ place.removeChild(cm.getWrapperElement());
39
+ }
40
+ }
41
+ }, expectedFail);
42
+ }
43
+
44
+ function runTests(callback) {
45
+ if (debug) {
46
+ if (indexOf(debug, "verbose") === 0) {
47
+ verbose = true;
48
+ debug.splice(0, 1);
49
+ }
50
+ if (debug.length < 1) {
51
+ debug = null;
52
+ }
53
+ }
54
+ var totalTime = 0;
55
+ function step(i) {
56
+ if (i === tests.length){
57
+ running = false;
58
+ return callback("done");
59
+ }
60
+ var test = tests[i], expFail = test.expectedFail, startTime = +new Date;
61
+ if (debug !== null) {
62
+ var debugIndex = indexOf(debug, test.name);
63
+ if (debugIndex !== -1) {
64
+ // Remove from array for reporting incorrect tests later
65
+ debug.splice(debugIndex, 1);
66
+ } else {
67
+ var wildcardName = test.name.split("_")[0] + "_*";
68
+ debugIndex = indexOf(debug, wildcardName);
69
+ if (debugIndex !== -1) {
70
+ // Remove from array for reporting incorrect tests later
71
+ debug.splice(debugIndex, 1);
72
+ debugUsed.push(wildcardName);
73
+ } else {
74
+ debugIndex = indexOf(debugUsed, wildcardName);
75
+ if (debugIndex == -1) return step(i + 1);
76
+ }
77
+ }
78
+ }
79
+ var threw = false;
80
+ try {
81
+ var message = test.func();
82
+ } catch(e) {
83
+ threw = true;
84
+ if (expFail) callback("expected", test.name);
85
+ else if (e instanceof Failure) callback("fail", test.name, e.message);
86
+ else {
87
+ var pos = /(?:\bat |@).*?([^\/:]+):(\d+)/.exec(e.stack);
88
+ callback("error", test.name, e.toString() + (pos ? " (" + pos[1] + ":" + pos[2] + ")" : ""));
89
+ }
90
+ }
91
+ if (!threw) {
92
+ if (expFail) callback("fail", test.name, message || "expected failure, but succeeded");
93
+ else callback("ok", test.name, message);
94
+ }
95
+ if (!quit) { // Run next test
96
+ var delay = 0;
97
+ totalTime += (+new Date) - startTime;
98
+ if (totalTime > 500){
99
+ totalTime = 0;
100
+ delay = 50;
101
+ }
102
+ setTimeout(function(){step(i + 1);}, delay);
103
+ } else { // Quit tests
104
+ running = false;
105
+ return null;
106
+ }
107
+ }
108
+ step(0);
109
+ }
110
+
111
+ function label(str, msg) {
112
+ if (msg) return str + " (" + msg + ")";
113
+ return str;
114
+ }
115
+ function eq(a, b, msg) {
116
+ if (a != b) throw new Failure(label(a + " != " + b, msg));
117
+ }
118
+ function eqPos(a, b, msg) {
119
+ function str(p) { return "{line:" + p.line + ",ch:" + p.ch + "}"; }
120
+ if (a == b) return;
121
+ if (a == null) throw new Failure(label("comparing null to " + str(b), msg));
122
+ if (b == null) throw new Failure(label("comparing " + str(a) + " to null", msg));
123
+ if (a.line != b.line || a.ch != b.ch) throw new Failure(label(str(a) + " != " + str(b), msg));
124
+ }
125
+ function is(a, msg) {
126
+ if (!a) throw new Failure(label("assertion failed", msg));
127
+ }
128
+
129
+ function countTests() {
130
+ if (!debug) return tests.length;
131
+ var sum = 0;
132
+ for (var i = 0; i < tests.length; ++i) {
133
+ var name = tests[i].name;
134
+ if (indexOf(debug, name) != -1 ||
135
+ indexOf(debug, name.split("_")[0] + "_*") != -1)
136
+ ++sum;
137
+ }
138
+ return sum;
139
+ }
@@ -0,0 +1,135 @@
1
+ (function() {
2
+ "use strict";
3
+
4
+ var Pos = CodeMirror.Pos;
5
+ namespace = "emacs_";
6
+
7
+ var eventCache = {};
8
+ function fakeEvent(keyName) {
9
+ var event = eventCache[key];
10
+ if (event) return event;
11
+
12
+ var ctrl, shift, alt;
13
+ var key = keyName.replace(/\w+-/g, function(type) {
14
+ if (type == "Ctrl-") ctrl = true;
15
+ else if (type == "Alt-") alt = true;
16
+ else if (type == "Shift-") shift = true;
17
+ return "";
18
+ });
19
+ var code;
20
+ for (var c in CodeMirror.keyNames)
21
+ if (CodeMirror.keyNames[c] == key) { code = c; break; }
22
+ if (c == null) throw new Error("Unknown key: " + key);
23
+
24
+ return eventCache[keyName] = {
25
+ type: "keydown", keyCode: code, ctrlKey: ctrl, shiftKey: shift, altKey: alt,
26
+ preventDefault: function(){}, stopPropagation: function(){}
27
+ };
28
+ }
29
+
30
+ function sim(name, start /*, actions... */) {
31
+ var keys = Array.prototype.slice.call(arguments, 2);
32
+ testCM(name, function(cm) {
33
+ for (var i = 0; i < keys.length; ++i) {
34
+ var cur = keys[i];
35
+ if (cur instanceof Pos) cm.setCursor(cur);
36
+ else if (cur.call) cur(cm);
37
+ else cm.triggerOnKeyDown(fakeEvent(cur));
38
+ }
39
+ }, {keyMap: "emacs", value: start, mode: "javascript"});
40
+ }
41
+
42
+ function at(line, ch) { return function(cm) { eqPos(cm.getCursor(), Pos(line, ch)); }; }
43
+ function txt(str) { return function(cm) { eq(cm.getValue(), str); }; }
44
+
45
+ sim("motionHSimple", "abc", "Ctrl-F", "Ctrl-F", "Ctrl-B", at(0, 1));
46
+ sim("motionHMulti", "abcde",
47
+ "Ctrl-4", "Ctrl-F", at(0, 4), "Ctrl--", "Ctrl-2", "Ctrl-F", at(0, 2),
48
+ "Ctrl-5", "Ctrl-B", at(0, 0));
49
+
50
+ sim("motionHWord", "abc. def ghi",
51
+ "Alt-F", at(0, 3), "Alt-F", at(0, 8),
52
+ "Ctrl-B", "Alt-B", at(0, 5), "Alt-B", at(0, 0));
53
+ sim("motionHWordMulti", "abc. def ghi ",
54
+ "Ctrl-3", "Alt-F", at(0, 12), "Ctrl-2", "Alt-B", at(0, 5),
55
+ "Ctrl--", "Alt-B", at(0, 8));
56
+
57
+ sim("motionVSimple", "a\nb\nc\n", "Ctrl-N", "Ctrl-N", "Ctrl-P", at(1, 0));
58
+ sim("motionVMulti", "a\nb\nc\nd\ne\n",
59
+ "Ctrl-2", "Ctrl-N", at(2, 0), "Ctrl-F", "Ctrl--", "Ctrl-N", at(1, 1),
60
+ "Ctrl--", "Ctrl-3", "Ctrl-P", at(4, 1));
61
+
62
+ sim("killYank", "abc\ndef\nghi",
63
+ "Ctrl-F", "Ctrl-Space", "Ctrl-N", "Ctrl-N", "Ctrl-W", "Ctrl-E", "Ctrl-Y",
64
+ txt("ahibc\ndef\ng"));
65
+ sim("killRing", "abcdef",
66
+ "Ctrl-Space", "Ctrl-F", "Ctrl-W", "Ctrl-Space", "Ctrl-F", "Ctrl-W",
67
+ "Ctrl-Y", "Alt-Y",
68
+ txt("acdef"));
69
+ sim("copyYank", "abcd",
70
+ "Ctrl-Space", "Ctrl-E", "Alt-W", "Ctrl-Y",
71
+ txt("abcdabcd"));
72
+
73
+ sim("killLineSimple", "foo\nbar", "Ctrl-F", "Ctrl-K", txt("f\nbar"));
74
+ sim("killLineEmptyLine", "foo\n \nbar", "Ctrl-N", "Ctrl-K", txt("foo\nbar"));
75
+ sim("killLineMulti", "foo\nbar\nbaz",
76
+ "Ctrl-F", "Ctrl-F", "Ctrl-K", "Ctrl-K", "Ctrl-K", "Ctrl-A", "Ctrl-Y",
77
+ txt("o\nbarfo\nbaz"));
78
+
79
+ sim("moveByParagraph", "abc\ndef\n\n\nhij\nklm\n\n",
80
+ "Ctrl-F", "Ctrl-Down", at(2, 0), "Ctrl-Down", at(6, 0),
81
+ "Ctrl-N", "Ctrl-Up", at(3, 0), "Ctrl-Up", at(0, 0),
82
+ Pos(1, 2), "Ctrl-Down", at(2, 0), Pos(4, 2), "Ctrl-Up", at(3, 0));
83
+ sim("moveByParagraphMulti", "abc\n\ndef\n\nhij\n\nklm",
84
+ "Ctrl-U", "2", "Ctrl-Down", at(3, 0),
85
+ "Shift-Alt-.", "Ctrl-3", "Ctrl-Up", at(1, 0));
86
+
87
+ sim("moveBySentence", "sentence one! sentence\ntwo\n\nparagraph two",
88
+ "Alt-E", at(0, 13), "Alt-E", at(1, 3), "Ctrl-F", "Alt-A", at(0, 13));
89
+
90
+ sim("moveByExpr", "function foo(a, b) {}",
91
+ "Ctrl-Alt-F", at(0, 8), "Ctrl-Alt-F", at(0, 12), "Ctrl-Alt-F", at(0, 18),
92
+ "Ctrl-Alt-B", at(0, 12), "Ctrl-Alt-B", at(0, 9));
93
+ sim("moveByExprMulti", "foo bar baz bug",
94
+ "Ctrl-2", "Ctrl-Alt-F", at(0, 7),
95
+ "Ctrl--", "Ctrl-Alt-F", at(0, 4),
96
+ "Ctrl--", "Ctrl-2", "Ctrl-Alt-B", at(0, 11));
97
+ sim("delExpr", "var x = [\n a,\n b\n c\n];",
98
+ Pos(0, 8), "Ctrl-Alt-K", txt("var x = ;"), "Ctrl-/",
99
+ Pos(4, 1), "Ctrl-Alt-Backspace", txt("var x = ;"));
100
+ sim("delExprMulti", "foo bar baz",
101
+ "Ctrl-2", "Ctrl-Alt-K", txt(" baz"),
102
+ "Ctrl-/", "Ctrl-E", "Ctrl-2", "Ctrl-Alt-Backspace", txt("foo "));
103
+
104
+ sim("justOneSpace", "hi bye ",
105
+ Pos(0, 4), "Alt-Space", txt("hi bye "),
106
+ Pos(0, 4), "Alt-Space", txt("hi b ye "),
107
+ "Ctrl-A", "Alt-Space", "Ctrl-E", "Alt-Space", txt(" hi b ye "));
108
+
109
+ sim("openLine", "foo bar", "Alt-F", "Ctrl-O", txt("foo\n bar"))
110
+
111
+ sim("transposeChar", "abcd\n\ne",
112
+ "Ctrl-F", "Ctrl-T", "Ctrl-T", txt("bcad\n\ne"), at(0, 3),
113
+ "Ctrl-F", "Ctrl-T", "Ctrl-T", "Ctrl-T", txt("bcda\n\ne"), at(0, 4),
114
+ "Ctrl-F", "Ctrl-T", txt("bcd\na\ne"), at(1, 1));
115
+
116
+ sim("manipWordCase", "foo BAR bAZ",
117
+ "Alt-C", "Alt-L", "Alt-U", txt("Foo bar BAZ"),
118
+ "Ctrl-A", "Alt-U", "Alt-L", "Alt-C", txt("FOO bar Baz"));
119
+ sim("manipWordCaseMulti", "foo Bar bAz",
120
+ "Ctrl-2", "Alt-U", txt("FOO BAR bAz"),
121
+ "Ctrl-A", "Ctrl-3", "Alt-C", txt("Foo Bar Baz"));
122
+
123
+ sim("upExpr", "foo {\n bar[];\n baz(blah);\n}",
124
+ Pos(2, 7), "Ctrl-Alt-U", at(2, 5), "Ctrl-Alt-U", at(0, 4));
125
+ sim("transposeExpr", "do foo[bar] dah",
126
+ Pos(0, 6), "Ctrl-Alt-T", txt("do [bar]foo dah"));
127
+
128
+ testCM("save", function(cm) {
129
+ var saved = false;
130
+ CodeMirror.commands.save = function(cm) { saved = cm.getValue(); };
131
+ cm.triggerOnKeyDown(fakeEvent("Ctrl-X"));
132
+ cm.triggerOnKeyDown(fakeEvent("Ctrl-S"));
133
+ is(saved, "hi");
134
+ }, {value: "hi", keyMap: "emacs"});
135
+ })();
@@ -0,0 +1,209 @@
1
+ <!doctype html>
2
+
3
+ <title>CodeMirror: Test Suite</title>
4
+ <meta charset="utf-8"/>
5
+ <link rel=stylesheet href="../doc/docs.css">
6
+
7
+ <link rel="stylesheet" href="../lib/codemirror.css">
8
+ <link rel="stylesheet" href="mode_test.css">
9
+ <script src="../lib/codemirror.js"></script>
10
+ <script src="../addon/mode/overlay.js"></script>
11
+ <script src="../addon/mode/multiplex.js"></script>
12
+ <script src="../addon/search/searchcursor.js"></script>
13
+ <script src="../addon/dialog/dialog.js"></script>
14
+ <script src="../addon/edit/matchbrackets.js"></script>
15
+ <script src="../addon/comment/comment.js"></script>
16
+ <script src="../mode/javascript/javascript.js"></script>
17
+ <script src="../mode/xml/xml.js"></script>
18
+ <script src="../keymap/vim.js"></script>
19
+ <script src="../keymap/emacs.js"></script>
20
+
21
+ <style type="text/css">
22
+ .ok {color: #090;}
23
+ .fail {color: #e00;}
24
+ .error {color: #c90;}
25
+ .done {font-weight: bold;}
26
+ #progress {
27
+ background: #45d;
28
+ color: white;
29
+ text-shadow: 0 0 1px #45d, 0 0 2px #45d, 0 0 3px #45d;
30
+ font-weight: bold;
31
+ white-space: pre;
32
+ }
33
+ #testground {
34
+ visibility: hidden;
35
+ }
36
+ #testground.offscreen {
37
+ visibility: visible;
38
+ position: absolute;
39
+ left: -10000px;
40
+ top: -10000px;
41
+ }
42
+ .CodeMirror { border: 1px solid black; }
43
+ </style>
44
+
45
+ <div id=nav>
46
+ <a href="http://codemirror.net"><img id=logo src="../doc/logo.png"></a>
47
+
48
+ <ul>
49
+ <li><a href="../index.html">Home</a>
50
+ <li><a href="../doc/manual.html">Manual</a>
51
+ <li><a href="https://github.com/marijnh/codemirror">Code</a>
52
+ </ul>
53
+ <ul>
54
+ <li><a class=active href="#">Test suite</a>
55
+ </ul>
56
+ </div>
57
+
58
+ <article>
59
+ <h2>Test Suite</h2>
60
+
61
+ <p>A limited set of programmatic sanity tests for CodeMirror.</p>
62
+
63
+ <div style="border: 1px solid black; padding: 1px; max-width: 700px;">
64
+ <div style="width: 0px;" id=progress><div style="padding: 3px;">Ran <span id="progress_ran">0</span><span id="progress_total"> of 0</span> tests</div></div>
65
+ </div>
66
+ <p id=status>Please enable JavaScript...</p>
67
+ <div id=output></div>
68
+
69
+ <div id=testground></div>
70
+
71
+ <script src="driver.js"></script>
72
+ <script src="test.js"></script>
73
+ <script src="doc_test.js"></script>
74
+ <script src="comment_test.js"></script>
75
+ <script src="mode_test.js"></script>
76
+ <script src="../mode/javascript/test.js"></script>
77
+ <script src="../mode/css/css.js"></script>
78
+ <script src="../mode/css/test.js"></script>
79
+ <script src="../mode/css/scss_test.js"></script>
80
+ <script src="../mode/xml/xml.js"></script>
81
+ <script src="../mode/htmlmixed/htmlmixed.js"></script>
82
+ <script src="../mode/ruby/ruby.js"></script>
83
+ <script src="../mode/haml/haml.js"></script>
84
+ <script src="../mode/haml/test.js"></script>
85
+ <script src="../mode/markdown/markdown.js"></script>
86
+ <script src="../mode/markdown/test.js"></script>
87
+ <script src="../mode/gfm/gfm.js"></script>
88
+ <script src="../mode/gfm/test.js"></script>
89
+ <script src="../mode/stex/stex.js"></script>
90
+ <script src="../mode/stex/test.js"></script>
91
+ <script src="../mode/xquery/xquery.js"></script>
92
+ <script src="../mode/xquery/test.js"></script>
93
+ <script src="../addon/mode/multiplex_test.js"></script>
94
+ <script src="vim_test.js"></script>
95
+ <script src="emacs_test.js"></script>
96
+ <script>
97
+ window.onload = runHarness;
98
+ CodeMirror.on(window, 'hashchange', runHarness);
99
+
100
+ function esc(str) {
101
+ return str.replace(/[<&]/, function(ch) { return ch == "<" ? "&lt;" : "&amp;"; });
102
+ }
103
+
104
+ var output = document.getElementById("output"),
105
+ progress = document.getElementById("progress"),
106
+ progressRan = document.getElementById("progress_ran").childNodes[0],
107
+ progressTotal = document.getElementById("progress_total").childNodes[0];
108
+ var count = 0,
109
+ failed = 0,
110
+ bad = "",
111
+ running = false, // Flag that states tests are running
112
+ quit = false, // Flag to quit tests ASAP
113
+ verbose = false; // Adds message for *every* test to output
114
+
115
+ function runHarness(){
116
+ if (running) {
117
+ quit = true;
118
+ setStatus("Restarting tests...", '', true);
119
+ setTimeout(function(){runHarness();}, 500);
120
+ return;
121
+ }
122
+ if (window.location.hash.substr(1)){
123
+ debug = window.location.hash.substr(1).split(",");
124
+ } else {
125
+ debug = null;
126
+ }
127
+ quit = false;
128
+ running = true;
129
+ setStatus("Loading tests...");
130
+ count = 0;
131
+ failed = 0;
132
+ bad = "";
133
+ verbose = false;
134
+ debugUsed = Array();
135
+ totalTests = countTests();
136
+ progressTotal.nodeValue = " of " + totalTests;
137
+ progressRan.nodeValue = count;
138
+ output.innerHTML = '';
139
+ document.getElementById("testground").innerHTML = "<form>" +
140
+ "<textarea id=\"code\" name=\"code\"></textarea>" +
141
+ "<input type=submit value=ok name=submit>" +
142
+ "</form>";
143
+ runTests(displayTest);
144
+ }
145
+
146
+ function setStatus(message, className, force){
147
+ if (quit && !force) return;
148
+ if (!message) throw("must provide message");
149
+ var status = document.getElementById("status").childNodes[0];
150
+ status.nodeValue = message;
151
+ status.parentNode.className = className;
152
+ }
153
+ function addOutput(name, className, code){
154
+ var newOutput = document.createElement("dl");
155
+ var newTitle = document.createElement("dt");
156
+ newTitle.className = className;
157
+ newTitle.appendChild(document.createTextNode(name));
158
+ newOutput.appendChild(newTitle);
159
+ var newMessage = document.createElement("dd");
160
+ newMessage.innerHTML = code;
161
+ newOutput.appendChild(newTitle);
162
+ newOutput.appendChild(newMessage);
163
+ output.appendChild(newOutput);
164
+ }
165
+ function displayTest(type, name, customMessage) {
166
+ var message = "???";
167
+ if (type != "done") ++count;
168
+ progress.style.width = (count * (progress.parentNode.clientWidth - 2) / totalTests) + "px";
169
+ progressRan.nodeValue = count;
170
+ if (type == "ok") {
171
+ message = "Test '" + name + "' succeeded";
172
+ if (!verbose) customMessage = false;
173
+ } else if (type == "expected") {
174
+ message = "Test '" + name + "' failed as expected";
175
+ if (!verbose) customMessage = false;
176
+ } else if (type == "error" || type == "fail") {
177
+ ++failed;
178
+ message = "Test '" + name + "' failed";
179
+ } else if (type == "done") {
180
+ if (failed) {
181
+ type += " fail";
182
+ message = failed + " failure" + (failed > 1 ? "s" : "");
183
+ } else if (count < totalTests) {
184
+ failed = totalTests - count;
185
+ type += " fail";
186
+ message = failed + " failure" + (failed > 1 ? "s" : "");
187
+ } else {
188
+ type += " ok";
189
+ message = "All passed";
190
+ }
191
+ if (debug && debug.length) {
192
+ var bogusTests = totalTests - count;
193
+ message += " — " + bogusTests + " nonexistent test" +
194
+ (bogusTests > 1 ? "s" : "") + " requested by location.hash: " +
195
+ "`" + debug.join("`, `") + "`";
196
+ } else {
197
+ progressTotal.nodeValue = '';
198
+ }
199
+ customMessage = true; // Hack to avoid adding to output
200
+ }
201
+ if (verbose && !customMessage) customMessage = message;
202
+ setStatus(message, type);
203
+ if (customMessage && customMessage.length > 0) {
204
+ addOutput(name, type, customMessage);
205
+ }
206
+ }
207
+ </script>
208
+
209
+ </article>