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,275 @@
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
+ CodeMirror.defineMode("vb", function(conf, parserConf) {
15
+ var ERRORCLASS = 'error';
16
+
17
+ function wordRegexp(words) {
18
+ return new RegExp("^((" + words.join(")|(") + "))\\b", "i");
19
+ }
20
+
21
+ var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]");
22
+ var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]');
23
+ var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))");
24
+ var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))");
25
+ var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))");
26
+ var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*");
27
+
28
+ var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try', 'structure', 'synclock', 'using', 'with'];
29
+ var middleKeywords = ['else','elseif','case', 'catch', 'finally'];
30
+ var endKeywords = ['next','loop'];
31
+
32
+ var operatorKeywords = ['and', "andalso", 'or', 'orelse', 'xor', 'in', 'not', 'is', 'isnot', 'like'];
33
+ var wordOperators = wordRegexp(operatorKeywords);
34
+
35
+ var commonKeywords = ["#const", "#else", "#elseif", "#end", "#if", "#region", "addhandler", "addressof", "alias", "as", "byref", "byval", "cbool", "cbyte", "cchar", "cdate", "cdbl", "cdec", "cint", "clng", "cobj", "compare", "const", "continue", "csbyte", "cshort", "csng", "cstr", "cuint", "culng", "cushort", "declare", "default", "delegate", "dim", "directcast", "each", "erase", "error", "event", "exit", "explicit", "false", "for", "friend", "gettype", "goto", "handles", "implements", "imports", "infer", "inherits", "interface", "isfalse", "istrue", "lib", "me", "mod", "mustinherit", "mustoverride", "my", "mybase", "myclass", "namespace", "narrowing", "new", "nothing", "notinheritable", "notoverridable", "of", "off", "on", "operator", "option", "optional", "out", "overloads", "overridable", "overrides", "paramarray", "partial", "private", "protected", "public", "raiseevent", "readonly", "redim", "removehandler", "resume", "return", "shadows", "shared", "static", "step", "stop", "strict", "then", "throw", "to", "true", "trycast", "typeof", "until", "until", "when", "widening", "withevents", "writeonly"];
36
+
37
+ var commontypes = ['object', 'boolean', 'char', 'string', 'byte', 'sbyte', 'short', 'ushort', 'int16', 'uint16', 'integer', 'uinteger', 'int32', 'uint32', 'long', 'ulong', 'int64', 'uint64', 'decimal', 'single', 'double', 'float', 'date', 'datetime', 'intptr', 'uintptr'];
38
+
39
+ var keywords = wordRegexp(commonKeywords);
40
+ var types = wordRegexp(commontypes);
41
+ var stringPrefixes = '"';
42
+
43
+ var opening = wordRegexp(openingKeywords);
44
+ var middle = wordRegexp(middleKeywords);
45
+ var closing = wordRegexp(endKeywords);
46
+ var doubleClosing = wordRegexp(['end']);
47
+ var doOpening = wordRegexp(['do']);
48
+
49
+ var indentInfo = null;
50
+
51
+ CodeMirror.registerHelper("hintWords", "vb", openingKeywords.concat(middleKeywords).concat(endKeywords)
52
+ .concat(operatorKeywords).concat(commonKeywords).concat(commontypes));
53
+
54
+ function indent(_stream, state) {
55
+ state.currentIndent++;
56
+ }
57
+
58
+ function dedent(_stream, state) {
59
+ state.currentIndent--;
60
+ }
61
+ // tokenizers
62
+ function tokenBase(stream, state) {
63
+ if (stream.eatSpace()) {
64
+ return null;
65
+ }
66
+
67
+ var ch = stream.peek();
68
+
69
+ // Handle Comments
70
+ if (ch === "'") {
71
+ stream.skipToEnd();
72
+ return 'comment';
73
+ }
74
+
75
+
76
+ // Handle Number Literals
77
+ if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) {
78
+ var floatLiteral = false;
79
+ // Floats
80
+ if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; }
81
+ else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; }
82
+ else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; }
83
+
84
+ if (floatLiteral) {
85
+ // Float literals may be "imaginary"
86
+ stream.eat(/J/i);
87
+ return 'number';
88
+ }
89
+ // Integers
90
+ var intLiteral = false;
91
+ // Hex
92
+ if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }
93
+ // Octal
94
+ else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }
95
+ // Decimal
96
+ else if (stream.match(/^[1-9]\d*F?/)) {
97
+ // Decimal literals may be "imaginary"
98
+ stream.eat(/J/i);
99
+ // TODO - Can you have imaginary longs?
100
+ intLiteral = true;
101
+ }
102
+ // Zero by itself with no other piece of number.
103
+ else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; }
104
+ if (intLiteral) {
105
+ // Integer literals may be "long"
106
+ stream.eat(/L/i);
107
+ return 'number';
108
+ }
109
+ }
110
+
111
+ // Handle Strings
112
+ if (stream.match(stringPrefixes)) {
113
+ state.tokenize = tokenStringFactory(stream.current());
114
+ return state.tokenize(stream, state);
115
+ }
116
+
117
+ // Handle operators and Delimiters
118
+ if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) {
119
+ return null;
120
+ }
121
+ if (stream.match(doubleOperators)
122
+ || stream.match(singleOperators)
123
+ || stream.match(wordOperators)) {
124
+ return 'operator';
125
+ }
126
+ if (stream.match(singleDelimiters)) {
127
+ return null;
128
+ }
129
+ if (stream.match(doOpening)) {
130
+ indent(stream,state);
131
+ state.doInCurrentLine = true;
132
+ return 'keyword';
133
+ }
134
+ if (stream.match(opening)) {
135
+ if (! state.doInCurrentLine)
136
+ indent(stream,state);
137
+ else
138
+ state.doInCurrentLine = false;
139
+ return 'keyword';
140
+ }
141
+ if (stream.match(middle)) {
142
+ return 'keyword';
143
+ }
144
+
145
+ if (stream.match(doubleClosing)) {
146
+ dedent(stream,state);
147
+ dedent(stream,state);
148
+ return 'keyword';
149
+ }
150
+ if (stream.match(closing)) {
151
+ dedent(stream,state);
152
+ return 'keyword';
153
+ }
154
+
155
+ if (stream.match(types)) {
156
+ return 'keyword';
157
+ }
158
+
159
+ if (stream.match(keywords)) {
160
+ return 'keyword';
161
+ }
162
+
163
+ if (stream.match(identifiers)) {
164
+ return 'variable';
165
+ }
166
+
167
+ // Handle non-detected items
168
+ stream.next();
169
+ return ERRORCLASS;
170
+ }
171
+
172
+ function tokenStringFactory(delimiter) {
173
+ var singleline = delimiter.length == 1;
174
+ var OUTCLASS = 'string';
175
+
176
+ return function(stream, state) {
177
+ while (!stream.eol()) {
178
+ stream.eatWhile(/[^'"]/);
179
+ if (stream.match(delimiter)) {
180
+ state.tokenize = tokenBase;
181
+ return OUTCLASS;
182
+ } else {
183
+ stream.eat(/['"]/);
184
+ }
185
+ }
186
+ if (singleline) {
187
+ if (parserConf.singleLineStringErrors) {
188
+ return ERRORCLASS;
189
+ } else {
190
+ state.tokenize = tokenBase;
191
+ }
192
+ }
193
+ return OUTCLASS;
194
+ };
195
+ }
196
+
197
+
198
+ function tokenLexer(stream, state) {
199
+ var style = state.tokenize(stream, state);
200
+ var current = stream.current();
201
+
202
+ // Handle '.' connected identifiers
203
+ if (current === '.') {
204
+ style = state.tokenize(stream, state);
205
+ if (style === 'variable') {
206
+ return 'variable';
207
+ } else {
208
+ return ERRORCLASS;
209
+ }
210
+ }
211
+
212
+
213
+ var delimiter_index = '[({'.indexOf(current);
214
+ if (delimiter_index !== -1) {
215
+ indent(stream, state );
216
+ }
217
+ if (indentInfo === 'dedent') {
218
+ if (dedent(stream, state)) {
219
+ return ERRORCLASS;
220
+ }
221
+ }
222
+ delimiter_index = '])}'.indexOf(current);
223
+ if (delimiter_index !== -1) {
224
+ if (dedent(stream, state)) {
225
+ return ERRORCLASS;
226
+ }
227
+ }
228
+
229
+ return style;
230
+ }
231
+
232
+ var external = {
233
+ electricChars:"dDpPtTfFeE ",
234
+ startState: function() {
235
+ return {
236
+ tokenize: tokenBase,
237
+ lastToken: null,
238
+ currentIndent: 0,
239
+ nextLineIndent: 0,
240
+ doInCurrentLine: false
241
+
242
+
243
+ };
244
+ },
245
+
246
+ token: function(stream, state) {
247
+ if (stream.sol()) {
248
+ state.currentIndent += state.nextLineIndent;
249
+ state.nextLineIndent = 0;
250
+ state.doInCurrentLine = 0;
251
+ }
252
+ var style = tokenLexer(stream, state);
253
+
254
+ state.lastToken = {style:style, content: stream.current()};
255
+
256
+
257
+
258
+ return style;
259
+ },
260
+
261
+ indent: function(state, textAfter) {
262
+ var trueText = textAfter.replace(/^\s+|\s+$/g, '') ;
263
+ if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);
264
+ if(state.currentIndent < 0) return 0;
265
+ return state.currentIndent * conf.indentUnit;
266
+ },
267
+
268
+ lineComment: "'"
269
+ };
270
+ return external;
271
+ });
272
+
273
+ CodeMirror.defineMIME("text/x-vb", "vb");
274
+
275
+ });
@@ -0,0 +1,350 @@
1
+ // CodeMirror, copyright (c) by Marijn Haverbeke and others
2
+ // Distributed under an MIT license: https://codemirror.net/5/LICENSE
3
+
4
+ /*
5
+ For extra ASP classic objects, initialize CodeMirror instance with this option:
6
+ isASP: true
7
+
8
+ E.G.:
9
+ var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
10
+ lineNumbers: true,
11
+ isASP: true
12
+ });
13
+ */
14
+
15
+ (function(mod) {
16
+ if (typeof exports == "object" && typeof module == "object") // CommonJS
17
+ mod(require("../../lib/codemirror"));
18
+ else if (typeof define == "function" && define.amd) // AMD
19
+ define(["../../lib/codemirror"], mod);
20
+ else // Plain browser env
21
+ mod(CodeMirror);
22
+ })(function(CodeMirror) {
23
+ "use strict";
24
+
25
+ CodeMirror.defineMode("vbscript", function(conf, parserConf) {
26
+ var ERRORCLASS = 'error';
27
+
28
+ function wordRegexp(words) {
29
+ return new RegExp("^((" + words.join(")|(") + "))\\b", "i");
30
+ }
31
+
32
+ var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]");
33
+ var doubleOperators = new RegExp("^((<>)|(<=)|(>=))");
34
+ var singleDelimiters = new RegExp('^[\\.,]');
35
+ var brackets = new RegExp('^[\\(\\)]');
36
+ var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*");
37
+
38
+ var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for'];
39
+ var middleKeywords = ['else','elseif','case'];
40
+ var endKeywords = ['next','loop','wend'];
41
+
42
+ var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']);
43
+ var commonkeywords = ['dim', 'redim', 'then', 'until', 'randomize',
44
+ 'byval','byref','new','property', 'exit', 'in',
45
+ 'const','private', 'public',
46
+ 'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me'];
47
+
48
+ //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx
49
+ var atomWords = ['true', 'false', 'nothing', 'empty', 'null'];
50
+ //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx
51
+ var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart',
52
+ 'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject',
53
+ 'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left',
54
+ 'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round',
55
+ 'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp',
56
+ 'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year'];
57
+
58
+ //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx
59
+ var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare',
60
+ 'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek',
61
+ 'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError',
62
+ 'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2',
63
+ 'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo',
64
+ 'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse',
65
+ 'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray'];
66
+ //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx
67
+ var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp'];
68
+ var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count'];
69
+ var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit'];
70
+
71
+ var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application'];
72
+ var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response
73
+ 'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request
74
+ 'contents', 'staticobjects', //application
75
+ 'codepage', 'lcid', 'sessionid', 'timeout', //session
76
+ 'scripttimeout']; //server
77
+ var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response
78
+ 'binaryread', //request
79
+ 'remove', 'removeall', 'lock', 'unlock', //application
80
+ 'abandon', //session
81
+ 'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server
82
+
83
+ var knownWords = knownMethods.concat(knownProperties);
84
+
85
+ builtinObjsWords = builtinObjsWords.concat(builtinConsts);
86
+
87
+ if (conf.isASP){
88
+ builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords);
89
+ knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties);
90
+ };
91
+
92
+ var keywords = wordRegexp(commonkeywords);
93
+ var atoms = wordRegexp(atomWords);
94
+ var builtinFuncs = wordRegexp(builtinFuncsWords);
95
+ var builtinObjs = wordRegexp(builtinObjsWords);
96
+ var known = wordRegexp(knownWords);
97
+ var stringPrefixes = '"';
98
+
99
+ var opening = wordRegexp(openingKeywords);
100
+ var middle = wordRegexp(middleKeywords);
101
+ var closing = wordRegexp(endKeywords);
102
+ var doubleClosing = wordRegexp(['end']);
103
+ var doOpening = wordRegexp(['do']);
104
+ var noIndentWords = wordRegexp(['on error resume next', 'exit']);
105
+ var comment = wordRegexp(['rem']);
106
+
107
+
108
+ function indent(_stream, state) {
109
+ state.currentIndent++;
110
+ }
111
+
112
+ function dedent(_stream, state) {
113
+ state.currentIndent--;
114
+ }
115
+ // tokenizers
116
+ function tokenBase(stream, state) {
117
+ if (stream.eatSpace()) {
118
+ return 'space';
119
+ //return null;
120
+ }
121
+
122
+ var ch = stream.peek();
123
+
124
+ // Handle Comments
125
+ if (ch === "'") {
126
+ stream.skipToEnd();
127
+ return 'comment';
128
+ }
129
+ if (stream.match(comment)){
130
+ stream.skipToEnd();
131
+ return 'comment';
132
+ }
133
+
134
+
135
+ // Handle Number Literals
136
+ if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) {
137
+ var floatLiteral = false;
138
+ // Floats
139
+ if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; }
140
+ else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; }
141
+ else if (stream.match(/^\.\d+/)) { floatLiteral = true; }
142
+
143
+ if (floatLiteral) {
144
+ // Float literals may be "imaginary"
145
+ stream.eat(/J/i);
146
+ return 'number';
147
+ }
148
+ // Integers
149
+ var intLiteral = false;
150
+ // Hex
151
+ if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; }
152
+ // Octal
153
+ else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; }
154
+ // Decimal
155
+ else if (stream.match(/^[1-9]\d*F?/)) {
156
+ // Decimal literals may be "imaginary"
157
+ stream.eat(/J/i);
158
+ // TODO - Can you have imaginary longs?
159
+ intLiteral = true;
160
+ }
161
+ // Zero by itself with no other piece of number.
162
+ else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; }
163
+ if (intLiteral) {
164
+ // Integer literals may be "long"
165
+ stream.eat(/L/i);
166
+ return 'number';
167
+ }
168
+ }
169
+
170
+ // Handle Strings
171
+ if (stream.match(stringPrefixes)) {
172
+ state.tokenize = tokenStringFactory(stream.current());
173
+ return state.tokenize(stream, state);
174
+ }
175
+
176
+ // Handle operators and Delimiters
177
+ if (stream.match(doubleOperators)
178
+ || stream.match(singleOperators)
179
+ || stream.match(wordOperators)) {
180
+ return 'operator';
181
+ }
182
+ if (stream.match(singleDelimiters)) {
183
+ return null;
184
+ }
185
+
186
+ if (stream.match(brackets)) {
187
+ return "bracket";
188
+ }
189
+
190
+ if (stream.match(noIndentWords)) {
191
+ state.doInCurrentLine = true;
192
+
193
+ return 'keyword';
194
+ }
195
+
196
+ if (stream.match(doOpening)) {
197
+ indent(stream,state);
198
+ state.doInCurrentLine = true;
199
+
200
+ return 'keyword';
201
+ }
202
+ if (stream.match(opening)) {
203
+ if (! state.doInCurrentLine)
204
+ indent(stream,state);
205
+ else
206
+ state.doInCurrentLine = false;
207
+
208
+ return 'keyword';
209
+ }
210
+ if (stream.match(middle)) {
211
+ return 'keyword';
212
+ }
213
+
214
+
215
+ if (stream.match(doubleClosing)) {
216
+ dedent(stream,state);
217
+ dedent(stream,state);
218
+
219
+ return 'keyword';
220
+ }
221
+ if (stream.match(closing)) {
222
+ if (! state.doInCurrentLine)
223
+ dedent(stream,state);
224
+ else
225
+ state.doInCurrentLine = false;
226
+
227
+ return 'keyword';
228
+ }
229
+
230
+ if (stream.match(keywords)) {
231
+ return 'keyword';
232
+ }
233
+
234
+ if (stream.match(atoms)) {
235
+ return 'atom';
236
+ }
237
+
238
+ if (stream.match(known)) {
239
+ return 'variable-2';
240
+ }
241
+
242
+ if (stream.match(builtinFuncs)) {
243
+ return 'builtin';
244
+ }
245
+
246
+ if (stream.match(builtinObjs)){
247
+ return 'variable-2';
248
+ }
249
+
250
+ if (stream.match(identifiers)) {
251
+ return 'variable';
252
+ }
253
+
254
+ // Handle non-detected items
255
+ stream.next();
256
+ return ERRORCLASS;
257
+ }
258
+
259
+ function tokenStringFactory(delimiter) {
260
+ var singleline = delimiter.length == 1;
261
+ var OUTCLASS = 'string';
262
+
263
+ return function(stream, state) {
264
+ while (!stream.eol()) {
265
+ stream.eatWhile(/[^'"]/);
266
+ if (stream.match(delimiter)) {
267
+ state.tokenize = tokenBase;
268
+ return OUTCLASS;
269
+ } else {
270
+ stream.eat(/['"]/);
271
+ }
272
+ }
273
+ if (singleline) {
274
+ if (parserConf.singleLineStringErrors) {
275
+ return ERRORCLASS;
276
+ } else {
277
+ state.tokenize = tokenBase;
278
+ }
279
+ }
280
+ return OUTCLASS;
281
+ };
282
+ }
283
+
284
+
285
+ function tokenLexer(stream, state) {
286
+ var style = state.tokenize(stream, state);
287
+ var current = stream.current();
288
+
289
+ // Handle '.' connected identifiers
290
+ if (current === '.') {
291
+ style = state.tokenize(stream, state);
292
+
293
+ current = stream.current();
294
+ if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) {
295
+ if (style === 'builtin' || style === 'keyword') style='variable';
296
+ if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2';
297
+
298
+ return style;
299
+ } else {
300
+ return ERRORCLASS;
301
+ }
302
+ }
303
+
304
+ return style;
305
+ }
306
+
307
+ var external = {
308
+ electricChars:"dDpPtTfFeE ",
309
+ startState: function() {
310
+ return {
311
+ tokenize: tokenBase,
312
+ lastToken: null,
313
+ currentIndent: 0,
314
+ nextLineIndent: 0,
315
+ doInCurrentLine: false,
316
+ ignoreKeyword: false
317
+
318
+
319
+ };
320
+ },
321
+
322
+ token: function(stream, state) {
323
+ if (stream.sol()) {
324
+ state.currentIndent += state.nextLineIndent;
325
+ state.nextLineIndent = 0;
326
+ state.doInCurrentLine = 0;
327
+ }
328
+ var style = tokenLexer(stream, state);
329
+
330
+ state.lastToken = {style:style, content: stream.current()};
331
+
332
+ if (style==='space') style=null;
333
+
334
+ return style;
335
+ },
336
+
337
+ indent: function(state, textAfter) {
338
+ var trueText = textAfter.replace(/^\s+|\s+$/g, '') ;
339
+ if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1);
340
+ if(state.currentIndent < 0) return 0;
341
+ return state.currentIndent * conf.indentUnit;
342
+ }
343
+
344
+ };
345
+ return external;
346
+ });
347
+
348
+ CodeMirror.defineMIME("text/vbscript", "vbscript");
349
+
350
+ });