aboutsummaryrefslogtreecommitdiff
path: root/imports/codemirror/mode/markdown/markdown.js
diff options
context:
space:
mode:
Diffstat (limited to 'imports/codemirror/mode/markdown/markdown.js')
-rw-r--r--[-rwxr-xr-x]imports/codemirror/mode/markdown/markdown.js82
1 files changed, 58 insertions, 24 deletions
diff --git a/imports/codemirror/mode/markdown/markdown.js b/imports/codemirror/mode/markdown/markdown.js
index 455bb43c..800ff0b4 100755..100644
--- a/imports/codemirror/mode/markdown/markdown.js
+++ b/imports/codemirror/mode/markdown/markdown.js
@@ -15,7 +15,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
15 15
16 var hrRE = /^[*-=_]/ 16 var hrRE = /^[*-=_]/
17 , ulRE = /^[*-+]\s+/ 17 , ulRE = /^[*-+]\s+/
18 , olRE = /^[0-9]\.\s+/ 18 , olRE = /^[0-9]+\.\s+/
19 , headerRE = /^(?:\={3,}|-{3,})$/ 19 , headerRE = /^(?:\={3,}|-{3,})$/
20 , codeRE = /^(k:\t|\s{4,})/ 20 , codeRE = /^(k:\t|\s{4,})/
21 , textRE = /^[^\[*_\\<>`]+/; 21 , textRE = /^[^\[*_\\<>`]+/;
@@ -34,35 +34,25 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
34 // Blocks 34 // Blocks
35 35
36 function blockNormal(stream, state) { 36 function blockNormal(stream, state) {
37 var match;
37 if (stream.match(codeRE)) { 38 if (stream.match(codeRE)) {
38 stream.skipToEnd(); 39 stream.skipToEnd();
39 return code; 40 return code;
40 } 41 } else if (stream.eatSpace()) {
41
42 if (stream.eatSpace()) {
43 return null; 42 return null;
44 } 43 } else if (stream.peek() === '#' || stream.match(headerRE)) {
45 44 state.header = true;
46 if (stream.peek() === '#' || stream.match(headerRE)) { 45 } else if (stream.eat('>')) {
47 stream.skipToEnd();
48 return header;
49 }
50 if (stream.eat('>')) {
51 state.indentation++; 46 state.indentation++;
52 return quote; 47 state.quote = true;
53 } 48 } else if (stream.peek() === '[') {
54 if (stream.peek() === '[') {
55 return switchInline(stream, state, footnoteLink); 49 return switchInline(stream, state, footnoteLink);
56 } 50 } else if (hrRE.test(stream.peek())) {
57 if (hrRE.test(stream.peek())) {
58 var re = new RegExp('(?:\s*['+stream.peek()+']){3,}$'); 51 var re = new RegExp('(?:\s*['+stream.peek()+']){3,}$');
59 if (stream.match(re, true)) { 52 if (stream.match(re, true)) {
60 return hr; 53 return hr;
61 } 54 }
62 } 55 } else if (match = stream.match(ulRE, true) || stream.match(olRE, true)) {
63
64 var match;
65 if (match = stream.match(ulRE, true) || stream.match(olRE, true)) {
66 state.indentation += match[0].length; 56 state.indentation += match[0].length;
67 return list; 57 return list;
68 } 58 }
@@ -82,8 +72,39 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
82 72
83 // Inline 73 // Inline
84 function getType(state) { 74 function getType(state) {
85 return state.strong ? (state.em ? emstrong : strong) 75
86 : (state.em ? em : null); 76 // Set defaults
77 returnValue = '';
78
79 // Strong / Emphasis
80 if(state.strong){
81 if(state.em){
82 returnValue += (returnValue ? ' ' : '') + emstrong;
83 } else {
84 returnValue += (returnValue ? ' ' : '') + strong;
85 }
86 } else {
87 if(state.em){
88 returnValue += (returnValue ? ' ' : '') + em;
89 }
90 }
91
92 // Header
93 if(state.header){
94 returnValue += (returnValue ? ' ' : '') + header;
95 }
96
97 // Quotes
98 if(state.quote){
99 returnValue += (returnValue ? ' ' : '') + quote;
100 }
101
102 // Check valud and return
103 if(!returnValue){
104 returnValue = null;
105 }
106 return returnValue;
107
87 } 108 }
88 109
89 function handleText(stream, state) { 110 function handleText(stream, state) {
@@ -192,7 +213,9 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
192 inline: inlineNormal, 213 inline: inlineNormal,
193 text: handleText, 214 text: handleText,
194 em: false, 215 em: false,
195 strong: false 216 strong: false,
217 header: false,
218 quote: false
196 }; 219 };
197 }, 220 },
198 221
@@ -207,12 +230,23 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
207 inline: s.inline, 230 inline: s.inline,
208 text: s.text, 231 text: s.text,
209 em: s.em, 232 em: s.em,
210 strong: s.strong 233 strong: s.strong,
234 header: s.header,
235 quote: s.quote
211 }; 236 };
212 }, 237 },
213 238
214 token: function(stream, state) { 239 token: function(stream, state) {
215 if (stream.sol()) { 240 if (stream.sol()) {
241 // Reset EM state
242 state.em = false;
243 // Reset STRONG state
244 state.strong = false;
245 // Reset state.header
246 state.header = false;
247 // Reset state.quote
248 state.quote = false;
249
216 state.f = state.block; 250 state.f = state.block;
217 var previousIndentation = state.indentation 251 var previousIndentation = state.indentation
218 , currentIndentation = 0; 252 , currentIndentation = 0;