ll-plus 2.10.24 → 2.10.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/package.json +1 -1
  2. package/theme-chalk/code-editor-vue3/addon/comment/comment.js +211 -0
  3. package/theme-chalk/code-editor-vue3/addon/comment/continuecomment.js +114 -0
  4. package/theme-chalk/code-editor-vue3/addon/dialog/dialog.css +32 -0
  5. package/theme-chalk/code-editor-vue3/addon/dialog/dialog.js +163 -0
  6. package/theme-chalk/code-editor-vue3/addon/display/autorefresh.js +47 -0
  7. package/theme-chalk/code-editor-vue3/addon/display/fullscreen.css +6 -0
  8. package/theme-chalk/code-editor-vue3/addon/display/fullscreen.js +41 -0
  9. package/theme-chalk/code-editor-vue3/addon/display/panel.js +133 -0
  10. package/theme-chalk/code-editor-vue3/addon/display/placeholder.js +78 -0
  11. package/theme-chalk/code-editor-vue3/addon/display/rulers.js +51 -0
  12. package/theme-chalk/code-editor-vue3/addon/edit/closebrackets.js +201 -0
  13. package/theme-chalk/code-editor-vue3/addon/edit/closetag.js +185 -0
  14. package/theme-chalk/code-editor-vue3/addon/edit/continuelist.js +101 -0
  15. package/theme-chalk/code-editor-vue3/addon/edit/matchbrackets.js +160 -0
  16. package/theme-chalk/code-editor-vue3/addon/edit/matchtags.js +66 -0
  17. package/theme-chalk/code-editor-vue3/addon/edit/trailingspace.js +27 -0
  18. package/theme-chalk/code-editor-vue3/addon/fold/brace-fold.js +119 -0
  19. package/theme-chalk/code-editor-vue3/addon/fold/comment-fold.js +59 -0
  20. package/theme-chalk/code-editor-vue3/addon/fold/foldcode.js +159 -0
  21. package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.css +20 -0
  22. package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.js +169 -0
  23. package/theme-chalk/code-editor-vue3/addon/fold/indent-fold.js +48 -0
  24. package/theme-chalk/code-editor-vue3/addon/fold/markdown-fold.js +49 -0
  25. package/theme-chalk/code-editor-vue3/addon/fold/xml-fold.js +184 -0
  26. package/theme-chalk/code-editor-vue3/addon/hint/anyword-hint.js +41 -0
  27. package/theme-chalk/code-editor-vue3/addon/hint/css-hint.js +66 -0
  28. package/theme-chalk/code-editor-vue3/addon/hint/html-hint.js +351 -0
  29. package/theme-chalk/code-editor-vue3/addon/hint/javascript-hint.js +162 -0
  30. package/theme-chalk/code-editor-vue3/addon/hint/show-hint.css +37 -0
  31. package/theme-chalk/code-editor-vue3/addon/hint/show-hint.js +523 -0
  32. package/theme-chalk/code-editor-vue3/addon/hint/sql-hint.js +304 -0
  33. package/theme-chalk/code-editor-vue3/addon/hint/xml-hint.js +132 -0
  34. package/theme-chalk/code-editor-vue3/addon/lint/coffeescript-lint.js +47 -0
  35. package/theme-chalk/code-editor-vue3/addon/lint/css-lint.js +40 -0
  36. package/theme-chalk/code-editor-vue3/addon/lint/html-lint.js +59 -0
  37. package/theme-chalk/code-editor-vue3/addon/lint/javascript-lint.js +65 -0
  38. package/theme-chalk/code-editor-vue3/addon/lint/json-lint.js +40 -0
  39. package/theme-chalk/code-editor-vue3/addon/lint/lint.css +79 -0
  40. package/theme-chalk/code-editor-vue3/addon/lint/lint.js +288 -0
  41. package/theme-chalk/code-editor-vue3/addon/lint/yaml-lint.js +41 -0
  42. package/theme-chalk/code-editor-vue3/addon/merge/merge.css +119 -0
  43. package/theme-chalk/code-editor-vue3/addon/merge/merge.js +1018 -0
  44. package/theme-chalk/code-editor-vue3/addon/mode/loadmode.js +66 -0
  45. package/theme-chalk/code-editor-vue3/addon/mode/multiplex.js +136 -0
  46. package/theme-chalk/code-editor-vue3/addon/mode/multiplex_test.js +49 -0
  47. package/theme-chalk/code-editor-vue3/addon/mode/overlay.js +90 -0
  48. package/theme-chalk/code-editor-vue3/addon/mode/simple.js +216 -0
  49. package/theme-chalk/code-editor-vue3/addon/runmode/colorize.js +40 -0
  50. package/theme-chalk/code-editor-vue3/addon/runmode/runmode-standalone.js +334 -0
  51. package/theme-chalk/code-editor-vue3/addon/runmode/runmode.js +76 -0
  52. package/theme-chalk/code-editor-vue3/addon/runmode/runmode.node.js +329 -0
  53. package/theme-chalk/code-editor-vue3/addon/scroll/annotatescrollbar.js +128 -0
  54. package/theme-chalk/code-editor-vue3/addon/scroll/scrollpastend.js +48 -0
  55. package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.css +66 -0
  56. package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.js +152 -0
  57. package/theme-chalk/code-editor-vue3/addon/search/jump-to-line.js +53 -0
  58. package/theme-chalk/code-editor-vue3/addon/search/match-highlighter.js +167 -0
  59. package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.css +8 -0
  60. package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.js +97 -0
  61. package/theme-chalk/code-editor-vue3/addon/search/search.js +295 -0
  62. package/theme-chalk/code-editor-vue3/addon/search/searchcursor.js +305 -0
  63. package/theme-chalk/code-editor-vue3/addon/selection/active-line.js +72 -0
  64. package/theme-chalk/code-editor-vue3/addon/selection/mark-selection.js +119 -0
  65. package/theme-chalk/code-editor-vue3/addon/selection/selection-pointer.js +98 -0
  66. package/theme-chalk/code-editor-vue3/addon/tern/tern.css +87 -0
  67. package/theme-chalk/code-editor-vue3/addon/tern/tern.js +756 -0
  68. package/theme-chalk/code-editor-vue3/addon/tern/worker.js +44 -0
  69. package/theme-chalk/code-editor-vue3/addon/wrap/hardwrap.js +160 -0
  70. package/theme-chalk/code-editor-vue3/lib/codemirror.css +344 -0
  71. package/theme-chalk/code-editor-vue3/lib/codemirror.js +9884 -0
  72. package/theme-chalk/code-editor-vue3/mode/apl/apl.js +174 -0
  73. package/theme-chalk/code-editor-vue3/mode/asciiarmor/asciiarmor.js +74 -0
  74. package/theme-chalk/code-editor-vue3/mode/asn.1/asn.1.js +204 -0
  75. package/theme-chalk/code-editor-vue3/mode/asterisk/asterisk.js +220 -0
  76. package/theme-chalk/code-editor-vue3/mode/brainfuck/brainfuck.js +85 -0
  77. package/theme-chalk/code-editor-vue3/mode/clike/clike.js +942 -0
  78. package/theme-chalk/code-editor-vue3/mode/clojure/clojure.js +293 -0
  79. package/theme-chalk/code-editor-vue3/mode/cmake/cmake.js +97 -0
  80. package/theme-chalk/code-editor-vue3/mode/cobol/cobol.js +255 -0
  81. package/theme-chalk/code-editor-vue3/mode/coffeescript/coffeescript.js +359 -0
  82. package/theme-chalk/code-editor-vue3/mode/commonlisp/commonlisp.js +125 -0
  83. package/theme-chalk/code-editor-vue3/mode/crystal/crystal.js +433 -0
  84. package/theme-chalk/code-editor-vue3/mode/cypher/cypher.js +152 -0
  85. package/theme-chalk/code-editor-vue3/mode/d/d.js +223 -0
  86. package/theme-chalk/code-editor-vue3/mode/dart/dart.js +168 -0
  87. package/theme-chalk/code-editor-vue3/mode/diff/diff.js +47 -0
  88. package/theme-chalk/code-editor-vue3/mode/django/django.js +356 -0
  89. package/theme-chalk/code-editor-vue3/mode/dockerfile/dockerfile.js +211 -0
  90. package/theme-chalk/code-editor-vue3/mode/dtd/dtd.js +142 -0
  91. package/theme-chalk/code-editor-vue3/mode/dylan/dylan.js +352 -0
  92. package/theme-chalk/code-editor-vue3/mode/ebnf/ebnf.js +195 -0
  93. package/theme-chalk/code-editor-vue3/mode/ecl/ecl.js +206 -0
  94. package/theme-chalk/code-editor-vue3/mode/eiffel/eiffel.js +160 -0
  95. package/theme-chalk/code-editor-vue3/mode/elm/elm.js +245 -0
  96. package/theme-chalk/code-editor-vue3/mode/erlang/erlang.js +619 -0
  97. package/theme-chalk/code-editor-vue3/mode/factor/factor.js +85 -0
  98. package/theme-chalk/code-editor-vue3/mode/fcl/fcl.js +173 -0
  99. package/theme-chalk/code-editor-vue3/mode/forth/forth.js +180 -0
  100. package/theme-chalk/code-editor-vue3/mode/fortran/fortran.js +188 -0
  101. package/theme-chalk/code-editor-vue3/mode/gas/gas.js +353 -0
  102. package/theme-chalk/code-editor-vue3/mode/gfm/gfm.js +129 -0
  103. package/theme-chalk/code-editor-vue3/mode/gherkin/gherkin.js +178 -0
  104. package/theme-chalk/code-editor-vue3/mode/go/go.js +187 -0
  105. package/theme-chalk/code-editor-vue3/mode/groovy/groovy.js +245 -0
  106. package/theme-chalk/code-editor-vue3/mode/haml/haml.js +161 -0
  107. package/theme-chalk/code-editor-vue3/mode/handlebars/handlebars.js +70 -0
  108. package/theme-chalk/code-editor-vue3/mode/haskell/haskell.js +268 -0
  109. package/theme-chalk/code-editor-vue3/mode/haskell-literate/haskell-literate.js +43 -0
  110. package/theme-chalk/code-editor-vue3/mode/haxe/haxe.js +515 -0
  111. package/theme-chalk/code-editor-vue3/mode/htmlmixed/htmlmixed.js +153 -0
  112. package/theme-chalk/code-editor-vue3/mode/http/http.js +113 -0
  113. package/theme-chalk/code-editor-vue3/mode/idl/idl.js +290 -0
  114. package/theme-chalk/code-editor-vue3/mode/jinja2/jinja2.js +193 -0
  115. package/theme-chalk/code-editor-vue3/mode/julia/julia.js +390 -0
  116. package/theme-chalk/code-editor-vue3/mode/livescript/livescript.js +280 -0
  117. package/theme-chalk/code-editor-vue3/mode/lua/lua.js +160 -0
  118. package/theme-chalk/code-editor-vue3/mode/markdown/markdown.js +886 -0
  119. package/theme-chalk/code-editor-vue3/mode/mathematica/mathematica.js +176 -0
  120. package/theme-chalk/code-editor-vue3/mode/mbox/mbox.js +129 -0
  121. package/theme-chalk/code-editor-vue3/mode/meta.js +221 -0
  122. package/theme-chalk/code-editor-vue3/mode/mirc/mirc.js +193 -0
  123. package/theme-chalk/code-editor-vue3/mode/mllike/mllike.js +359 -0
  124. package/theme-chalk/code-editor-vue3/mode/modelica/modelica.js +245 -0
  125. package/theme-chalk/code-editor-vue3/mode/mscgen/mscgen.js +175 -0
  126. package/theme-chalk/code-editor-vue3/mode/mumps/mumps.js +148 -0
  127. package/theme-chalk/code-editor-vue3/mode/nginx/nginx.js +178 -0
  128. package/theme-chalk/code-editor-vue3/mode/nsis/nsis.js +95 -0
  129. package/theme-chalk/code-editor-vue3/mode/ntriples/ntriples.js +195 -0
  130. package/theme-chalk/code-editor-vue3/mode/octave/octave.js +139 -0
  131. package/theme-chalk/code-editor-vue3/mode/oz/oz.js +252 -0
  132. package/theme-chalk/code-editor-vue3/mode/pascal/pascal.js +136 -0
  133. package/theme-chalk/code-editor-vue3/mode/pegjs/pegjs.js +111 -0
  134. package/theme-chalk/code-editor-vue3/mode/perl/perl.js +836 -0
  135. package/theme-chalk/code-editor-vue3/mode/php/php.js +234 -0
  136. package/theme-chalk/code-editor-vue3/mode/pig/pig.js +178 -0
  137. package/theme-chalk/code-editor-vue3/mode/powershell/powershell.js +398 -0
  138. package/theme-chalk/code-editor-vue3/mode/properties/properties.js +78 -0
  139. package/theme-chalk/code-editor-vue3/mode/protobuf/protobuf.js +72 -0
  140. package/theme-chalk/code-editor-vue3/mode/pug/pug.js +591 -0
  141. package/theme-chalk/code-editor-vue3/mode/puppet/puppet.js +220 -0
  142. package/theme-chalk/code-editor-vue3/mode/python/python.js +402 -0
  143. package/theme-chalk/code-editor-vue3/mode/q/q.js +139 -0
  144. package/theme-chalk/code-editor-vue3/mode/r/r.js +190 -0
  145. package/theme-chalk/code-editor-vue3/mode/rpm/changes/index.html +66 -0
  146. package/theme-chalk/code-editor-vue3/mode/rpm/rpm.js +109 -0
  147. package/theme-chalk/code-editor-vue3/mode/rst/rst.js +557 -0
  148. package/theme-chalk/code-editor-vue3/mode/ruby/ruby.js +303 -0
  149. package/theme-chalk/code-editor-vue3/mode/rust/rust.js +72 -0
  150. package/theme-chalk/code-editor-vue3/mode/sas/sas.js +303 -0
  151. package/theme-chalk/code-editor-vue3/mode/sass/sass.js +459 -0
  152. package/theme-chalk/code-editor-vue3/mode/scheme/scheme.js +284 -0
  153. package/theme-chalk/code-editor-vue3/mode/shell/shell.js +168 -0
  154. package/theme-chalk/code-editor-vue3/mode/sieve/sieve.js +193 -0
  155. package/theme-chalk/code-editor-vue3/mode/slim/slim.js +575 -0
  156. package/theme-chalk/code-editor-vue3/mode/smalltalk/smalltalk.js +168 -0
  157. package/theme-chalk/code-editor-vue3/mode/smarty/smarty.js +225 -0
  158. package/theme-chalk/code-editor-vue3/mode/solr/solr.js +104 -0
  159. package/theme-chalk/code-editor-vue3/mode/soy/soy.js +665 -0
  160. package/theme-chalk/code-editor-vue3/mode/sparql/sparql.js +184 -0
  161. package/theme-chalk/code-editor-vue3/mode/spreadsheet/spreadsheet.js +112 -0
  162. package/theme-chalk/code-editor-vue3/mode/sql/sql.js +525 -0
  163. package/theme-chalk/code-editor-vue3/mode/stex/stex.js +264 -0
  164. package/theme-chalk/code-editor-vue3/mode/stylus/stylus.js +775 -0
  165. package/theme-chalk/code-editor-vue3/mode/swift/swift.js +221 -0
  166. package/theme-chalk/code-editor-vue3/mode/tcl/tcl.js +140 -0
  167. package/theme-chalk/code-editor-vue3/mode/textile/textile.js +469 -0
  168. package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.css +14 -0
  169. package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.js +308 -0
  170. package/theme-chalk/code-editor-vue3/mode/tiki/tiki.css +26 -0
  171. package/theme-chalk/code-editor-vue3/mode/tiki/tiki.js +312 -0
  172. package/theme-chalk/code-editor-vue3/mode/toml/toml.js +88 -0
  173. package/theme-chalk/code-editor-vue3/mode/tornado/tornado.js +68 -0
  174. package/theme-chalk/code-editor-vue3/mode/troff/troff.js +84 -0
  175. package/theme-chalk/code-editor-vue3/mode/ttcn/ttcn.js +283 -0
  176. package/theme-chalk/code-editor-vue3/mode/ttcn-cfg/ttcn-cfg.js +214 -0
  177. package/theme-chalk/code-editor-vue3/mode/turtle/turtle.js +162 -0
  178. package/theme-chalk/code-editor-vue3/mode/twig/twig.js +141 -0
  179. package/theme-chalk/code-editor-vue3/mode/vb/vb.js +275 -0
  180. package/theme-chalk/code-editor-vue3/mode/vbscript/vbscript.js +350 -0
  181. package/theme-chalk/code-editor-vue3/mode/velocity/velocity.js +202 -0
  182. package/theme-chalk/code-editor-vue3/mode/verilog/verilog.js +781 -0
  183. package/theme-chalk/code-editor-vue3/mode/vhdl/vhdl.js +189 -0
  184. package/theme-chalk/code-editor-vue3/mode/wast/wast.js +132 -0
  185. package/theme-chalk/code-editor-vue3/mode/webidl/webidl.js +195 -0
  186. package/theme-chalk/code-editor-vue3/mode/xml/xml.js +417 -0
  187. package/theme-chalk/code-editor-vue3/mode/xquery/xquery.js +448 -0
  188. package/theme-chalk/code-editor-vue3/mode/yacas/yacas.js +204 -0
  189. package/theme-chalk/code-editor-vue3/mode/yaml/yaml.js +120 -0
  190. package/theme-chalk/code-editor-vue3/mode/yaml-frontmatter/yaml-frontmatter.js +72 -0
  191. package/theme-chalk/code-editor-vue3/mode/z80/z80.js +116 -0
@@ -0,0 +1,417 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: https://codemirror.net/5/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
+ var htmlConfig = {
15
+ autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,
16
+ 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,
17
+ 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,
18
+ 'track': true, 'wbr': true, 'menuitem': true},
19
+ implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,
20
+ 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,
21
+ 'th': true, 'tr': true},
22
+ contextGrabbers: {
23
+ 'dd': {'dd': true, 'dt': true},
24
+ 'dt': {'dd': true, 'dt': true},
25
+ 'li': {'li': true},
26
+ 'option': {'option': true, 'optgroup': true},
27
+ 'optgroup': {'optgroup': true},
28
+ 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,
29
+ 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,
30
+ 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,
31
+ 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,
32
+ 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},
33
+ 'rp': {'rp': true, 'rt': true},
34
+ 'rt': {'rp': true, 'rt': true},
35
+ 'tbody': {'tbody': true, 'tfoot': true},
36
+ 'td': {'td': true, 'th': true},
37
+ 'tfoot': {'tbody': true},
38
+ 'th': {'td': true, 'th': true},
39
+ 'thead': {'tbody': true, 'tfoot': true},
40
+ 'tr': {'tr': true}
41
+ },
42
+ doNotIndent: {"pre": true},
43
+ allowUnquoted: true,
44
+ allowMissing: true,
45
+ caseFold: true
46
+ }
47
+
48
+ var xmlConfig = {
49
+ autoSelfClosers: {},
50
+ implicitlyClosed: {},
51
+ contextGrabbers: {},
52
+ doNotIndent: {},
53
+ allowUnquoted: false,
54
+ allowMissing: false,
55
+ allowMissingTagName: false,
56
+ caseFold: false
57
+ }
58
+
59
+ CodeMirror.defineMode("xml", function(editorConf, config_) {
60
+ var indentUnit = editorConf.indentUnit
61
+ var config = {}
62
+ var defaults = config_.htmlMode ? htmlConfig : xmlConfig
63
+ for (var prop in defaults) config[prop] = defaults[prop]
64
+ for (var prop in config_) config[prop] = config_[prop]
65
+
66
+ // Return variables for tokenizers
67
+ var type, setStyle;
68
+
69
+ function inText(stream, state) {
70
+ function chain(parser) {
71
+ state.tokenize = parser;
72
+ return parser(stream, state);
73
+ }
74
+
75
+ var ch = stream.next();
76
+ if (ch == "<") {
77
+ if (stream.eat("!")) {
78
+ if (stream.eat("[")) {
79
+ if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>"));
80
+ else return null;
81
+ } else if (stream.match("--")) {
82
+ return chain(inBlock("comment", "-->"));
83
+ } else if (stream.match("DOCTYPE", true, true)) {
84
+ stream.eatWhile(/[\w\._\-]/);
85
+ return chain(doctype(1));
86
+ } else {
87
+ return null;
88
+ }
89
+ } else if (stream.eat("?")) {
90
+ stream.eatWhile(/[\w\._\-]/);
91
+ state.tokenize = inBlock("meta", "?>");
92
+ return "meta";
93
+ } else {
94
+ type = stream.eat("/") ? "closeTag" : "openTag";
95
+ state.tokenize = inTag;
96
+ return "tag bracket";
97
+ }
98
+ } else if (ch == "&") {
99
+ var ok;
100
+ if (stream.eat("#")) {
101
+ if (stream.eat("x")) {
102
+ ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";");
103
+ } else {
104
+ ok = stream.eatWhile(/[\d]/) && stream.eat(";");
105
+ }
106
+ } else {
107
+ ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";");
108
+ }
109
+ return ok ? "atom" : "error";
110
+ } else {
111
+ stream.eatWhile(/[^&<]/);
112
+ return null;
113
+ }
114
+ }
115
+ inText.isInText = true;
116
+
117
+ function inTag(stream, state) {
118
+ var ch = stream.next();
119
+ if (ch == ">" || (ch == "/" && stream.eat(">"))) {
120
+ state.tokenize = inText;
121
+ type = ch == ">" ? "endTag" : "selfcloseTag";
122
+ return "tag bracket";
123
+ } else if (ch == "=") {
124
+ type = "equals";
125
+ return null;
126
+ } else if (ch == "<") {
127
+ state.tokenize = inText;
128
+ state.state = baseState;
129
+ state.tagName = state.tagStart = null;
130
+ var next = state.tokenize(stream, state);
131
+ return next ? next + " tag error" : "tag error";
132
+ } else if (/[\'\"]/.test(ch)) {
133
+ state.tokenize = inAttribute(ch);
134
+ state.stringStartCol = stream.column();
135
+ return state.tokenize(stream, state);
136
+ } else {
137
+ stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);
138
+ return "word";
139
+ }
140
+ }
141
+
142
+ function inAttribute(quote) {
143
+ var closure = function(stream, state) {
144
+ while (!stream.eol()) {
145
+ if (stream.next() == quote) {
146
+ state.tokenize = inTag;
147
+ break;
148
+ }
149
+ }
150
+ return "string";
151
+ };
152
+ closure.isInAttribute = true;
153
+ return closure;
154
+ }
155
+
156
+ function inBlock(style, terminator) {
157
+ return function(stream, state) {
158
+ while (!stream.eol()) {
159
+ if (stream.match(terminator)) {
160
+ state.tokenize = inText;
161
+ break;
162
+ }
163
+ stream.next();
164
+ }
165
+ return style;
166
+ }
167
+ }
168
+
169
+ function doctype(depth) {
170
+ return function(stream, state) {
171
+ var ch;
172
+ while ((ch = stream.next()) != null) {
173
+ if (ch == "<") {
174
+ state.tokenize = doctype(depth + 1);
175
+ return state.tokenize(stream, state);
176
+ } else if (ch == ">") {
177
+ if (depth == 1) {
178
+ state.tokenize = inText;
179
+ break;
180
+ } else {
181
+ state.tokenize = doctype(depth - 1);
182
+ return state.tokenize(stream, state);
183
+ }
184
+ }
185
+ }
186
+ return "meta";
187
+ };
188
+ }
189
+
190
+ function lower(tagName) {
191
+ return tagName && tagName.toLowerCase();
192
+ }
193
+
194
+ function Context(state, tagName, startOfLine) {
195
+ this.prev = state.context;
196
+ this.tagName = tagName || "";
197
+ this.indent = state.indented;
198
+ this.startOfLine = startOfLine;
199
+ if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))
200
+ this.noIndent = true;
201
+ }
202
+ function popContext(state) {
203
+ if (state.context) state.context = state.context.prev;
204
+ }
205
+ function maybePopContext(state, nextTagName) {
206
+ var parentTagName;
207
+ while (true) {
208
+ if (!state.context) {
209
+ return;
210
+ }
211
+ parentTagName = state.context.tagName;
212
+ if (!config.contextGrabbers.hasOwnProperty(lower(parentTagName)) ||
213
+ !config.contextGrabbers[lower(parentTagName)].hasOwnProperty(lower(nextTagName))) {
214
+ return;
215
+ }
216
+ popContext(state);
217
+ }
218
+ }
219
+
220
+ function baseState(type, stream, state) {
221
+ if (type == "openTag") {
222
+ state.tagStart = stream.column();
223
+ return tagNameState;
224
+ } else if (type == "closeTag") {
225
+ return closeTagNameState;
226
+ } else {
227
+ return baseState;
228
+ }
229
+ }
230
+ function tagNameState(type, stream, state) {
231
+ if (type == "word") {
232
+ state.tagName = stream.current();
233
+ setStyle = "tag";
234
+ return attrState;
235
+ } else if (config.allowMissingTagName && type == "endTag") {
236
+ setStyle = "tag bracket";
237
+ return attrState(type, stream, state);
238
+ } else {
239
+ setStyle = "error";
240
+ return tagNameState;
241
+ }
242
+ }
243
+ function closeTagNameState(type, stream, state) {
244
+ if (type == "word") {
245
+ var tagName = stream.current();
246
+ if (state.context && state.context.tagName != tagName &&
247
+ config.implicitlyClosed.hasOwnProperty(lower(state.context.tagName)))
248
+ popContext(state);
249
+ if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {
250
+ setStyle = "tag";
251
+ return closeState;
252
+ } else {
253
+ setStyle = "tag error";
254
+ return closeStateErr;
255
+ }
256
+ } else if (config.allowMissingTagName && type == "endTag") {
257
+ setStyle = "tag bracket";
258
+ return closeState(type, stream, state);
259
+ } else {
260
+ setStyle = "error";
261
+ return closeStateErr;
262
+ }
263
+ }
264
+
265
+ function closeState(type, _stream, state) {
266
+ if (type != "endTag") {
267
+ setStyle = "error";
268
+ return closeState;
269
+ }
270
+ popContext(state);
271
+ return baseState;
272
+ }
273
+ function closeStateErr(type, stream, state) {
274
+ setStyle = "error";
275
+ return closeState(type, stream, state);
276
+ }
277
+
278
+ function attrState(type, _stream, state) {
279
+ if (type == "word") {
280
+ setStyle = "attribute";
281
+ return attrEqState;
282
+ } else if (type == "endTag" || type == "selfcloseTag") {
283
+ var tagName = state.tagName, tagStart = state.tagStart;
284
+ state.tagName = state.tagStart = null;
285
+ if (type == "selfcloseTag" ||
286
+ config.autoSelfClosers.hasOwnProperty(lower(tagName))) {
287
+ maybePopContext(state, tagName);
288
+ } else {
289
+ maybePopContext(state, tagName);
290
+ state.context = new Context(state, tagName, tagStart == state.indented);
291
+ }
292
+ return baseState;
293
+ }
294
+ setStyle = "error";
295
+ return attrState;
296
+ }
297
+ function attrEqState(type, stream, state) {
298
+ if (type == "equals") return attrValueState;
299
+ if (!config.allowMissing) setStyle = "error";
300
+ return attrState(type, stream, state);
301
+ }
302
+ function attrValueState(type, stream, state) {
303
+ if (type == "string") return attrContinuedState;
304
+ if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;}
305
+ setStyle = "error";
306
+ return attrState(type, stream, state);
307
+ }
308
+ function attrContinuedState(type, stream, state) {
309
+ if (type == "string") return attrContinuedState;
310
+ return attrState(type, stream, state);
311
+ }
312
+
313
+ return {
314
+ startState: function(baseIndent) {
315
+ var state = {tokenize: inText,
316
+ state: baseState,
317
+ indented: baseIndent || 0,
318
+ tagName: null, tagStart: null,
319
+ context: null}
320
+ if (baseIndent != null) state.baseIndent = baseIndent
321
+ return state
322
+ },
323
+
324
+ token: function(stream, state) {
325
+ if (!state.tagName && stream.sol())
326
+ state.indented = stream.indentation();
327
+
328
+ if (stream.eatSpace()) return null;
329
+ type = null;
330
+ var style = state.tokenize(stream, state);
331
+ if ((style || type) && style != "comment") {
332
+ setStyle = null;
333
+ state.state = state.state(type || style, stream, state);
334
+ if (setStyle)
335
+ style = setStyle == "error" ? style + " error" : setStyle;
336
+ }
337
+ return style;
338
+ },
339
+
340
+ indent: function(state, textAfter, fullLine) {
341
+ var context = state.context;
342
+ // Indent multi-line strings (e.g. css).
343
+ if (state.tokenize.isInAttribute) {
344
+ if (state.tagStart == state.indented)
345
+ return state.stringStartCol + 1;
346
+ else
347
+ return state.indented + indentUnit;
348
+ }
349
+ if (context && context.noIndent) return CodeMirror.Pass;
350
+ if (state.tokenize != inTag && state.tokenize != inText)
351
+ return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0;
352
+ // Indent the starts of attribute names.
353
+ if (state.tagName) {
354
+ if (config.multilineTagIndentPastTag !== false)
355
+ return state.tagStart + state.tagName.length + 2;
356
+ else
357
+ return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);
358
+ }
359
+ if (config.alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0;
360
+ var tagAfter = textAfter && /^<(\/)?([\w_:\.-]*)/.exec(textAfter);
361
+ if (tagAfter && tagAfter[1]) { // Closing tag spotted
362
+ while (context) {
363
+ if (context.tagName == tagAfter[2]) {
364
+ context = context.prev;
365
+ break;
366
+ } else if (config.implicitlyClosed.hasOwnProperty(lower(context.tagName))) {
367
+ context = context.prev;
368
+ } else {
369
+ break;
370
+ }
371
+ }
372
+ } else if (tagAfter) { // Opening tag spotted
373
+ while (context) {
374
+ var grabbers = config.contextGrabbers[lower(context.tagName)];
375
+ if (grabbers && grabbers.hasOwnProperty(lower(tagAfter[2])))
376
+ context = context.prev;
377
+ else
378
+ break;
379
+ }
380
+ }
381
+ while (context && context.prev && !context.startOfLine)
382
+ context = context.prev;
383
+ if (context) return context.indent + indentUnit;
384
+ else return state.baseIndent || 0;
385
+ },
386
+
387
+ electricInput: /<\/[\s\w:]+>$/,
388
+ blockCommentStart: "<!--",
389
+ blockCommentEnd: "-->",
390
+
391
+ configuration: config.htmlMode ? "html" : "xml",
392
+ helperType: config.htmlMode ? "html" : "xml",
393
+
394
+ skipAttribute: function(state) {
395
+ if (state.state == attrValueState)
396
+ state.state = attrState
397
+ },
398
+
399
+ xmlCurrentTag: function(state) {
400
+ return state.tagName ? {name: state.tagName, close: state.type == "closeTag"} : null
401
+ },
402
+
403
+ xmlCurrentContext: function(state) {
404
+ var context = []
405
+ for (var cx = state.context; cx; cx = cx.prev)
406
+ context.push(cx.tagName)
407
+ return context.reverse()
408
+ }
409
+ };
410
+ });
411
+
412
+ CodeMirror.defineMIME("text/xml", "xml");
413
+ CodeMirror.defineMIME("application/xml", "xml");
414
+ if (!CodeMirror.mimeModes.hasOwnProperty("text/html"))
415
+ CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true});
416
+
417
+ });