erp_app 3.0.12 → 3.0.13
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.
- data/lib/erp_app/version.rb +1 -1
- data/public/javascripts/erp_app/codemirror/doc/compress.html +27 -25
- data/public/javascripts/erp_app/codemirror/doc/manual.html +8 -1
- data/public/javascripts/erp_app/codemirror/doc/oldrelease.html +51 -0
- data/public/javascripts/erp_app/codemirror/doc/realworld.html +72 -0
- data/public/javascripts/erp_app/codemirror/keymap/vim.js +9 -10
- data/public/javascripts/erp_app/codemirror/lib/codemirror.css +1 -0
- data/public/javascripts/erp_app/codemirror/lib/codemirror.js +53 -31
- data/public/javascripts/erp_app/codemirror/lib/util/overlay.js +6 -1
- data/public/javascripts/erp_app/codemirror/lib/util/runmode.js +1 -1
- data/public/javascripts/erp_app/codemirror/lib/util/searchcursor.js +3 -3
- data/public/javascripts/erp_app/codemirror/lib/util/simple-hint.js +9 -4
- data/public/javascripts/erp_app/codemirror/mode/clike/clike.js +1 -0
- data/public/javascripts/erp_app/codemirror/mode/css/css.js +1 -1
- data/public/javascripts/erp_app/codemirror/mode/css/test.js +2 -2
- data/public/javascripts/erp_app/codemirror/mode/gfm/gfm.js +83 -139
- data/public/javascripts/erp_app/codemirror/mode/gfm/index.html +27 -4
- data/public/javascripts/erp_app/codemirror/mode/gfm/test.js +225 -0
- data/public/javascripts/erp_app/codemirror/mode/htmlembedded/htmlembedded.js +1 -0
- data/public/javascripts/erp_app/codemirror/mode/javascript/index.html +11 -4
- data/public/javascripts/erp_app/codemirror/mode/javascript/javascript.js +63 -15
- data/public/javascripts/erp_app/codemirror/mode/javascript/typescript.html +48 -0
- data/public/javascripts/erp_app/codemirror/mode/lua/lua.js +1 -1
- data/public/javascripts/erp_app/codemirror/mode/markdown/markdown.js +122 -23
- data/public/javascripts/erp_app/codemirror/mode/markdown/test.js +183 -1
- data/public/javascripts/erp_app/codemirror/package.json +1 -1
- data/public/javascripts/erp_app/codemirror/test/index.html +3 -0
- data/public/javascripts/erp_app/codemirror/test/test.js +11 -6
- metadata +15 -32
@@ -1,150 +1,94 @@
|
|
1
1
|
CodeMirror.defineMode("gfm", function(config, parserConfig) {
|
2
|
-
var
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
json: "application/json",
|
7
|
-
c: "text/x-csrc",
|
8
|
-
"c++": "text/x-c++src",
|
9
|
-
java: "text/x-java",
|
10
|
-
csharp: "text/x-csharp",
|
11
|
-
"c#": "text/x-csharp"
|
12
|
-
};
|
13
|
-
|
14
|
-
// make this lazy so that we don't need to load GFM last
|
15
|
-
var getMode = (function () {
|
16
|
-
var i, modes = {}, mimes = {}, mime;
|
17
|
-
|
18
|
-
var list = CodeMirror.listModes();
|
19
|
-
for (i = 0; i < list.length; i++) {
|
20
|
-
modes[list[i]] = list[i];
|
21
|
-
}
|
22
|
-
var mimesList = CodeMirror.listMIMEs();
|
23
|
-
for (i = 0; i < mimesList.length; i++) {
|
24
|
-
mime = mimesList[i].mime;
|
25
|
-
mimes[mime] = mimesList[i].mime;
|
26
|
-
}
|
27
|
-
|
28
|
-
for (var a in aliases) {
|
29
|
-
if (aliases[a] in modes || aliases[a] in mimes)
|
30
|
-
modes[a] = aliases[a];
|
31
|
-
}
|
32
|
-
|
33
|
-
return function (lang) {
|
34
|
-
return modes[lang] ? CodeMirror.getMode(config, modes[lang]) : null;
|
35
|
-
};
|
36
|
-
}());
|
37
|
-
|
38
|
-
function markdown(stream, state) {
|
39
|
-
// intercept fenced code blocks
|
40
|
-
if (stream.sol() && stream.match(/^```([\w+#]*)/)) {
|
41
|
-
// try switching mode
|
42
|
-
state.localMode = getMode(RegExp.$1);
|
43
|
-
if (state.localMode)
|
44
|
-
state.localState = state.localMode.startState();
|
45
|
-
|
46
|
-
state.token = local;
|
47
|
-
return 'code';
|
48
|
-
}
|
49
|
-
|
50
|
-
return mdMode.token(stream, state.mdState);
|
51
|
-
}
|
52
|
-
|
53
|
-
function local(stream, state) {
|
54
|
-
if (stream.sol() && stream.match(/^```/)) {
|
55
|
-
state.localMode = state.localState = null;
|
56
|
-
state.token = markdown;
|
57
|
-
return 'code';
|
58
|
-
}
|
59
|
-
else if (state.localMode) {
|
60
|
-
return state.localMode.token(stream, state.localState);
|
61
|
-
} else {
|
62
|
-
stream.skipToEnd();
|
63
|
-
return 'code';
|
64
|
-
}
|
65
|
-
}
|
66
|
-
|
67
|
-
// custom handleText to prevent emphasis in the middle of a word
|
68
|
-
// and add autolinking
|
69
|
-
function handleText(stream, mdState) {
|
70
|
-
var match;
|
71
|
-
if (stream.match(/^\w+:\/\/\S+/)) {
|
72
|
-
return 'link';
|
73
|
-
}
|
74
|
-
if (stream.match(/^[^\[*\\<>` _][^\[*\\<>` ]*[^\[*\\<>` _]/)) {
|
75
|
-
return mdMode.getType(mdState);
|
76
|
-
}
|
77
|
-
if (match = stream.match(/^[^\[*\\<>` ]+/)) {
|
78
|
-
var word = match[0];
|
79
|
-
if (word[0] === '_' && word[word.length-1] === '_') {
|
80
|
-
stream.backUp(word.length);
|
81
|
-
return undefined;
|
82
|
-
}
|
83
|
-
return mdMode.getType(mdState);
|
84
|
-
}
|
85
|
-
if (stream.eatSpace()) {
|
86
|
-
return null;
|
87
|
-
}
|
2
|
+
var codeDepth = 0;
|
3
|
+
function blankLine(state) {
|
4
|
+
state.code = false;
|
5
|
+
return null;
|
88
6
|
}
|
89
|
-
|
90
|
-
return {
|
7
|
+
var gfmOverlay = {
|
91
8
|
startState: function() {
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
9
|
+
return {
|
10
|
+
code: false,
|
11
|
+
codeBlock: false,
|
12
|
+
ateSpace: false
|
13
|
+
};
|
96
14
|
},
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
15
|
+
copyState: function(s) {
|
16
|
+
return {
|
17
|
+
code: s.code,
|
18
|
+
codeBlock: s.codeBlock,
|
19
|
+
ateSpace: s.ateSpace
|
20
|
+
};
|
102
21
|
},
|
103
|
-
|
104
22
|
token: function(stream, state) {
|
105
|
-
|
106
|
-
|
107
|
-
if (
|
108
|
-
|
109
|
-
|
110
|
-
/* Only handle double bracket links */
|
111
|
-
if ((ch = stream.peek()) == undefined || ch != '[') {
|
112
|
-
stream.backUp(1);
|
113
|
-
return state.token(stream, state);
|
114
|
-
}
|
115
|
-
|
116
|
-
while ((ch = stream.next()) != undefined && ch != ']') {}
|
117
|
-
|
118
|
-
if (ch == ']' && (ch = stream.next()) != undefined && ch == ']')
|
119
|
-
return 'link';
|
120
|
-
|
121
|
-
/* If we did not find the second ']' */
|
122
|
-
stream.backUp(1);
|
123
|
-
}
|
124
|
-
|
125
|
-
/* Match GFM latex formulas, as well as latex formulas within '$' */
|
126
|
-
if (stream.match(/^\$[^\$]+\$/)) {
|
127
|
-
return "string";
|
23
|
+
// Hack to prevent formatting override inside code blocks (block and inline)
|
24
|
+
if (state.codeBlock) {
|
25
|
+
if (stream.match(/^```/)) {
|
26
|
+
state.codeBlock = false;
|
27
|
+
return null;
|
128
28
|
}
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
29
|
+
stream.skipToEnd();
|
30
|
+
return null;
|
31
|
+
}
|
32
|
+
if (stream.sol()) {
|
33
|
+
state.code = false;
|
34
|
+
}
|
35
|
+
if (stream.sol() && stream.match(/^```/)) {
|
36
|
+
stream.skipToEnd();
|
37
|
+
state.codeBlock = true;
|
38
|
+
return null;
|
39
|
+
}
|
40
|
+
// If this block is changed, it may need to be updated in Markdown mode
|
41
|
+
if (stream.peek() === '`') {
|
42
|
+
stream.next();
|
43
|
+
var before = stream.pos;
|
44
|
+
stream.eatWhile('`');
|
45
|
+
var difference = 1 + stream.pos - before;
|
46
|
+
if (!state.code) {
|
47
|
+
codeDepth = difference;
|
48
|
+
state.code = true;
|
49
|
+
} else {
|
50
|
+
if (difference === codeDepth) { // Must be exact
|
51
|
+
state.code = false;
|
52
|
+
}
|
136
53
|
}
|
137
|
-
|
138
|
-
|
139
|
-
|
54
|
+
return null;
|
55
|
+
} else if (state.code) {
|
56
|
+
stream.next();
|
57
|
+
return null;
|
58
|
+
}
|
59
|
+
// Check if space. If so, links can be formatted later on
|
60
|
+
if (stream.eatSpace()) {
|
61
|
+
state.ateSpace = true;
|
62
|
+
return null;
|
63
|
+
}
|
64
|
+
if (stream.sol() || state.ateSpace) {
|
65
|
+
state.ateSpace = false;
|
66
|
+
if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) {
|
67
|
+
// User/Project@SHA
|
68
|
+
// User@SHA
|
69
|
+
// SHA
|
70
|
+
return "link";
|
71
|
+
} else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) {
|
72
|
+
// User/Project#Num
|
73
|
+
// User#Num
|
74
|
+
// #Num
|
75
|
+
return "link";
|
140
76
|
}
|
141
|
-
|
142
|
-
|
77
|
+
}
|
78
|
+
if (stream.match(/^((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/i)) {
|
79
|
+
// URLs
|
80
|
+
// Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls
|
81
|
+
return "link";
|
82
|
+
}
|
83
|
+
stream.next();
|
84
|
+
return null;
|
143
85
|
},
|
144
|
-
|
145
|
-
innerMode: function(state) {
|
146
|
-
if (state.token == markdown) return {state: state.mdState, mode: mdMode};
|
147
|
-
else return {state: state.localState, mode: state.localMode};
|
148
|
-
}
|
86
|
+
blankLine: blankLine
|
149
87
|
};
|
150
|
-
|
88
|
+
CodeMirror.defineMIME("gfmBase", {
|
89
|
+
name: "markdown",
|
90
|
+
underscoresBreakWords: false,
|
91
|
+
fencedCodeBlocks: true
|
92
|
+
});
|
93
|
+
return CodeMirror.overlayMode(CodeMirror.getMode(config, "gfmBase"), gfmOverlay);
|
94
|
+
});
|
@@ -5,10 +5,17 @@
|
|
5
5
|
<title>CodeMirror: GFM mode</title>
|
6
6
|
<link rel="stylesheet" href="../../lib/codemirror.css">
|
7
7
|
<script src="../../lib/codemirror.js"></script>
|
8
|
+
<script src="../../lib/util/overlay.js"></script>
|
8
9
|
<script src="../xml/xml.js"></script>
|
9
10
|
<script src="../markdown/markdown.js"></script>
|
10
11
|
<script src="gfm.js"></script>
|
12
|
+
|
13
|
+
<!-- Code block highlighting modes -->
|
11
14
|
<script src="../javascript/javascript.js"></script>
|
15
|
+
<script src="../css/css.js"></script>
|
16
|
+
<script src="../htmlmixed/htmlmixed.js"></script>
|
17
|
+
<script src="../clike/clike.js"></script>
|
18
|
+
|
12
19
|
<link rel="stylesheet" href="../markdown/markdown.css">
|
13
20
|
<style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
|
14
21
|
<link rel="stylesheet" href="../../doc/docs.css">
|
@@ -16,14 +23,17 @@
|
|
16
23
|
<body>
|
17
24
|
<h1>CodeMirror: GFM mode</h1>
|
18
25
|
|
19
|
-
<!-- source: http://daringfireball.net/projects/markdown/basics.text -->
|
20
26
|
<form><textarea id="code" name="code">
|
21
|
-
|
27
|
+
GitHub Flavored Markdown
|
22
28
|
========================
|
23
29
|
|
24
30
|
Everything from markdown plus GFM features:
|
25
31
|
|
26
|
-
##
|
32
|
+
## URL autolinking
|
33
|
+
|
34
|
+
Underscores_are_allowed_between_words.
|
35
|
+
|
36
|
+
## Fenced code blocks (and syntax highlighting... someday)
|
27
37
|
|
28
38
|
```javascript
|
29
39
|
for (var i = 0; i < items.length; i++) {
|
@@ -31,7 +41,16 @@ for (var i = 0; i < items.length; i++) {
|
|
31
41
|
}
|
32
42
|
```
|
33
43
|
|
34
|
-
|
44
|
+
## A bit of GitHub spice
|
45
|
+
|
46
|
+
* SHA: be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
|
47
|
+
* User@SHA ref: mojombo@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
|
48
|
+
* User/Project@SHA: mojombo/god@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2
|
49
|
+
* \#Num: #1
|
50
|
+
* User/#Num: mojombo#1
|
51
|
+
* User/Project#Num: mojombo/god#1
|
52
|
+
|
53
|
+
See http://github.github.com/github-flavored-markdown/.
|
35
54
|
|
36
55
|
</textarea></form>
|
37
56
|
|
@@ -44,5 +63,9 @@ See http://github.github.com/github-flavored-markdown/
|
|
44
63
|
});
|
45
64
|
</script>
|
46
65
|
|
66
|
+
<p>Optionally depends on other modes for properly highlighted code blocks.</p>
|
67
|
+
|
68
|
+
<p><strong>Parsing/Highlighting Tests:</strong> <a href="../../test/index.html#gfm_*">normal</a>, <a href="../../test/index.html#verbose,gfm_*">verbose</a>.</p>
|
69
|
+
|
47
70
|
</body>
|
48
71
|
</html>
|
@@ -0,0 +1,225 @@
|
|
1
|
+
// Initiate ModeTest and set defaults
|
2
|
+
var MT = ModeTest;
|
3
|
+
MT.modeName = 'gfm';
|
4
|
+
MT.modeOptions = {};
|
5
|
+
|
6
|
+
// Emphasis characters within a word
|
7
|
+
MT.testMode(
|
8
|
+
'emInWordAsterisk',
|
9
|
+
'foo*bar*hello',
|
10
|
+
[
|
11
|
+
null, 'foo',
|
12
|
+
'em', '*bar*',
|
13
|
+
null, 'hello'
|
14
|
+
]
|
15
|
+
);
|
16
|
+
MT.testMode(
|
17
|
+
'emInWordUnderscore',
|
18
|
+
'foo_bar_hello',
|
19
|
+
[
|
20
|
+
null, 'foo_bar_hello'
|
21
|
+
]
|
22
|
+
);
|
23
|
+
MT.testMode(
|
24
|
+
'emStrongUnderscore',
|
25
|
+
'___foo___ bar',
|
26
|
+
[
|
27
|
+
'strong', '__',
|
28
|
+
'emstrong', '_foo__',
|
29
|
+
'em', '_',
|
30
|
+
null, ' bar'
|
31
|
+
]
|
32
|
+
);
|
33
|
+
|
34
|
+
// Fenced code blocks
|
35
|
+
MT.testMode(
|
36
|
+
'fencedCodeBlocks',
|
37
|
+
'```\nfoo\n\n```\nbar',
|
38
|
+
[
|
39
|
+
'comment', '```',
|
40
|
+
'comment', 'foo',
|
41
|
+
'comment', '```',
|
42
|
+
null, 'bar'
|
43
|
+
]
|
44
|
+
);
|
45
|
+
// Fenced code block mode switching
|
46
|
+
MT.testMode(
|
47
|
+
'fencedCodeBlockModeSwitching',
|
48
|
+
'```javascript\nfoo\n\n```\nbar',
|
49
|
+
[
|
50
|
+
'comment', '```javascript',
|
51
|
+
'variable', 'foo',
|
52
|
+
'comment', '```',
|
53
|
+
null, 'bar'
|
54
|
+
]
|
55
|
+
);
|
56
|
+
|
57
|
+
// SHA
|
58
|
+
MT.testMode(
|
59
|
+
'SHA',
|
60
|
+
'foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 bar',
|
61
|
+
[
|
62
|
+
null, 'foo ',
|
63
|
+
'link', 'be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2',
|
64
|
+
null, ' bar'
|
65
|
+
]
|
66
|
+
);
|
67
|
+
// GitHub highlights hashes 7-40 chars in length
|
68
|
+
MT.testMode(
|
69
|
+
'shortSHA',
|
70
|
+
'foo be6a8cc bar',
|
71
|
+
[
|
72
|
+
null, 'foo ',
|
73
|
+
'link', 'be6a8cc',
|
74
|
+
null, ' bar'
|
75
|
+
]
|
76
|
+
);
|
77
|
+
// Invalid SHAs
|
78
|
+
//
|
79
|
+
// GitHub does not highlight hashes shorter than 7 chars
|
80
|
+
MT.testMode(
|
81
|
+
'tooShortSHA',
|
82
|
+
'foo be6a8c bar',
|
83
|
+
[
|
84
|
+
null, 'foo be6a8c bar'
|
85
|
+
]
|
86
|
+
);
|
87
|
+
// GitHub does not highlight hashes longer than 40 chars
|
88
|
+
MT.testMode(
|
89
|
+
'longSHA',
|
90
|
+
'foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar',
|
91
|
+
[
|
92
|
+
null, 'foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar'
|
93
|
+
]
|
94
|
+
);
|
95
|
+
MT.testMode(
|
96
|
+
'badSHA',
|
97
|
+
'foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar',
|
98
|
+
[
|
99
|
+
null, 'foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar'
|
100
|
+
]
|
101
|
+
);
|
102
|
+
// User@SHA
|
103
|
+
MT.testMode(
|
104
|
+
'userSHA',
|
105
|
+
'foo bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 hello',
|
106
|
+
[
|
107
|
+
null, 'foo ',
|
108
|
+
'link', 'bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2',
|
109
|
+
null, ' hello'
|
110
|
+
]
|
111
|
+
);
|
112
|
+
// User/Project@SHA
|
113
|
+
MT.testMode(
|
114
|
+
'userProjectSHA',
|
115
|
+
'foo bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2 world',
|
116
|
+
[
|
117
|
+
null, 'foo ',
|
118
|
+
'link', 'bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2',
|
119
|
+
null, ' world'
|
120
|
+
]
|
121
|
+
);
|
122
|
+
|
123
|
+
// #Num
|
124
|
+
MT.testMode(
|
125
|
+
'num',
|
126
|
+
'foo #1 bar',
|
127
|
+
[
|
128
|
+
null, 'foo ',
|
129
|
+
'link', '#1',
|
130
|
+
null, ' bar'
|
131
|
+
]
|
132
|
+
);
|
133
|
+
// bad #Num
|
134
|
+
MT.testMode(
|
135
|
+
'badNum',
|
136
|
+
'foo #1bar hello',
|
137
|
+
[
|
138
|
+
null, 'foo #1bar hello'
|
139
|
+
]
|
140
|
+
);
|
141
|
+
// User#Num
|
142
|
+
MT.testMode(
|
143
|
+
'userNum',
|
144
|
+
'foo bar#1 hello',
|
145
|
+
[
|
146
|
+
null, 'foo ',
|
147
|
+
'link', 'bar#1',
|
148
|
+
null, ' hello'
|
149
|
+
]
|
150
|
+
);
|
151
|
+
// User/Project#Num
|
152
|
+
MT.testMode(
|
153
|
+
'userProjectNum',
|
154
|
+
'foo bar/hello#1 world',
|
155
|
+
[
|
156
|
+
null, 'foo ',
|
157
|
+
'link', 'bar/hello#1',
|
158
|
+
null, ' world'
|
159
|
+
]
|
160
|
+
);
|
161
|
+
|
162
|
+
// Vanilla links
|
163
|
+
MT.testMode(
|
164
|
+
'vanillaLink',
|
165
|
+
'foo http://www.example.com/ bar',
|
166
|
+
[
|
167
|
+
null, 'foo ',
|
168
|
+
'link', 'http://www.example.com/',
|
169
|
+
null, ' bar'
|
170
|
+
]
|
171
|
+
);
|
172
|
+
MT.testMode(
|
173
|
+
'vanillaLinkPunctuation',
|
174
|
+
'foo http://www.example.com/. bar',
|
175
|
+
[
|
176
|
+
null, 'foo ',
|
177
|
+
'link', 'http://www.example.com/',
|
178
|
+
null, '. bar'
|
179
|
+
]
|
180
|
+
);
|
181
|
+
MT.testMode(
|
182
|
+
'vanillaLinkExtension',
|
183
|
+
'foo http://www.example.com/index.html bar',
|
184
|
+
[
|
185
|
+
null, 'foo ',
|
186
|
+
'link', 'http://www.example.com/index.html',
|
187
|
+
null, ' bar'
|
188
|
+
]
|
189
|
+
);
|
190
|
+
// Not a link
|
191
|
+
MT.testMode(
|
192
|
+
'notALink',
|
193
|
+
'```css\nfoo {color:black;}\n```http://www.example.com/',
|
194
|
+
[
|
195
|
+
'comment', '```css',
|
196
|
+
'tag', 'foo',
|
197
|
+
null, ' {',
|
198
|
+
'property', 'color',
|
199
|
+
'operator', ':',
|
200
|
+
'keyword', 'black',
|
201
|
+
null, ';}',
|
202
|
+
'comment', '```',
|
203
|
+
'link', 'http://www.example.com/'
|
204
|
+
]
|
205
|
+
);
|
206
|
+
// Not a link
|
207
|
+
MT.testMode(
|
208
|
+
'notALink',
|
209
|
+
'``foo `bar` http://www.example.com/`` hello',
|
210
|
+
[
|
211
|
+
'comment', '``foo `bar` http://www.example.com/``',
|
212
|
+
null, ' hello'
|
213
|
+
]
|
214
|
+
);
|
215
|
+
// Not a link
|
216
|
+
MT.testMode(
|
217
|
+
'notALink',
|
218
|
+
'`foo\nhttp://www.example.com/\n`foo\n\nhttp://www.example.com/',
|
219
|
+
[
|
220
|
+
'comment', '`foo',
|
221
|
+
'link', 'http://www.example.com/',
|
222
|
+
'comment', '`foo',
|
223
|
+
'link', 'http://www.example.com/'
|
224
|
+
]
|
225
|
+
);
|
@@ -70,3 +70,4 @@ CodeMirror.defineMode("htmlembedded", function(config, parserConfig) {
|
|
70
70
|
CodeMirror.defineMIME("application/x-ejs", { name: "htmlembedded", scriptingModeSpec:"javascript"});
|
71
71
|
CodeMirror.defineMIME("application/x-aspx", { name: "htmlembedded", scriptingModeSpec:"text/x-csharp"});
|
72
72
|
CodeMirror.defineMIME("application/x-jsp", { name: "htmlembedded", scriptingModeSpec:"text/x-java"});
|
73
|
+
CodeMirror.defineMIME("application/x-erb", { name: "htmlembedded", scriptingModeSpec:"ruby"});
|
@@ -69,10 +69,17 @@ StringStream.prototype = {
|
|
69
69
|
});
|
70
70
|
</script>
|
71
71
|
|
72
|
-
<p>
|
73
|
-
|
74
|
-
|
72
|
+
<p>
|
73
|
+
JavaScript mode supports a two configuration
|
74
|
+
options:
|
75
|
+
<ul>
|
76
|
+
<li><code>json</code> which will set the mode to expect JSON data rather than a JavaScript program.</li>
|
77
|
+
<li>
|
78
|
+
<code>typescript</code> which will activate additional syntax highlighting and some other things for TypeScript code (<a href="typescript.html">demo</a>).
|
79
|
+
</li>
|
80
|
+
</ul>
|
81
|
+
</p>
|
75
82
|
|
76
|
-
<p><strong>MIME types defined:</strong> <code>text/javascript</code>, <code>application/json</code>.</p>
|
83
|
+
<p><strong>MIME types defined:</strong> <code>text/javascript</code>, <code>application/json</code>, <code>text/typescript</code>, <code>application/typescript</code>.</p>
|
77
84
|
</body>
|
78
85
|
</html>
|