scrivito_codemirror_editor 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (246) hide show
  1. checksums.yaml +5 -5
  2. data/LICENSE +21 -165
  3. data/README.md +2 -2
  4. data/app/assets/javascripts/scrivito_codemirror_editor/codemirror_editor.js +29 -0
  5. data/lib/scrivito_codemirror_editor.rb +0 -2
  6. data/vendor/assets/javascripts/codemirror/addons/comment/comment.js +203 -0
  7. data/vendor/assets/javascripts/codemirror/addons/comment/continuecomment.js +85 -0
  8. data/vendor/assets/javascripts/codemirror/addons/dialog/dialog.js +157 -0
  9. data/vendor/assets/javascripts/codemirror/addons/display/autorefresh.js +47 -0
  10. data/vendor/assets/javascripts/codemirror/addons/display/fullscreen.js +41 -0
  11. data/vendor/assets/javascripts/codemirror/addons/display/panel.js +112 -0
  12. data/vendor/assets/javascripts/codemirror/addons/display/placeholder.js +62 -0
  13. data/vendor/assets/javascripts/codemirror/addons/display/rulers.js +51 -0
  14. data/vendor/assets/javascripts/codemirror/addons/edit/closebrackets.js +195 -0
  15. data/vendor/assets/javascripts/codemirror/addons/edit/closetag.js +169 -0
  16. data/vendor/assets/javascripts/codemirror/addons/edit/continuelist.js +51 -0
  17. data/vendor/assets/javascripts/codemirror/addons/edit/matchbrackets.js +120 -0
  18. data/vendor/assets/javascripts/codemirror/addons/edit/matchtags.js +66 -0
  19. data/vendor/assets/javascripts/codemirror/addons/edit/trailingspace.js +27 -0
  20. data/vendor/assets/javascripts/codemirror/addons/fold/brace-fold.js +105 -0
  21. data/vendor/assets/javascripts/codemirror/addons/fold/comment-fold.js +59 -0
  22. data/vendor/assets/javascripts/codemirror/addons/fold/foldcode.js +150 -0
  23. data/vendor/assets/javascripts/codemirror/addons/fold/foldgutter.js +146 -0
  24. data/vendor/assets/javascripts/codemirror/addons/fold/indent-fold.js +44 -0
  25. data/vendor/assets/javascripts/codemirror/addons/fold/markdown-fold.js +49 -0
  26. data/vendor/assets/javascripts/codemirror/addons/fold/xml-fold.js +182 -0
  27. data/vendor/assets/javascripts/codemirror/addons/hint/anyword-hint.js +41 -0
  28. data/vendor/assets/javascripts/codemirror/addons/hint/css-hint.js +60 -0
  29. data/vendor/assets/javascripts/codemirror/addons/hint/html-hint.js +348 -0
  30. data/vendor/assets/javascripts/codemirror/addons/hint/javascript-hint.js +146 -0
  31. data/vendor/assets/javascripts/codemirror/addons/hint/show-hint.js +437 -0
  32. data/vendor/assets/javascripts/codemirror/addons/hint/sql-hint.js +271 -0
  33. data/vendor/assets/javascripts/codemirror/addons/hint/xml-hint.js +110 -0
  34. data/vendor/assets/javascripts/codemirror/addons/lint/coffeescript-lint.js +41 -0
  35. data/vendor/assets/javascripts/codemirror/addons/lint/css-lint.js +35 -0
  36. data/vendor/assets/javascripts/codemirror/addons/lint/html-lint.js +46 -0
  37. data/vendor/assets/javascripts/codemirror/addons/lint/javascript-lint.js +136 -0
  38. data/vendor/assets/javascripts/codemirror/addons/lint/json-lint.js +31 -0
  39. data/vendor/assets/javascripts/codemirror/addons/lint/lint.js +239 -0
  40. data/vendor/assets/javascripts/codemirror/addons/lint/yaml-lint.js +28 -0
  41. data/vendor/assets/javascripts/codemirror/addons/merge/merge.js +773 -0
  42. data/vendor/assets/javascripts/codemirror/addons/mode/loadmode.js +64 -0
  43. data/vendor/assets/javascripts/codemirror/addons/mode/multiplex.js +123 -0
  44. data/vendor/assets/javascripts/codemirror/addons/mode/overlay.js +85 -0
  45. data/vendor/assets/javascripts/codemirror/addons/mode/simple.js +213 -0
  46. data/vendor/assets/javascripts/codemirror/addons/runmode/colorize.js +40 -0
  47. data/vendor/assets/javascripts/codemirror/addons/runmode/runmode-standalone.js +157 -0
  48. data/vendor/assets/javascripts/codemirror/addons/runmode/runmode.js +72 -0
  49. data/vendor/assets/javascripts/codemirror/addons/runmode/runmode.node.js +179 -0
  50. data/vendor/assets/javascripts/codemirror/addons/scroll/annotatescrollbar.js +118 -0
  51. data/vendor/assets/javascripts/codemirror/addons/scroll/scrollpastend.js +48 -0
  52. data/vendor/assets/javascripts/codemirror/addons/scroll/simplescrollbars.js +152 -0
  53. data/vendor/assets/javascripts/codemirror/addons/search/jump-to-line.js +49 -0
  54. data/vendor/assets/javascripts/codemirror/addons/search/match-highlighter.js +146 -0
  55. data/vendor/assets/javascripts/codemirror/addons/search/matchesonscrollbar.js +97 -0
  56. data/vendor/assets/javascripts/codemirror/addons/search/search.js +249 -0
  57. data/vendor/assets/javascripts/codemirror/addons/search/searchcursor.js +189 -0
  58. data/vendor/assets/javascripts/codemirror/addons/selection/active-line.js +74 -0
  59. data/vendor/assets/javascripts/codemirror/addons/selection/mark-selection.js +118 -0
  60. data/vendor/assets/javascripts/codemirror/addons/selection/selection-pointer.js +98 -0
  61. data/vendor/assets/javascripts/codemirror/addons/tern/tern.js +701 -0
  62. data/vendor/assets/javascripts/codemirror/addons/tern/worker.js +44 -0
  63. data/vendor/assets/javascripts/codemirror/addons/wrap/hardwrap.js +144 -0
  64. data/vendor/assets/javascripts/codemirror/keymaps/emacs.js +412 -0
  65. data/vendor/assets/javascripts/codemirror/keymaps/sublime.js +580 -0
  66. data/vendor/assets/javascripts/codemirror/keymaps/vim.js +5065 -0
  67. data/vendor/assets/javascripts/codemirror/modes/apl.js +174 -0
  68. data/vendor/assets/javascripts/codemirror/modes/asciiarmor.js +73 -0
  69. data/vendor/assets/javascripts/codemirror/modes/asn.1.js +204 -0
  70. data/vendor/assets/javascripts/codemirror/modes/asterisk.js +196 -0
  71. data/vendor/assets/javascripts/codemirror/modes/brainfuck.js +85 -0
  72. data/vendor/assets/javascripts/codemirror/modes/clike.js +786 -0
  73. data/vendor/assets/javascripts/codemirror/modes/clojure.js +306 -0
  74. data/vendor/assets/javascripts/codemirror/modes/cmake.js +97 -0
  75. data/vendor/assets/javascripts/codemirror/modes/cobol.js +255 -0
  76. data/vendor/assets/javascripts/codemirror/modes/coffeescript.js +355 -0
  77. data/vendor/assets/javascripts/codemirror/modes/commonlisp.js +123 -0
  78. data/vendor/assets/javascripts/codemirror/modes/crystal.js +391 -0
  79. data/vendor/assets/javascripts/codemirror/modes/css.js +825 -0
  80. data/vendor/assets/javascripts/codemirror/modes/cypher.js +146 -0
  81. data/vendor/assets/javascripts/codemirror/modes/d.js +218 -0
  82. data/vendor/assets/javascripts/codemirror/modes/dart.js +157 -0
  83. data/vendor/assets/javascripts/codemirror/modes/diff.js +47 -0
  84. data/vendor/assets/javascripts/codemirror/modes/django.js +356 -0
  85. data/vendor/assets/javascripts/codemirror/modes/dockerfile.js +79 -0
  86. data/vendor/assets/javascripts/codemirror/modes/dtd.js +142 -0
  87. data/vendor/assets/javascripts/codemirror/modes/dylan.js +344 -0
  88. data/vendor/assets/javascripts/codemirror/modes/ebnf.js +195 -0
  89. data/vendor/assets/javascripts/codemirror/modes/ecl.js +206 -0
  90. data/vendor/assets/javascripts/codemirror/modes/eiffel.js +160 -0
  91. data/vendor/assets/javascripts/codemirror/modes/elm.js +205 -0
  92. data/vendor/assets/javascripts/codemirror/modes/erlang.js +618 -0
  93. data/vendor/assets/javascripts/codemirror/modes/factor.js +83 -0
  94. data/vendor/assets/javascripts/codemirror/modes/fcl.js +173 -0
  95. data/vendor/assets/javascripts/codemirror/modes/forth.js +180 -0
  96. data/vendor/assets/javascripts/codemirror/modes/fortran.js +188 -0
  97. data/vendor/assets/javascripts/codemirror/modes/gas.js +345 -0
  98. data/vendor/assets/javascripts/codemirror/modes/gfm.js +130 -0
  99. data/vendor/assets/javascripts/codemirror/modes/gherkin.js +178 -0
  100. data/vendor/assets/javascripts/codemirror/modes/go.js +185 -0
  101. data/vendor/assets/javascripts/codemirror/modes/groovy.js +230 -0
  102. data/vendor/assets/javascripts/codemirror/modes/haml.js +161 -0
  103. data/vendor/assets/javascripts/codemirror/modes/handlebars.js +62 -0
  104. data/vendor/assets/javascripts/codemirror/modes/haskell-literate.js +43 -0
  105. data/vendor/assets/javascripts/codemirror/modes/haskell.js +267 -0
  106. data/vendor/assets/javascripts/codemirror/modes/haxe.js +515 -0
  107. data/vendor/assets/javascripts/codemirror/modes/htmlembedded.js +28 -0
  108. data/vendor/assets/javascripts/codemirror/modes/htmlmixed.js +152 -0
  109. data/vendor/assets/javascripts/codemirror/modes/http.js +113 -0
  110. data/vendor/assets/javascripts/codemirror/modes/idl.js +290 -0
  111. data/vendor/assets/javascripts/codemirror/modes/jade.js +590 -0
  112. data/vendor/assets/javascripts/codemirror/modes/javascript.js +748 -0
  113. data/vendor/assets/javascripts/codemirror/modes/jinja2.js +142 -0
  114. data/vendor/assets/javascripts/codemirror/modes/jsx.js +147 -0
  115. data/vendor/assets/javascripts/codemirror/modes/julia.js +392 -0
  116. data/vendor/assets/javascripts/codemirror/modes/livescript.js +280 -0
  117. data/vendor/assets/javascripts/codemirror/modes/lua.js +159 -0
  118. data/vendor/assets/javascripts/codemirror/modes/markdown.js +797 -0
  119. data/vendor/assets/javascripts/codemirror/modes/mathematica.js +176 -0
  120. data/vendor/assets/javascripts/codemirror/modes/mbox.js +129 -0
  121. data/vendor/assets/javascripts/codemirror/modes/mirc.js +193 -0
  122. data/vendor/assets/javascripts/codemirror/modes/mllike.js +205 -0
  123. data/vendor/assets/javascripts/codemirror/modes/modelica.js +245 -0
  124. data/vendor/assets/javascripts/codemirror/modes/mscgen.js +169 -0
  125. data/vendor/assets/javascripts/codemirror/modes/mumps.js +148 -0
  126. data/vendor/assets/javascripts/codemirror/modes/nginx.js +178 -0
  127. data/vendor/assets/javascripts/codemirror/modes/nsis.js +95 -0
  128. data/vendor/assets/javascripts/codemirror/modes/ntriples.js +186 -0
  129. data/vendor/assets/javascripts/codemirror/modes/octave.js +135 -0
  130. data/vendor/assets/javascripts/codemirror/modes/oz.js +252 -0
  131. data/vendor/assets/javascripts/codemirror/modes/pascal.js +109 -0
  132. data/vendor/assets/javascripts/codemirror/modes/pegjs.js +114 -0
  133. data/vendor/assets/javascripts/codemirror/modes/perl.js +837 -0
  134. data/vendor/assets/javascripts/codemirror/modes/php.js +234 -0
  135. data/vendor/assets/javascripts/codemirror/modes/pig.js +178 -0
  136. data/vendor/assets/javascripts/codemirror/modes/powershell.js +396 -0
  137. data/vendor/assets/javascripts/codemirror/modes/properties.js +78 -0
  138. data/vendor/assets/javascripts/codemirror/modes/protobuf.js +68 -0
  139. data/vendor/assets/javascripts/codemirror/modes/puppet.js +220 -0
  140. data/vendor/assets/javascripts/codemirror/modes/python.js +340 -0
  141. data/vendor/assets/javascripts/codemirror/modes/q.js +139 -0
  142. data/vendor/assets/javascripts/codemirror/modes/r.js +164 -0
  143. data/vendor/assets/javascripts/codemirror/modes/rpm.js +109 -0
  144. data/vendor/assets/javascripts/codemirror/modes/rst.js +557 -0
  145. data/vendor/assets/javascripts/codemirror/modes/ruby.js +285 -0
  146. data/vendor/assets/javascripts/codemirror/modes/rust.js +71 -0
  147. data/vendor/assets/javascripts/codemirror/modes/sas.js +315 -0
  148. data/vendor/assets/javascripts/codemirror/modes/sass.js +414 -0
  149. data/vendor/assets/javascripts/codemirror/modes/scheme.js +249 -0
  150. data/vendor/assets/javascripts/codemirror/modes/shell.js +139 -0
  151. data/vendor/assets/javascripts/codemirror/modes/sieve.js +193 -0
  152. data/vendor/assets/javascripts/codemirror/modes/slim.js +575 -0
  153. data/vendor/assets/javascripts/codemirror/modes/smalltalk.js +168 -0
  154. data/vendor/assets/javascripts/codemirror/modes/smarty.js +225 -0
  155. data/vendor/assets/javascripts/codemirror/modes/solr.js +104 -0
  156. data/vendor/assets/javascripts/codemirror/modes/soy.js +199 -0
  157. data/vendor/assets/javascripts/codemirror/modes/sparql.js +180 -0
  158. data/vendor/assets/javascripts/codemirror/modes/spreadsheet.js +112 -0
  159. data/vendor/assets/javascripts/codemirror/modes/sql.js +413 -0
  160. data/vendor/assets/javascripts/codemirror/modes/stex.js +251 -0
  161. data/vendor/assets/javascripts/codemirror/modes/stylus.js +769 -0
  162. data/vendor/assets/javascripts/codemirror/modes/swift.js +202 -0
  163. data/vendor/assets/javascripts/codemirror/modes/tcl.js +139 -0
  164. data/vendor/assets/javascripts/codemirror/modes/textile.js +469 -0
  165. data/vendor/assets/javascripts/codemirror/modes/tiddlywiki.js +308 -0
  166. data/vendor/assets/javascripts/codemirror/modes/tiki.js +312 -0
  167. data/vendor/assets/javascripts/codemirror/modes/toml.js +88 -0
  168. data/vendor/assets/javascripts/codemirror/modes/tornado.js +68 -0
  169. data/vendor/assets/javascripts/codemirror/modes/troff.js +84 -0
  170. data/vendor/assets/javascripts/codemirror/modes/ttcn-cfg.js +214 -0
  171. data/vendor/assets/javascripts/codemirror/modes/ttcn.js +283 -0
  172. data/vendor/assets/javascripts/codemirror/modes/turtle.js +162 -0
  173. data/vendor/assets/javascripts/codemirror/modes/twig.js +141 -0
  174. data/vendor/assets/javascripts/codemirror/modes/vb.js +276 -0
  175. data/vendor/assets/javascripts/codemirror/modes/vbscript.js +350 -0
  176. data/vendor/assets/javascripts/codemirror/modes/velocity.js +201 -0
  177. data/vendor/assets/javascripts/codemirror/modes/verilog.js +537 -0
  178. data/vendor/assets/javascripts/codemirror/modes/vhdl.js +189 -0
  179. data/vendor/assets/javascripts/codemirror/modes/vue.js +69 -0
  180. data/vendor/assets/javascripts/codemirror/modes/webidl.js +195 -0
  181. data/vendor/assets/javascripts/codemirror/modes/xml.js +394 -0
  182. data/vendor/assets/javascripts/codemirror/modes/xquery.js +437 -0
  183. data/vendor/assets/javascripts/codemirror/modes/yacas.js +204 -0
  184. data/vendor/assets/javascripts/codemirror/modes/yaml-frontmatter.js +68 -0
  185. data/vendor/assets/javascripts/codemirror/modes/yaml.js +117 -0
  186. data/vendor/assets/javascripts/codemirror/modes/z80.js +116 -0
  187. data/vendor/assets/javascripts/codemirror.js +8922 -0
  188. data/vendor/assets/stylesheets/codemirror/addons/dialog/dialog.css +32 -0
  189. data/vendor/assets/stylesheets/codemirror/addons/display/fullscreen.css +6 -0
  190. data/vendor/assets/stylesheets/codemirror/addons/fold/foldgutter.css +20 -0
  191. data/vendor/assets/stylesheets/codemirror/addons/hint/show-hint.css +37 -0
  192. data/vendor/assets/stylesheets/codemirror/addons/lint/lint.css +73 -0
  193. data/vendor/assets/stylesheets/codemirror/addons/merge/merge.css +113 -0
  194. data/vendor/assets/stylesheets/codemirror/addons/scroll/simplescrollbars.css +66 -0
  195. data/vendor/assets/stylesheets/codemirror/addons/search/matchesonscrollbar.css +8 -0
  196. data/vendor/assets/stylesheets/codemirror/addons/tern/tern.css +87 -0
  197. data/vendor/assets/stylesheets/codemirror/modes/tiddlywiki.css +14 -0
  198. data/vendor/assets/stylesheets/codemirror/modes/tiki.css +26 -0
  199. data/vendor/assets/stylesheets/codemirror/themes/3024-day.css +41 -0
  200. data/vendor/assets/stylesheets/codemirror/themes/3024-night.css +39 -0
  201. data/vendor/assets/stylesheets/codemirror/themes/abcdef.css +32 -0
  202. data/vendor/assets/stylesheets/codemirror/themes/ambiance-mobile.css +5 -0
  203. data/vendor/assets/stylesheets/codemirror/themes/ambiance.css +74 -0
  204. data/vendor/assets/stylesheets/codemirror/themes/base16-dark.css +38 -0
  205. data/vendor/assets/stylesheets/codemirror/themes/base16-light.css +38 -0
  206. data/vendor/assets/stylesheets/codemirror/themes/bespin.css +34 -0
  207. data/vendor/assets/stylesheets/codemirror/themes/blackboard.css +32 -0
  208. data/vendor/assets/stylesheets/codemirror/themes/cobalt.css +25 -0
  209. data/vendor/assets/stylesheets/codemirror/themes/colorforth.css +33 -0
  210. data/vendor/assets/stylesheets/codemirror/themes/dracula.css +41 -0
  211. data/vendor/assets/stylesheets/codemirror/themes/eclipse.css +23 -0
  212. data/vendor/assets/stylesheets/codemirror/themes/elegant.css +13 -0
  213. data/vendor/assets/stylesheets/codemirror/themes/erlang-dark.css +34 -0
  214. data/vendor/assets/stylesheets/codemirror/themes/hopscotch.css +34 -0
  215. data/vendor/assets/stylesheets/codemirror/themes/icecoder.css +43 -0
  216. data/vendor/assets/stylesheets/codemirror/themes/isotope.css +34 -0
  217. data/vendor/assets/stylesheets/codemirror/themes/lesser-dark.css +47 -0
  218. data/vendor/assets/stylesheets/codemirror/themes/liquibyte.css +95 -0
  219. data/vendor/assets/stylesheets/codemirror/themes/material.css +53 -0
  220. data/vendor/assets/stylesheets/codemirror/themes/mbo.css +37 -0
  221. data/vendor/assets/stylesheets/codemirror/themes/mdn-like.css +46 -0
  222. data/vendor/assets/stylesheets/codemirror/themes/midnight.css +45 -0
  223. data/vendor/assets/stylesheets/codemirror/themes/monokai.css +36 -0
  224. data/vendor/assets/stylesheets/codemirror/themes/neat.css +12 -0
  225. data/vendor/assets/stylesheets/codemirror/themes/neo.css +43 -0
  226. data/vendor/assets/stylesheets/codemirror/themes/night.css +27 -0
  227. data/vendor/assets/stylesheets/codemirror/themes/paraiso-dark.css +38 -0
  228. data/vendor/assets/stylesheets/codemirror/themes/paraiso-light.css +38 -0
  229. data/vendor/assets/stylesheets/codemirror/themes/pastel-on-dark.css +53 -0
  230. data/vendor/assets/stylesheets/codemirror/themes/railscasts.css +34 -0
  231. data/vendor/assets/stylesheets/codemirror/themes/rubyblue.css +25 -0
  232. data/vendor/assets/stylesheets/codemirror/themes/seti.css +44 -0
  233. data/vendor/assets/stylesheets/codemirror/themes/solarized.css +169 -0
  234. data/vendor/assets/stylesheets/codemirror/themes/the-matrix.css +30 -0
  235. data/vendor/assets/stylesheets/codemirror/themes/tomorrow-night-bright.css +35 -0
  236. data/vendor/assets/stylesheets/codemirror/themes/tomorrow-night-eighties.css +38 -0
  237. data/vendor/assets/stylesheets/codemirror/themes/ttcn.css +64 -0
  238. data/vendor/assets/stylesheets/codemirror/themes/twilight.css +32 -0
  239. data/vendor/assets/stylesheets/codemirror/themes/vibrant-ink.css +34 -0
  240. data/vendor/assets/stylesheets/codemirror/themes/xq-dark.css +53 -0
  241. data/vendor/assets/stylesheets/codemirror/themes/xq-light.css +43 -0
  242. data/vendor/assets/stylesheets/codemirror/themes/yeti.css +44 -0
  243. data/vendor/assets/stylesheets/codemirror/themes/zenburn.css +37 -0
  244. data/vendor/assets/stylesheets/codemirror.css +347 -0
  245. metadata +244 -49
  246. data/app/assets/javascripts/scrivito_codemirror_editor/codemirror_editor.js.coffee +0 -23
@@ -0,0 +1,437 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ (function(mod) {
5
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
6
+ mod(require("../../lib/codemirror"));
7
+ else if (typeof define == "function" && define.amd) // AMD
8
+ define(["../../lib/codemirror"], mod);
9
+ else // Plain browser env
10
+ mod(CodeMirror);
11
+ })(function(CodeMirror) {
12
+ "use strict";
13
+
14
+ CodeMirror.defineMode("xquery", function() {
15
+
16
+ // The keywords object is set to the result of this self executing
17
+ // function. Each keyword is a property of the keywords object whose
18
+ // value is {type: atype, style: astyle}
19
+ var keywords = function(){
20
+ // convenience functions used to build keywords object
21
+ function kw(type) {return {type: type, style: "keyword"};}
22
+ var A = kw("keyword a")
23
+ , B = kw("keyword b")
24
+ , C = kw("keyword c")
25
+ , operator = kw("operator")
26
+ , atom = {type: "atom", style: "atom"}
27
+ , punctuation = {type: "punctuation", style: null}
28
+ , qualifier = {type: "axis_specifier", style: "qualifier"};
29
+
30
+ // kwObj is what is return from this function at the end
31
+ var kwObj = {
32
+ 'if': A, 'switch': A, 'while': A, 'for': A,
33
+ 'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B,
34
+ 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C,
35
+ 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C,
36
+ ',': punctuation,
37
+ 'null': atom, 'fn:false()': atom, 'fn:true()': atom
38
+ };
39
+
40
+ // a list of 'basic' keywords. For each add a property to kwObj with the value of
41
+ // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"}
42
+ var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before',
43
+ 'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self',
44
+ 'descending','document','document-node','element','else','eq','every','except','external','following',
45
+ 'following-sibling','follows','for','function','if','import','in','instance','intersect','item',
46
+ 'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding',
47
+ 'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element',
48
+ 'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where',
49
+ 'xquery', 'empty-sequence'];
50
+ for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);};
51
+
52
+ // a list of types. For each add a property to kwObj with the value of
53
+ // {type: "atom", style: "atom"}
54
+ var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime',
55
+ 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary',
56
+ 'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration'];
57
+ for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;};
58
+
59
+ // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"}
60
+ var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-'];
61
+ for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;};
62
+
63
+ // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"}
64
+ var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::",
65
+ "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"];
66
+ for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; };
67
+
68
+ return kwObj;
69
+ }();
70
+
71
+ function chain(stream, state, f) {
72
+ state.tokenize = f;
73
+ return f(stream, state);
74
+ }
75
+
76
+ // the primary mode tokenizer
77
+ function tokenBase(stream, state) {
78
+ var ch = stream.next(),
79
+ mightBeFunction = false,
80
+ isEQName = isEQNameAhead(stream);
81
+
82
+ // an XML tag (if not in some sub, chained tokenizer)
83
+ if (ch == "<") {
84
+ if(stream.match("!--", true))
85
+ return chain(stream, state, tokenXMLComment);
86
+
87
+ if(stream.match("![CDATA", false)) {
88
+ state.tokenize = tokenCDATA;
89
+ return "tag";
90
+ }
91
+
92
+ if(stream.match("?", false)) {
93
+ return chain(stream, state, tokenPreProcessing);
94
+ }
95
+
96
+ var isclose = stream.eat("/");
97
+ stream.eatSpace();
98
+ var tagName = "", c;
99
+ while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c;
100
+
101
+ return chain(stream, state, tokenTag(tagName, isclose));
102
+ }
103
+ // start code block
104
+ else if(ch == "{") {
105
+ pushStateStack(state,{ type: "codeblock"});
106
+ return null;
107
+ }
108
+ // end code block
109
+ else if(ch == "}") {
110
+ popStateStack(state);
111
+ return null;
112
+ }
113
+ // if we're in an XML block
114
+ else if(isInXmlBlock(state)) {
115
+ if(ch == ">")
116
+ return "tag";
117
+ else if(ch == "/" && stream.eat(">")) {
118
+ popStateStack(state);
119
+ return "tag";
120
+ }
121
+ else
122
+ return "variable";
123
+ }
124
+ // if a number
125
+ else if (/\d/.test(ch)) {
126
+ stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/);
127
+ return "atom";
128
+ }
129
+ // comment start
130
+ else if (ch === "(" && stream.eat(":")) {
131
+ pushStateStack(state, { type: "comment"});
132
+ return chain(stream, state, tokenComment);
133
+ }
134
+ // quoted string
135
+ else if ( !isEQName && (ch === '"' || ch === "'"))
136
+ return chain(stream, state, tokenString(ch));
137
+ // variable
138
+ else if(ch === "$") {
139
+ return chain(stream, state, tokenVariable);
140
+ }
141
+ // assignment
142
+ else if(ch ===":" && stream.eat("=")) {
143
+ return "keyword";
144
+ }
145
+ // open paren
146
+ else if(ch === "(") {
147
+ pushStateStack(state, { type: "paren"});
148
+ return null;
149
+ }
150
+ // close paren
151
+ else if(ch === ")") {
152
+ popStateStack(state);
153
+ return null;
154
+ }
155
+ // open paren
156
+ else if(ch === "[") {
157
+ pushStateStack(state, { type: "bracket"});
158
+ return null;
159
+ }
160
+ // close paren
161
+ else if(ch === "]") {
162
+ popStateStack(state);
163
+ return null;
164
+ }
165
+ else {
166
+ var known = keywords.propertyIsEnumerable(ch) && keywords[ch];
167
+
168
+ // if there's a EQName ahead, consume the rest of the string portion, it's likely a function
169
+ if(isEQName && ch === '\"') while(stream.next() !== '"'){}
170
+ if(isEQName && ch === '\'') while(stream.next() !== '\''){}
171
+
172
+ // gobble up a word if the character is not known
173
+ if(!known) stream.eatWhile(/[\w\$_-]/);
174
+
175
+ // gobble a colon in the case that is a lib func type call fn:doc
176
+ var foundColon = stream.eat(":");
177
+
178
+ // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier
179
+ // which should get matched as a keyword
180
+ if(!stream.eat(":") && foundColon) {
181
+ stream.eatWhile(/[\w\$_-]/);
182
+ }
183
+ // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort)
184
+ if(stream.match(/^[ \t]*\(/, false)) {
185
+ mightBeFunction = true;
186
+ }
187
+ // is the word a keyword?
188
+ var word = stream.current();
189
+ known = keywords.propertyIsEnumerable(word) && keywords[word];
190
+
191
+ // if we think it's a function call but not yet known,
192
+ // set style to variable for now for lack of something better
193
+ if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"};
194
+
195
+ // if the previous word was element, attribute, axis specifier, this word should be the name of that
196
+ if(isInXmlConstructor(state)) {
197
+ popStateStack(state);
198
+ return "variable";
199
+ }
200
+ // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and
201
+ // push the stack so we know to look for it on the next word
202
+ if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"});
203
+
204
+ // if the word is known, return the details of that else just call this a generic 'word'
205
+ return known ? known.style : "variable";
206
+ }
207
+ }
208
+
209
+ // handle comments, including nested
210
+ function tokenComment(stream, state) {
211
+ var maybeEnd = false, maybeNested = false, nestedCount = 0, ch;
212
+ while (ch = stream.next()) {
213
+ if (ch == ")" && maybeEnd) {
214
+ if(nestedCount > 0)
215
+ nestedCount--;
216
+ else {
217
+ popStateStack(state);
218
+ break;
219
+ }
220
+ }
221
+ else if(ch == ":" && maybeNested) {
222
+ nestedCount++;
223
+ }
224
+ maybeEnd = (ch == ":");
225
+ maybeNested = (ch == "(");
226
+ }
227
+
228
+ return "comment";
229
+ }
230
+
231
+ // tokenizer for string literals
232
+ // optionally pass a tokenizer function to set state.tokenize back to when finished
233
+ function tokenString(quote, f) {
234
+ return function(stream, state) {
235
+ var ch;
236
+
237
+ if(isInString(state) && stream.current() == quote) {
238
+ popStateStack(state);
239
+ if(f) state.tokenize = f;
240
+ return "string";
241
+ }
242
+
243
+ pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) });
244
+
245
+ // if we're in a string and in an XML block, allow an embedded code block
246
+ if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
247
+ state.tokenize = tokenBase;
248
+ return "string";
249
+ }
250
+
251
+
252
+ while (ch = stream.next()) {
253
+ if (ch == quote) {
254
+ popStateStack(state);
255
+ if(f) state.tokenize = f;
256
+ break;
257
+ }
258
+ else {
259
+ // if we're in a string and in an XML block, allow an embedded code block in an attribute
260
+ if(stream.match("{", false) && isInXmlAttributeBlock(state)) {
261
+ state.tokenize = tokenBase;
262
+ return "string";
263
+ }
264
+
265
+ }
266
+ }
267
+
268
+ return "string";
269
+ };
270
+ }
271
+
272
+ // tokenizer for variables
273
+ function tokenVariable(stream, state) {
274
+ var isVariableChar = /[\w\$_-]/;
275
+
276
+ // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote
277
+ if(stream.eat("\"")) {
278
+ while(stream.next() !== '\"'){};
279
+ stream.eat(":");
280
+ } else {
281
+ stream.eatWhile(isVariableChar);
282
+ if(!stream.match(":=", false)) stream.eat(":");
283
+ }
284
+ stream.eatWhile(isVariableChar);
285
+ state.tokenize = tokenBase;
286
+ return "variable";
287
+ }
288
+
289
+ // tokenizer for XML tags
290
+ function tokenTag(name, isclose) {
291
+ return function(stream, state) {
292
+ stream.eatSpace();
293
+ if(isclose && stream.eat(">")) {
294
+ popStateStack(state);
295
+ state.tokenize = tokenBase;
296
+ return "tag";
297
+ }
298
+ // self closing tag without attributes?
299
+ if(!stream.eat("/"))
300
+ pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase});
301
+ if(!stream.eat(">")) {
302
+ state.tokenize = tokenAttribute;
303
+ return "tag";
304
+ }
305
+ else {
306
+ state.tokenize = tokenBase;
307
+ }
308
+ return "tag";
309
+ };
310
+ }
311
+
312
+ // tokenizer for XML attributes
313
+ function tokenAttribute(stream, state) {
314
+ var ch = stream.next();
315
+
316
+ if(ch == "/" && stream.eat(">")) {
317
+ if(isInXmlAttributeBlock(state)) popStateStack(state);
318
+ if(isInXmlBlock(state)) popStateStack(state);
319
+ return "tag";
320
+ }
321
+ if(ch == ">") {
322
+ if(isInXmlAttributeBlock(state)) popStateStack(state);
323
+ return "tag";
324
+ }
325
+ if(ch == "=")
326
+ return null;
327
+ // quoted string
328
+ if (ch == '"' || ch == "'")
329
+ return chain(stream, state, tokenString(ch, tokenAttribute));
330
+
331
+ if(!isInXmlAttributeBlock(state))
332
+ pushStateStack(state, { type: "attribute", tokenize: tokenAttribute});
333
+
334
+ stream.eat(/[a-zA-Z_:]/);
335
+ stream.eatWhile(/[-a-zA-Z0-9_:.]/);
336
+ stream.eatSpace();
337
+
338
+ // the case where the attribute has not value and the tag was closed
339
+ if(stream.match(">", false) || stream.match("/", false)) {
340
+ popStateStack(state);
341
+ state.tokenize = tokenBase;
342
+ }
343
+
344
+ return "attribute";
345
+ }
346
+
347
+ // handle comments, including nested
348
+ function tokenXMLComment(stream, state) {
349
+ var ch;
350
+ while (ch = stream.next()) {
351
+ if (ch == "-" && stream.match("->", true)) {
352
+ state.tokenize = tokenBase;
353
+ return "comment";
354
+ }
355
+ }
356
+ }
357
+
358
+
359
+ // handle CDATA
360
+ function tokenCDATA(stream, state) {
361
+ var ch;
362
+ while (ch = stream.next()) {
363
+ if (ch == "]" && stream.match("]", true)) {
364
+ state.tokenize = tokenBase;
365
+ return "comment";
366
+ }
367
+ }
368
+ }
369
+
370
+ // handle preprocessing instructions
371
+ function tokenPreProcessing(stream, state) {
372
+ var ch;
373
+ while (ch = stream.next()) {
374
+ if (ch == "?" && stream.match(">", true)) {
375
+ state.tokenize = tokenBase;
376
+ return "comment meta";
377
+ }
378
+ }
379
+ }
380
+
381
+
382
+ // functions to test the current context of the state
383
+ function isInXmlBlock(state) { return isIn(state, "tag"); }
384
+ function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); }
385
+ function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); }
386
+ function isInString(state) { return isIn(state, "string"); }
387
+
388
+ function isEQNameAhead(stream) {
389
+ // assume we've already eaten a quote (")
390
+ if(stream.current() === '"')
391
+ return stream.match(/^[^\"]+\"\:/, false);
392
+ else if(stream.current() === '\'')
393
+ return stream.match(/^[^\"]+\'\:/, false);
394
+ else
395
+ return false;
396
+ }
397
+
398
+ function isIn(state, type) {
399
+ return (state.stack.length && state.stack[state.stack.length - 1].type == type);
400
+ }
401
+
402
+ function pushStateStack(state, newState) {
403
+ state.stack.push(newState);
404
+ }
405
+
406
+ function popStateStack(state) {
407
+ state.stack.pop();
408
+ var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize;
409
+ state.tokenize = reinstateTokenize || tokenBase;
410
+ }
411
+
412
+ // the interface for the mode API
413
+ return {
414
+ startState: function() {
415
+ return {
416
+ tokenize: tokenBase,
417
+ cc: [],
418
+ stack: []
419
+ };
420
+ },
421
+
422
+ token: function(stream, state) {
423
+ if (stream.eatSpace()) return null;
424
+ var style = state.tokenize(stream, state);
425
+ return style;
426
+ },
427
+
428
+ blockCommentStart: "(:",
429
+ blockCommentEnd: ":)"
430
+
431
+ };
432
+
433
+ });
434
+
435
+ CodeMirror.defineMIME("application/xquery", "xquery");
436
+
437
+ });
@@ -0,0 +1,204 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: http://codemirror.net/LICENSE
3
+
4
+ // Yacas mode copyright (c) 2015 by Grzegorz Mazur
5
+ // Loosely based on mathematica mode by Calin Barbat
6
+
7
+ (function(mod) {
8
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
9
+ mod(require("../../lib/codemirror"));
10
+ else if (typeof define == "function" && define.amd) // AMD
11
+ define(["../../lib/codemirror"], mod);
12
+ else // Plain browser env
13
+ mod(CodeMirror);
14
+ })(function(CodeMirror) {
15
+ "use strict";
16
+
17
+ CodeMirror.defineMode('yacas', function(_config, _parserConfig) {
18
+
19
+ function words(str) {
20
+ var obj = {}, words = str.split(" ");
21
+ for (var i = 0; i < words.length; ++i) obj[words[i]] = true;
22
+ return obj;
23
+ }
24
+
25
+ var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " +
26
+ "FromString Function Integrate InverseTaylor Limit " +
27
+ "LocalSymbols Macro MacroRule MacroRulePattern " +
28
+ "NIntegrate Rule RulePattern Subst TD TExplicitSum " +
29
+ "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " +
30
+ "ToStdout ToString TraceRule Until While");
31
+
32
+ // patterns
33
+ var pFloatForm = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)";
34
+ var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)";
35
+
36
+ // regular expressions
37
+ var reFloatForm = new RegExp(pFloatForm);
38
+ var reIdentifier = new RegExp(pIdentifier);
39
+ var rePattern = new RegExp(pIdentifier + "?_" + pIdentifier);
40
+ var reFunctionLike = new RegExp(pIdentifier + "\\s*\\(");
41
+
42
+ function tokenBase(stream, state) {
43
+ var ch;
44
+
45
+ // get next character
46
+ ch = stream.next();
47
+
48
+ // string
49
+ if (ch === '"') {
50
+ state.tokenize = tokenString;
51
+ return state.tokenize(stream, state);
52
+ }
53
+
54
+ // comment
55
+ if (ch === '/') {
56
+ if (stream.eat('*')) {
57
+ state.tokenize = tokenComment;
58
+ return state.tokenize(stream, state);
59
+ }
60
+ if (stream.eat("/")) {
61
+ stream.skipToEnd();
62
+ return "comment";
63
+ }
64
+ }
65
+
66
+ // go back one character
67
+ stream.backUp(1);
68
+
69
+ // update scope info
70
+ var m = stream.match(/^(\w+)\s*\(/, false);
71
+ if (m !== null && bodiedOps.hasOwnProperty(m[1]))
72
+ state.scopes.push('bodied');
73
+
74
+ var scope = currentScope(state);
75
+
76
+ if (scope === 'bodied' && ch === '[')
77
+ state.scopes.pop();
78
+
79
+ if (ch === '[' || ch === '{' || ch === '(')
80
+ state.scopes.push(ch);
81
+
82
+ scope = currentScope(state);
83
+
84
+ if (scope === '[' && ch === ']' ||
85
+ scope === '{' && ch === '}' ||
86
+ scope === '(' && ch === ')')
87
+ state.scopes.pop();
88
+
89
+ if (ch === ';') {
90
+ while (scope === 'bodied') {
91
+ state.scopes.pop();
92
+ scope = currentScope(state);
93
+ }
94
+ }
95
+
96
+ // look for ordered rules
97
+ if (stream.match(/\d+ *#/, true, false)) {
98
+ return 'qualifier';
99
+ }
100
+
101
+ // look for numbers
102
+ if (stream.match(reFloatForm, true, false)) {
103
+ return 'number';
104
+ }
105
+
106
+ // look for placeholders
107
+ if (stream.match(rePattern, true, false)) {
108
+ return 'variable-3';
109
+ }
110
+
111
+ // match all braces separately
112
+ if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) {
113
+ return 'bracket';
114
+ }
115
+
116
+ // literals looking like function calls
117
+ if (stream.match(reFunctionLike, true, false)) {
118
+ stream.backUp(1);
119
+ return 'variable';
120
+ }
121
+
122
+ // all other identifiers
123
+ if (stream.match(reIdentifier, true, false)) {
124
+ return 'variable-2';
125
+ }
126
+
127
+ // operators; note that operators like @@ or /; are matched separately for each symbol.
128
+ if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) {
129
+ return 'operator';
130
+ }
131
+
132
+ // everything else is an error
133
+ return 'error';
134
+ }
135
+
136
+ function tokenString(stream, state) {
137
+ var next, end = false, escaped = false;
138
+ while ((next = stream.next()) != null) {
139
+ if (next === '"' && !escaped) {
140
+ end = true;
141
+ break;
142
+ }
143
+ escaped = !escaped && next === '\\';
144
+ }
145
+ if (end && !escaped) {
146
+ state.tokenize = tokenBase;
147
+ }
148
+ return 'string';
149
+ };
150
+
151
+ function tokenComment(stream, state) {
152
+ var prev, next;
153
+ while((next = stream.next()) != null) {
154
+ if (prev === '*' && next === '/') {
155
+ state.tokenize = tokenBase;
156
+ break;
157
+ }
158
+ prev = next;
159
+ }
160
+ return 'comment';
161
+ }
162
+
163
+ function currentScope(state) {
164
+ var scope = null;
165
+ if (state.scopes.length > 0)
166
+ scope = state.scopes[state.scopes.length - 1];
167
+ return scope;
168
+ }
169
+
170
+ return {
171
+ startState: function() {
172
+ return {
173
+ tokenize: tokenBase,
174
+ scopes: []
175
+ };
176
+ },
177
+ token: function(stream, state) {
178
+ if (stream.eatSpace()) return null;
179
+ return state.tokenize(stream, state);
180
+ },
181
+ indent: function(state, textAfter) {
182
+ if (state.tokenize !== tokenBase && state.tokenize !== null)
183
+ return CodeMirror.Pass;
184
+
185
+ var delta = 0;
186
+ if (textAfter === ']' || textAfter === '];' ||
187
+ textAfter === '}' || textAfter === '};' ||
188
+ textAfter === ');')
189
+ delta = -1;
190
+
191
+ return (state.scopes.length + delta) * _config.indentUnit;
192
+ },
193
+ electricChars: "{}[]();",
194
+ blockCommentStart: "/*",
195
+ blockCommentEnd: "*/",
196
+ lineComment: "//"
197
+ };
198
+ });
199
+
200
+ CodeMirror.defineMIME('text/x-yacas', {
201
+ name: 'yacas'
202
+ });
203
+
204
+ });