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.
- package/package.json +1 -1
- package/theme-chalk/code-editor-vue3/addon/comment/comment.js +211 -0
- package/theme-chalk/code-editor-vue3/addon/comment/continuecomment.js +114 -0
- package/theme-chalk/code-editor-vue3/addon/dialog/dialog.css +32 -0
- package/theme-chalk/code-editor-vue3/addon/dialog/dialog.js +163 -0
- package/theme-chalk/code-editor-vue3/addon/display/autorefresh.js +47 -0
- package/theme-chalk/code-editor-vue3/addon/display/fullscreen.css +6 -0
- package/theme-chalk/code-editor-vue3/addon/display/fullscreen.js +41 -0
- package/theme-chalk/code-editor-vue3/addon/display/panel.js +133 -0
- package/theme-chalk/code-editor-vue3/addon/display/placeholder.js +78 -0
- package/theme-chalk/code-editor-vue3/addon/display/rulers.js +51 -0
- package/theme-chalk/code-editor-vue3/addon/edit/closebrackets.js +201 -0
- package/theme-chalk/code-editor-vue3/addon/edit/closetag.js +185 -0
- package/theme-chalk/code-editor-vue3/addon/edit/continuelist.js +101 -0
- package/theme-chalk/code-editor-vue3/addon/edit/matchbrackets.js +160 -0
- package/theme-chalk/code-editor-vue3/addon/edit/matchtags.js +66 -0
- package/theme-chalk/code-editor-vue3/addon/edit/trailingspace.js +27 -0
- package/theme-chalk/code-editor-vue3/addon/fold/brace-fold.js +119 -0
- package/theme-chalk/code-editor-vue3/addon/fold/comment-fold.js +59 -0
- package/theme-chalk/code-editor-vue3/addon/fold/foldcode.js +159 -0
- package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.css +20 -0
- package/theme-chalk/code-editor-vue3/addon/fold/foldgutter.js +169 -0
- package/theme-chalk/code-editor-vue3/addon/fold/indent-fold.js +48 -0
- package/theme-chalk/code-editor-vue3/addon/fold/markdown-fold.js +49 -0
- package/theme-chalk/code-editor-vue3/addon/fold/xml-fold.js +184 -0
- package/theme-chalk/code-editor-vue3/addon/hint/anyword-hint.js +41 -0
- package/theme-chalk/code-editor-vue3/addon/hint/css-hint.js +66 -0
- package/theme-chalk/code-editor-vue3/addon/hint/html-hint.js +351 -0
- package/theme-chalk/code-editor-vue3/addon/hint/javascript-hint.js +162 -0
- package/theme-chalk/code-editor-vue3/addon/hint/show-hint.css +37 -0
- package/theme-chalk/code-editor-vue3/addon/hint/show-hint.js +523 -0
- package/theme-chalk/code-editor-vue3/addon/hint/sql-hint.js +304 -0
- package/theme-chalk/code-editor-vue3/addon/hint/xml-hint.js +132 -0
- package/theme-chalk/code-editor-vue3/addon/lint/coffeescript-lint.js +47 -0
- package/theme-chalk/code-editor-vue3/addon/lint/css-lint.js +40 -0
- package/theme-chalk/code-editor-vue3/addon/lint/html-lint.js +59 -0
- package/theme-chalk/code-editor-vue3/addon/lint/javascript-lint.js +65 -0
- package/theme-chalk/code-editor-vue3/addon/lint/json-lint.js +40 -0
- package/theme-chalk/code-editor-vue3/addon/lint/lint.css +79 -0
- package/theme-chalk/code-editor-vue3/addon/lint/lint.js +288 -0
- package/theme-chalk/code-editor-vue3/addon/lint/yaml-lint.js +41 -0
- package/theme-chalk/code-editor-vue3/addon/merge/merge.css +119 -0
- package/theme-chalk/code-editor-vue3/addon/merge/merge.js +1018 -0
- package/theme-chalk/code-editor-vue3/addon/mode/loadmode.js +66 -0
- package/theme-chalk/code-editor-vue3/addon/mode/multiplex.js +136 -0
- package/theme-chalk/code-editor-vue3/addon/mode/multiplex_test.js +49 -0
- package/theme-chalk/code-editor-vue3/addon/mode/overlay.js +90 -0
- package/theme-chalk/code-editor-vue3/addon/mode/simple.js +216 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/colorize.js +40 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/runmode-standalone.js +334 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/runmode.js +76 -0
- package/theme-chalk/code-editor-vue3/addon/runmode/runmode.node.js +329 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/annotatescrollbar.js +128 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/scrollpastend.js +48 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.css +66 -0
- package/theme-chalk/code-editor-vue3/addon/scroll/simplescrollbars.js +152 -0
- package/theme-chalk/code-editor-vue3/addon/search/jump-to-line.js +53 -0
- package/theme-chalk/code-editor-vue3/addon/search/match-highlighter.js +167 -0
- package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.css +8 -0
- package/theme-chalk/code-editor-vue3/addon/search/matchesonscrollbar.js +97 -0
- package/theme-chalk/code-editor-vue3/addon/search/search.js +295 -0
- package/theme-chalk/code-editor-vue3/addon/search/searchcursor.js +305 -0
- package/theme-chalk/code-editor-vue3/addon/selection/active-line.js +72 -0
- package/theme-chalk/code-editor-vue3/addon/selection/mark-selection.js +119 -0
- package/theme-chalk/code-editor-vue3/addon/selection/selection-pointer.js +98 -0
- package/theme-chalk/code-editor-vue3/addon/tern/tern.css +87 -0
- package/theme-chalk/code-editor-vue3/addon/tern/tern.js +756 -0
- package/theme-chalk/code-editor-vue3/addon/tern/worker.js +44 -0
- package/theme-chalk/code-editor-vue3/addon/wrap/hardwrap.js +160 -0
- package/theme-chalk/code-editor-vue3/lib/codemirror.css +344 -0
- package/theme-chalk/code-editor-vue3/lib/codemirror.js +9884 -0
- package/theme-chalk/code-editor-vue3/mode/apl/apl.js +174 -0
- package/theme-chalk/code-editor-vue3/mode/asciiarmor/asciiarmor.js +74 -0
- package/theme-chalk/code-editor-vue3/mode/asn.1/asn.1.js +204 -0
- package/theme-chalk/code-editor-vue3/mode/asterisk/asterisk.js +220 -0
- package/theme-chalk/code-editor-vue3/mode/brainfuck/brainfuck.js +85 -0
- package/theme-chalk/code-editor-vue3/mode/clike/clike.js +942 -0
- package/theme-chalk/code-editor-vue3/mode/clojure/clojure.js +293 -0
- package/theme-chalk/code-editor-vue3/mode/cmake/cmake.js +97 -0
- package/theme-chalk/code-editor-vue3/mode/cobol/cobol.js +255 -0
- package/theme-chalk/code-editor-vue3/mode/coffeescript/coffeescript.js +359 -0
- package/theme-chalk/code-editor-vue3/mode/commonlisp/commonlisp.js +125 -0
- package/theme-chalk/code-editor-vue3/mode/crystal/crystal.js +433 -0
- package/theme-chalk/code-editor-vue3/mode/cypher/cypher.js +152 -0
- package/theme-chalk/code-editor-vue3/mode/d/d.js +223 -0
- package/theme-chalk/code-editor-vue3/mode/dart/dart.js +168 -0
- package/theme-chalk/code-editor-vue3/mode/diff/diff.js +47 -0
- package/theme-chalk/code-editor-vue3/mode/django/django.js +356 -0
- package/theme-chalk/code-editor-vue3/mode/dockerfile/dockerfile.js +211 -0
- package/theme-chalk/code-editor-vue3/mode/dtd/dtd.js +142 -0
- package/theme-chalk/code-editor-vue3/mode/dylan/dylan.js +352 -0
- package/theme-chalk/code-editor-vue3/mode/ebnf/ebnf.js +195 -0
- package/theme-chalk/code-editor-vue3/mode/ecl/ecl.js +206 -0
- package/theme-chalk/code-editor-vue3/mode/eiffel/eiffel.js +160 -0
- package/theme-chalk/code-editor-vue3/mode/elm/elm.js +245 -0
- package/theme-chalk/code-editor-vue3/mode/erlang/erlang.js +619 -0
- package/theme-chalk/code-editor-vue3/mode/factor/factor.js +85 -0
- package/theme-chalk/code-editor-vue3/mode/fcl/fcl.js +173 -0
- package/theme-chalk/code-editor-vue3/mode/forth/forth.js +180 -0
- package/theme-chalk/code-editor-vue3/mode/fortran/fortran.js +188 -0
- package/theme-chalk/code-editor-vue3/mode/gas/gas.js +353 -0
- package/theme-chalk/code-editor-vue3/mode/gfm/gfm.js +129 -0
- package/theme-chalk/code-editor-vue3/mode/gherkin/gherkin.js +178 -0
- package/theme-chalk/code-editor-vue3/mode/go/go.js +187 -0
- package/theme-chalk/code-editor-vue3/mode/groovy/groovy.js +245 -0
- package/theme-chalk/code-editor-vue3/mode/haml/haml.js +161 -0
- package/theme-chalk/code-editor-vue3/mode/handlebars/handlebars.js +70 -0
- package/theme-chalk/code-editor-vue3/mode/haskell/haskell.js +268 -0
- package/theme-chalk/code-editor-vue3/mode/haskell-literate/haskell-literate.js +43 -0
- package/theme-chalk/code-editor-vue3/mode/haxe/haxe.js +515 -0
- package/theme-chalk/code-editor-vue3/mode/htmlmixed/htmlmixed.js +153 -0
- package/theme-chalk/code-editor-vue3/mode/http/http.js +113 -0
- package/theme-chalk/code-editor-vue3/mode/idl/idl.js +290 -0
- package/theme-chalk/code-editor-vue3/mode/jinja2/jinja2.js +193 -0
- package/theme-chalk/code-editor-vue3/mode/julia/julia.js +390 -0
- package/theme-chalk/code-editor-vue3/mode/livescript/livescript.js +280 -0
- package/theme-chalk/code-editor-vue3/mode/lua/lua.js +160 -0
- package/theme-chalk/code-editor-vue3/mode/markdown/markdown.js +886 -0
- package/theme-chalk/code-editor-vue3/mode/mathematica/mathematica.js +176 -0
- package/theme-chalk/code-editor-vue3/mode/mbox/mbox.js +129 -0
- package/theme-chalk/code-editor-vue3/mode/meta.js +221 -0
- package/theme-chalk/code-editor-vue3/mode/mirc/mirc.js +193 -0
- package/theme-chalk/code-editor-vue3/mode/mllike/mllike.js +359 -0
- package/theme-chalk/code-editor-vue3/mode/modelica/modelica.js +245 -0
- package/theme-chalk/code-editor-vue3/mode/mscgen/mscgen.js +175 -0
- package/theme-chalk/code-editor-vue3/mode/mumps/mumps.js +148 -0
- package/theme-chalk/code-editor-vue3/mode/nginx/nginx.js +178 -0
- package/theme-chalk/code-editor-vue3/mode/nsis/nsis.js +95 -0
- package/theme-chalk/code-editor-vue3/mode/ntriples/ntriples.js +195 -0
- package/theme-chalk/code-editor-vue3/mode/octave/octave.js +139 -0
- package/theme-chalk/code-editor-vue3/mode/oz/oz.js +252 -0
- package/theme-chalk/code-editor-vue3/mode/pascal/pascal.js +136 -0
- package/theme-chalk/code-editor-vue3/mode/pegjs/pegjs.js +111 -0
- package/theme-chalk/code-editor-vue3/mode/perl/perl.js +836 -0
- package/theme-chalk/code-editor-vue3/mode/php/php.js +234 -0
- package/theme-chalk/code-editor-vue3/mode/pig/pig.js +178 -0
- package/theme-chalk/code-editor-vue3/mode/powershell/powershell.js +398 -0
- package/theme-chalk/code-editor-vue3/mode/properties/properties.js +78 -0
- package/theme-chalk/code-editor-vue3/mode/protobuf/protobuf.js +72 -0
- package/theme-chalk/code-editor-vue3/mode/pug/pug.js +591 -0
- package/theme-chalk/code-editor-vue3/mode/puppet/puppet.js +220 -0
- package/theme-chalk/code-editor-vue3/mode/python/python.js +402 -0
- package/theme-chalk/code-editor-vue3/mode/q/q.js +139 -0
- package/theme-chalk/code-editor-vue3/mode/r/r.js +190 -0
- package/theme-chalk/code-editor-vue3/mode/rpm/changes/index.html +66 -0
- package/theme-chalk/code-editor-vue3/mode/rpm/rpm.js +109 -0
- package/theme-chalk/code-editor-vue3/mode/rst/rst.js +557 -0
- package/theme-chalk/code-editor-vue3/mode/ruby/ruby.js +303 -0
- package/theme-chalk/code-editor-vue3/mode/rust/rust.js +72 -0
- package/theme-chalk/code-editor-vue3/mode/sas/sas.js +303 -0
- package/theme-chalk/code-editor-vue3/mode/sass/sass.js +459 -0
- package/theme-chalk/code-editor-vue3/mode/scheme/scheme.js +284 -0
- package/theme-chalk/code-editor-vue3/mode/shell/shell.js +168 -0
- package/theme-chalk/code-editor-vue3/mode/sieve/sieve.js +193 -0
- package/theme-chalk/code-editor-vue3/mode/slim/slim.js +575 -0
- package/theme-chalk/code-editor-vue3/mode/smalltalk/smalltalk.js +168 -0
- package/theme-chalk/code-editor-vue3/mode/smarty/smarty.js +225 -0
- package/theme-chalk/code-editor-vue3/mode/solr/solr.js +104 -0
- package/theme-chalk/code-editor-vue3/mode/soy/soy.js +665 -0
- package/theme-chalk/code-editor-vue3/mode/sparql/sparql.js +184 -0
- package/theme-chalk/code-editor-vue3/mode/spreadsheet/spreadsheet.js +112 -0
- package/theme-chalk/code-editor-vue3/mode/sql/sql.js +525 -0
- package/theme-chalk/code-editor-vue3/mode/stex/stex.js +264 -0
- package/theme-chalk/code-editor-vue3/mode/stylus/stylus.js +775 -0
- package/theme-chalk/code-editor-vue3/mode/swift/swift.js +221 -0
- package/theme-chalk/code-editor-vue3/mode/tcl/tcl.js +140 -0
- package/theme-chalk/code-editor-vue3/mode/textile/textile.js +469 -0
- package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.css +14 -0
- package/theme-chalk/code-editor-vue3/mode/tiddlywiki/tiddlywiki.js +308 -0
- package/theme-chalk/code-editor-vue3/mode/tiki/tiki.css +26 -0
- package/theme-chalk/code-editor-vue3/mode/tiki/tiki.js +312 -0
- package/theme-chalk/code-editor-vue3/mode/toml/toml.js +88 -0
- package/theme-chalk/code-editor-vue3/mode/tornado/tornado.js +68 -0
- package/theme-chalk/code-editor-vue3/mode/troff/troff.js +84 -0
- package/theme-chalk/code-editor-vue3/mode/ttcn/ttcn.js +283 -0
- package/theme-chalk/code-editor-vue3/mode/ttcn-cfg/ttcn-cfg.js +214 -0
- package/theme-chalk/code-editor-vue3/mode/turtle/turtle.js +162 -0
- package/theme-chalk/code-editor-vue3/mode/twig/twig.js +141 -0
- package/theme-chalk/code-editor-vue3/mode/vb/vb.js +275 -0
- package/theme-chalk/code-editor-vue3/mode/vbscript/vbscript.js +350 -0
- package/theme-chalk/code-editor-vue3/mode/velocity/velocity.js +202 -0
- package/theme-chalk/code-editor-vue3/mode/verilog/verilog.js +781 -0
- package/theme-chalk/code-editor-vue3/mode/vhdl/vhdl.js +189 -0
- package/theme-chalk/code-editor-vue3/mode/wast/wast.js +132 -0
- package/theme-chalk/code-editor-vue3/mode/webidl/webidl.js +195 -0
- package/theme-chalk/code-editor-vue3/mode/xml/xml.js +417 -0
- package/theme-chalk/code-editor-vue3/mode/xquery/xquery.js +448 -0
- package/theme-chalk/code-editor-vue3/mode/yacas/yacas.js +204 -0
- package/theme-chalk/code-editor-vue3/mode/yaml/yaml.js +120 -0
- package/theme-chalk/code-editor-vue3/mode/yaml-frontmatter/yaml-frontmatter.js +72 -0
- package/theme-chalk/code-editor-vue3/mode/z80/z80.js +116 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
// CodeMirror, copyright (c) by Marijn Haverbeke and others
|
|
2
|
+
// Distributed under an MIT license: https://codemirror.net/5/LICENSE
|
|
3
|
+
|
|
4
|
+
/***
|
|
5
|
+
|''Name''|tiddlywiki.js|
|
|
6
|
+
|''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror|
|
|
7
|
+
|''Author''|PMario|
|
|
8
|
+
|''Version''|0.1.7|
|
|
9
|
+
|''Status''|''stable''|
|
|
10
|
+
|''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]|
|
|
11
|
+
|''Documentation''|https://codemirror.tiddlyspace.com/|
|
|
12
|
+
|''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]|
|
|
13
|
+
|''CoreVersion''|2.5.0|
|
|
14
|
+
|''Requires''|codemirror.js|
|
|
15
|
+
|''Keywords''|syntax highlighting color code mirror codemirror|
|
|
16
|
+
! Info
|
|
17
|
+
CoreVersion parameter is needed for TiddlyWiki only!
|
|
18
|
+
***/
|
|
19
|
+
|
|
20
|
+
(function(mod) {
|
|
21
|
+
if (typeof exports == "object" && typeof module == "object") // CommonJS
|
|
22
|
+
mod(require("../../lib/codemirror"));
|
|
23
|
+
else if (typeof define == "function" && define.amd) // AMD
|
|
24
|
+
define(["../../lib/codemirror"], mod);
|
|
25
|
+
else // Plain browser env
|
|
26
|
+
mod(CodeMirror);
|
|
27
|
+
})(function(CodeMirror) {
|
|
28
|
+
"use strict";
|
|
29
|
+
|
|
30
|
+
CodeMirror.defineMode("tiddlywiki", function () {
|
|
31
|
+
// Tokenizer
|
|
32
|
+
var textwords = {};
|
|
33
|
+
|
|
34
|
+
var keywords = {
|
|
35
|
+
"allTags": true, "closeAll": true, "list": true,
|
|
36
|
+
"newJournal": true, "newTiddler": true,
|
|
37
|
+
"permaview": true, "saveChanges": true,
|
|
38
|
+
"search": true, "slider": true, "tabs": true,
|
|
39
|
+
"tag": true, "tagging": true, "tags": true,
|
|
40
|
+
"tiddler": true, "timeline": true,
|
|
41
|
+
"today": true, "version": true, "option": true,
|
|
42
|
+
"with": true, "filter": true
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var isSpaceName = /[\w_\-]/i,
|
|
46
|
+
reHR = /^\-\-\-\-+$/, // <hr>
|
|
47
|
+
reWikiCommentStart = /^\/\*\*\*$/, // /***
|
|
48
|
+
reWikiCommentStop = /^\*\*\*\/$/, // ***/
|
|
49
|
+
reBlockQuote = /^<<<$/,
|
|
50
|
+
|
|
51
|
+
reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start
|
|
52
|
+
reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop
|
|
53
|
+
reXmlCodeStart = /^<!--\{\{\{-->$/, // xml block start
|
|
54
|
+
reXmlCodeStop = /^<!--\}\}\}-->$/, // xml stop
|
|
55
|
+
|
|
56
|
+
reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start
|
|
57
|
+
reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop
|
|
58
|
+
|
|
59
|
+
reUntilCodeStop = /.*?\}\}\}/;
|
|
60
|
+
|
|
61
|
+
function chain(stream, state, f) {
|
|
62
|
+
state.tokenize = f;
|
|
63
|
+
return f(stream, state);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function tokenBase(stream, state) {
|
|
67
|
+
var sol = stream.sol(), ch = stream.peek();
|
|
68
|
+
|
|
69
|
+
state.block = false; // indicates the start of a code block.
|
|
70
|
+
|
|
71
|
+
// check start of blocks
|
|
72
|
+
if (sol && /[<\/\*{}\-]/.test(ch)) {
|
|
73
|
+
if (stream.match(reCodeBlockStart)) {
|
|
74
|
+
state.block = true;
|
|
75
|
+
return chain(stream, state, twTokenCode);
|
|
76
|
+
}
|
|
77
|
+
if (stream.match(reBlockQuote))
|
|
78
|
+
return 'quote';
|
|
79
|
+
if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop))
|
|
80
|
+
return 'comment';
|
|
81
|
+
if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop))
|
|
82
|
+
return 'comment';
|
|
83
|
+
if (stream.match(reHR))
|
|
84
|
+
return 'hr';
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
stream.next();
|
|
88
|
+
if (sol && /[\/\*!#;:>|]/.test(ch)) {
|
|
89
|
+
if (ch == "!") { // tw header
|
|
90
|
+
stream.skipToEnd();
|
|
91
|
+
return "header";
|
|
92
|
+
}
|
|
93
|
+
if (ch == "*") { // tw list
|
|
94
|
+
stream.eatWhile('*');
|
|
95
|
+
return "comment";
|
|
96
|
+
}
|
|
97
|
+
if (ch == "#") { // tw numbered list
|
|
98
|
+
stream.eatWhile('#');
|
|
99
|
+
return "comment";
|
|
100
|
+
}
|
|
101
|
+
if (ch == ";") { // definition list, term
|
|
102
|
+
stream.eatWhile(';');
|
|
103
|
+
return "comment";
|
|
104
|
+
}
|
|
105
|
+
if (ch == ":") { // definition list, description
|
|
106
|
+
stream.eatWhile(':');
|
|
107
|
+
return "comment";
|
|
108
|
+
}
|
|
109
|
+
if (ch == ">") { // single line quote
|
|
110
|
+
stream.eatWhile(">");
|
|
111
|
+
return "quote";
|
|
112
|
+
}
|
|
113
|
+
if (ch == '|')
|
|
114
|
+
return 'header';
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (ch == '{' && stream.match('{{'))
|
|
118
|
+
return chain(stream, state, twTokenCode);
|
|
119
|
+
|
|
120
|
+
// rudimentary html:// file:// link matching. TW knows much more ...
|
|
121
|
+
if (/[hf]/i.test(ch) &&
|
|
122
|
+
/[ti]/i.test(stream.peek()) &&
|
|
123
|
+
stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i))
|
|
124
|
+
return "link";
|
|
125
|
+
|
|
126
|
+
// just a little string indicator, don't want to have the whole string covered
|
|
127
|
+
if (ch == '"')
|
|
128
|
+
return 'string';
|
|
129
|
+
|
|
130
|
+
if (ch == '~') // _no_ CamelCase indicator should be bold
|
|
131
|
+
return 'brace';
|
|
132
|
+
|
|
133
|
+
if (/[\[\]]/.test(ch) && stream.match(ch)) // check for [[..]]
|
|
134
|
+
return 'brace';
|
|
135
|
+
|
|
136
|
+
if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting
|
|
137
|
+
stream.eatWhile(isSpaceName);
|
|
138
|
+
return "link";
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (/\d/.test(ch)) { // numbers
|
|
142
|
+
stream.eatWhile(/\d/);
|
|
143
|
+
return "number";
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (ch == "/") { // tw invisible comment
|
|
147
|
+
if (stream.eat("%")) {
|
|
148
|
+
return chain(stream, state, twTokenComment);
|
|
149
|
+
} else if (stream.eat("/")) { //
|
|
150
|
+
return chain(stream, state, twTokenEm);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (ch == "_" && stream.eat("_")) // tw underline
|
|
155
|
+
return chain(stream, state, twTokenUnderline);
|
|
156
|
+
|
|
157
|
+
// strikethrough and mdash handling
|
|
158
|
+
if (ch == "-" && stream.eat("-")) {
|
|
159
|
+
// if strikethrough looks ugly, change CSS.
|
|
160
|
+
if (stream.peek() != ' ')
|
|
161
|
+
return chain(stream, state, twTokenStrike);
|
|
162
|
+
// mdash
|
|
163
|
+
if (stream.peek() == ' ')
|
|
164
|
+
return 'brace';
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
if (ch == "'" && stream.eat("'")) // tw bold
|
|
168
|
+
return chain(stream, state, twTokenStrong);
|
|
169
|
+
|
|
170
|
+
if (ch == "<" && stream.eat("<")) // tw macro
|
|
171
|
+
return chain(stream, state, twTokenMacro);
|
|
172
|
+
|
|
173
|
+
// core macro handling
|
|
174
|
+
stream.eatWhile(/[\w\$_]/);
|
|
175
|
+
return textwords.propertyIsEnumerable(stream.current()) ? "keyword" : null
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// tw invisible comment
|
|
179
|
+
function twTokenComment(stream, state) {
|
|
180
|
+
var maybeEnd = false, ch;
|
|
181
|
+
while (ch = stream.next()) {
|
|
182
|
+
if (ch == "/" && maybeEnd) {
|
|
183
|
+
state.tokenize = tokenBase;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
maybeEnd = (ch == "%");
|
|
187
|
+
}
|
|
188
|
+
return "comment";
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// tw strong / bold
|
|
192
|
+
function twTokenStrong(stream, state) {
|
|
193
|
+
var maybeEnd = false,
|
|
194
|
+
ch;
|
|
195
|
+
while (ch = stream.next()) {
|
|
196
|
+
if (ch == "'" && maybeEnd) {
|
|
197
|
+
state.tokenize = tokenBase;
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
maybeEnd = (ch == "'");
|
|
201
|
+
}
|
|
202
|
+
return "strong";
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// tw code
|
|
206
|
+
function twTokenCode(stream, state) {
|
|
207
|
+
var sb = state.block;
|
|
208
|
+
|
|
209
|
+
if (sb && stream.current()) {
|
|
210
|
+
return "comment";
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (!sb && stream.match(reUntilCodeStop)) {
|
|
214
|
+
state.tokenize = tokenBase;
|
|
215
|
+
return "comment";
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (sb && stream.sol() && stream.match(reCodeBlockStop)) {
|
|
219
|
+
state.tokenize = tokenBase;
|
|
220
|
+
return "comment";
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
stream.next();
|
|
224
|
+
return "comment";
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// tw em / italic
|
|
228
|
+
function twTokenEm(stream, state) {
|
|
229
|
+
var maybeEnd = false,
|
|
230
|
+
ch;
|
|
231
|
+
while (ch = stream.next()) {
|
|
232
|
+
if (ch == "/" && maybeEnd) {
|
|
233
|
+
state.tokenize = tokenBase;
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
maybeEnd = (ch == "/");
|
|
237
|
+
}
|
|
238
|
+
return "em";
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// tw underlined text
|
|
242
|
+
function twTokenUnderline(stream, state) {
|
|
243
|
+
var maybeEnd = false,
|
|
244
|
+
ch;
|
|
245
|
+
while (ch = stream.next()) {
|
|
246
|
+
if (ch == "_" && maybeEnd) {
|
|
247
|
+
state.tokenize = tokenBase;
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
maybeEnd = (ch == "_");
|
|
251
|
+
}
|
|
252
|
+
return "underlined";
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// tw strike through text looks ugly
|
|
256
|
+
// change CSS if needed
|
|
257
|
+
function twTokenStrike(stream, state) {
|
|
258
|
+
var maybeEnd = false, ch;
|
|
259
|
+
|
|
260
|
+
while (ch = stream.next()) {
|
|
261
|
+
if (ch == "-" && maybeEnd) {
|
|
262
|
+
state.tokenize = tokenBase;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
maybeEnd = (ch == "-");
|
|
266
|
+
}
|
|
267
|
+
return "strikethrough";
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// macro
|
|
271
|
+
function twTokenMacro(stream, state) {
|
|
272
|
+
if (stream.current() == '<<') {
|
|
273
|
+
return 'macro';
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
var ch = stream.next();
|
|
277
|
+
if (!ch) {
|
|
278
|
+
state.tokenize = tokenBase;
|
|
279
|
+
return null;
|
|
280
|
+
}
|
|
281
|
+
if (ch == ">") {
|
|
282
|
+
if (stream.peek() == '>') {
|
|
283
|
+
stream.next();
|
|
284
|
+
state.tokenize = tokenBase;
|
|
285
|
+
return "macro";
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
stream.eatWhile(/[\w\$_]/);
|
|
290
|
+
return keywords.propertyIsEnumerable(stream.current()) ? "keyword" : null
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// Interface
|
|
294
|
+
return {
|
|
295
|
+
startState: function () {
|
|
296
|
+
return {tokenize: tokenBase};
|
|
297
|
+
},
|
|
298
|
+
|
|
299
|
+
token: function (stream, state) {
|
|
300
|
+
if (stream.eatSpace()) return null;
|
|
301
|
+
var style = state.tokenize(stream, state);
|
|
302
|
+
return style;
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki");
|
|
308
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.cm-tw-syntaxerror {
|
|
2
|
+
color: #FFF;
|
|
3
|
+
background-color: #900;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.cm-tw-deleted {
|
|
7
|
+
text-decoration: line-through;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.cm-tw-header5 {
|
|
11
|
+
font-weight: bold;
|
|
12
|
+
}
|
|
13
|
+
.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/
|
|
14
|
+
padding-left: 10px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.cm-tw-box {
|
|
18
|
+
border-top-width: 0px !important;
|
|
19
|
+
border-style: solid;
|
|
20
|
+
border-width: 1px;
|
|
21
|
+
border-color: inherit;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.cm-tw-underline {
|
|
25
|
+
text-decoration: underline;
|
|
26
|
+
}
|
|
@@ -0,0 +1,312 @@
|
|
|
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('tiki', function(config) {
|
|
15
|
+
function inBlock(style, terminator, returnTokenizer) {
|
|
16
|
+
return function(stream, state) {
|
|
17
|
+
while (!stream.eol()) {
|
|
18
|
+
if (stream.match(terminator)) {
|
|
19
|
+
state.tokenize = inText;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
stream.next();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (returnTokenizer) state.tokenize = returnTokenizer;
|
|
26
|
+
|
|
27
|
+
return style;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function inLine(style) {
|
|
32
|
+
return function(stream, state) {
|
|
33
|
+
while(!stream.eol()) {
|
|
34
|
+
stream.next();
|
|
35
|
+
}
|
|
36
|
+
state.tokenize = inText;
|
|
37
|
+
return style;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function inText(stream, state) {
|
|
42
|
+
function chain(parser) {
|
|
43
|
+
state.tokenize = parser;
|
|
44
|
+
return parser(stream, state);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
var sol = stream.sol();
|
|
48
|
+
var ch = stream.next();
|
|
49
|
+
|
|
50
|
+
//non start of line
|
|
51
|
+
switch (ch) { //switch is generally much faster than if, so it is used here
|
|
52
|
+
case "{": //plugin
|
|
53
|
+
stream.eat("/");
|
|
54
|
+
stream.eatSpace();
|
|
55
|
+
stream.eatWhile(/[^\s\u00a0=\"\'\/?(}]/);
|
|
56
|
+
state.tokenize = inPlugin;
|
|
57
|
+
return "tag";
|
|
58
|
+
case "_": //bold
|
|
59
|
+
if (stream.eat("_"))
|
|
60
|
+
return chain(inBlock("strong", "__", inText));
|
|
61
|
+
break;
|
|
62
|
+
case "'": //italics
|
|
63
|
+
if (stream.eat("'"))
|
|
64
|
+
return chain(inBlock("em", "''", inText));
|
|
65
|
+
break;
|
|
66
|
+
case "(":// Wiki Link
|
|
67
|
+
if (stream.eat("("))
|
|
68
|
+
return chain(inBlock("variable-2", "))", inText));
|
|
69
|
+
break;
|
|
70
|
+
case "[":// Weblink
|
|
71
|
+
return chain(inBlock("variable-3", "]", inText));
|
|
72
|
+
break;
|
|
73
|
+
case "|": //table
|
|
74
|
+
if (stream.eat("|"))
|
|
75
|
+
return chain(inBlock("comment", "||"));
|
|
76
|
+
break;
|
|
77
|
+
case "-":
|
|
78
|
+
if (stream.eat("=")) {//titleBar
|
|
79
|
+
return chain(inBlock("header string", "=-", inText));
|
|
80
|
+
} else if (stream.eat("-")) {//deleted
|
|
81
|
+
return chain(inBlock("error tw-deleted", "--", inText));
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
case "=": //underline
|
|
85
|
+
if (stream.match("=="))
|
|
86
|
+
return chain(inBlock("tw-underline", "===", inText));
|
|
87
|
+
break;
|
|
88
|
+
case ":":
|
|
89
|
+
if (stream.eat(":"))
|
|
90
|
+
return chain(inBlock("comment", "::"));
|
|
91
|
+
break;
|
|
92
|
+
case "^": //box
|
|
93
|
+
return chain(inBlock("tw-box", "^"));
|
|
94
|
+
break;
|
|
95
|
+
case "~": //np
|
|
96
|
+
if (stream.match("np~"))
|
|
97
|
+
return chain(inBlock("meta", "~/np~"));
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
//start of line types
|
|
102
|
+
if (sol) {
|
|
103
|
+
switch (ch) {
|
|
104
|
+
case "!": //header at start of line
|
|
105
|
+
if (stream.match('!!!!!')) {
|
|
106
|
+
return chain(inLine("header string"));
|
|
107
|
+
} else if (stream.match('!!!!')) {
|
|
108
|
+
return chain(inLine("header string"));
|
|
109
|
+
} else if (stream.match('!!!')) {
|
|
110
|
+
return chain(inLine("header string"));
|
|
111
|
+
} else if (stream.match('!!')) {
|
|
112
|
+
return chain(inLine("header string"));
|
|
113
|
+
} else {
|
|
114
|
+
return chain(inLine("header string"));
|
|
115
|
+
}
|
|
116
|
+
break;
|
|
117
|
+
case "*": //unordered list line item, or <li /> at start of line
|
|
118
|
+
case "#": //ordered list line item, or <li /> at start of line
|
|
119
|
+
case "+": //ordered list line item, or <li /> at start of line
|
|
120
|
+
return chain(inLine("tw-listitem bracket"));
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
//stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
var indentUnit = config.indentUnit;
|
|
130
|
+
|
|
131
|
+
// Return variables for tokenizers
|
|
132
|
+
var pluginName, type;
|
|
133
|
+
function inPlugin(stream, state) {
|
|
134
|
+
var ch = stream.next();
|
|
135
|
+
var peek = stream.peek();
|
|
136
|
+
|
|
137
|
+
if (ch == "}") {
|
|
138
|
+
state.tokenize = inText;
|
|
139
|
+
//type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin
|
|
140
|
+
return "tag";
|
|
141
|
+
} else if (ch == "(" || ch == ")") {
|
|
142
|
+
return "bracket";
|
|
143
|
+
} else if (ch == "=") {
|
|
144
|
+
type = "equals";
|
|
145
|
+
|
|
146
|
+
if (peek == ">") {
|
|
147
|
+
stream.next();
|
|
148
|
+
peek = stream.peek();
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
//here we detect values directly after equal character with no quotes
|
|
152
|
+
if (!/[\'\"]/.test(peek)) {
|
|
153
|
+
state.tokenize = inAttributeNoQuote();
|
|
154
|
+
}
|
|
155
|
+
//end detect values
|
|
156
|
+
|
|
157
|
+
return "operator";
|
|
158
|
+
} else if (/[\'\"]/.test(ch)) {
|
|
159
|
+
state.tokenize = inAttribute(ch);
|
|
160
|
+
return state.tokenize(stream, state);
|
|
161
|
+
} else {
|
|
162
|
+
stream.eatWhile(/[^\s\u00a0=\"\'\/?]/);
|
|
163
|
+
return "keyword";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function inAttribute(quote) {
|
|
168
|
+
return function(stream, state) {
|
|
169
|
+
while (!stream.eol()) {
|
|
170
|
+
if (stream.next() == quote) {
|
|
171
|
+
state.tokenize = inPlugin;
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return "string";
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function inAttributeNoQuote() {
|
|
180
|
+
return function(stream, state) {
|
|
181
|
+
while (!stream.eol()) {
|
|
182
|
+
var ch = stream.next();
|
|
183
|
+
var peek = stream.peek();
|
|
184
|
+
if (ch == " " || ch == "," || /[ )}]/.test(peek)) {
|
|
185
|
+
state.tokenize = inPlugin;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return "string";
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
var curState, setStyle;
|
|
194
|
+
function pass() {
|
|
195
|
+
for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function cont() {
|
|
199
|
+
pass.apply(null, arguments);
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function pushContext(pluginName, startOfLine) {
|
|
204
|
+
var noIndent = curState.context && curState.context.noIndent;
|
|
205
|
+
curState.context = {
|
|
206
|
+
prev: curState.context,
|
|
207
|
+
pluginName: pluginName,
|
|
208
|
+
indent: curState.indented,
|
|
209
|
+
startOfLine: startOfLine,
|
|
210
|
+
noIndent: noIndent
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function popContext() {
|
|
215
|
+
if (curState.context) curState.context = curState.context.prev;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function element(type) {
|
|
219
|
+
if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));}
|
|
220
|
+
else if (type == "closePlugin") {
|
|
221
|
+
var err = false;
|
|
222
|
+
if (curState.context) {
|
|
223
|
+
err = curState.context.pluginName != pluginName;
|
|
224
|
+
popContext();
|
|
225
|
+
} else {
|
|
226
|
+
err = true;
|
|
227
|
+
}
|
|
228
|
+
if (err) setStyle = "error";
|
|
229
|
+
return cont(endcloseplugin(err));
|
|
230
|
+
}
|
|
231
|
+
else if (type == "string") {
|
|
232
|
+
if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata");
|
|
233
|
+
if (curState.tokenize == inText) popContext();
|
|
234
|
+
return cont();
|
|
235
|
+
}
|
|
236
|
+
else return cont();
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function endplugin(startOfLine) {
|
|
240
|
+
return function(type) {
|
|
241
|
+
if (
|
|
242
|
+
type == "selfclosePlugin" ||
|
|
243
|
+
type == "endPlugin"
|
|
244
|
+
)
|
|
245
|
+
return cont();
|
|
246
|
+
if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();}
|
|
247
|
+
return cont();
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
function endcloseplugin(err) {
|
|
252
|
+
return function(type) {
|
|
253
|
+
if (err) setStyle = "error";
|
|
254
|
+
if (type == "endPlugin") return cont();
|
|
255
|
+
return pass();
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function attributes(type) {
|
|
260
|
+
if (type == "keyword") {setStyle = "attribute"; return cont(attributes);}
|
|
261
|
+
if (type == "equals") return cont(attvalue, attributes);
|
|
262
|
+
return pass();
|
|
263
|
+
}
|
|
264
|
+
function attvalue(type) {
|
|
265
|
+
if (type == "keyword") {setStyle = "string"; return cont();}
|
|
266
|
+
if (type == "string") return cont(attvaluemaybe);
|
|
267
|
+
return pass();
|
|
268
|
+
}
|
|
269
|
+
function attvaluemaybe(type) {
|
|
270
|
+
if (type == "string") return cont(attvaluemaybe);
|
|
271
|
+
else return pass();
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
startState: function() {
|
|
275
|
+
return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null};
|
|
276
|
+
},
|
|
277
|
+
token: function(stream, state) {
|
|
278
|
+
if (stream.sol()) {
|
|
279
|
+
state.startOfLine = true;
|
|
280
|
+
state.indented = stream.indentation();
|
|
281
|
+
}
|
|
282
|
+
if (stream.eatSpace()) return null;
|
|
283
|
+
|
|
284
|
+
setStyle = type = pluginName = null;
|
|
285
|
+
var style = state.tokenize(stream, state);
|
|
286
|
+
if ((style || type) && style != "comment") {
|
|
287
|
+
curState = state;
|
|
288
|
+
while (true) {
|
|
289
|
+
var comb = state.cc.pop() || element;
|
|
290
|
+
if (comb(type || style)) break;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
state.startOfLine = false;
|
|
294
|
+
return setStyle || style;
|
|
295
|
+
},
|
|
296
|
+
indent: function(state, textAfter) {
|
|
297
|
+
var context = state.context;
|
|
298
|
+
if (context && context.noIndent) return 0;
|
|
299
|
+
if (context && /^{\//.test(textAfter))
|
|
300
|
+
context = context.prev;
|
|
301
|
+
while (context && !context.startOfLine)
|
|
302
|
+
context = context.prev;
|
|
303
|
+
if (context) return context.indent + indentUnit;
|
|
304
|
+
else return 0;
|
|
305
|
+
},
|
|
306
|
+
electricChars: "/"
|
|
307
|
+
};
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
CodeMirror.defineMIME("text/tiki", "tiki");
|
|
311
|
+
|
|
312
|
+
});
|