Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
d3962ecd
Commit
d3962ecd
authored
Aug 17, 2012
by
Bridger Maxwell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Updated CodeMirror modes for better syntax highlighting.
parent
0fbfaf61
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
142 additions
and
92 deletions
+142
-92
common/static/js/vendor/CodeMirror/mitx_markdown.js
+75
-84
common/static/js/vendor/CodeMirror/xml.js
+67
-8
No files found.
common/static/js/vendor/CodeMirror/mitx_markdown.js
View file @
d3962ecd
...
...
@@ -8,9 +8,9 @@ $(function(){
$
(
document
).
ready
(
function
()
{
//$("a[rel*=leanModal]").leanModal(); //TODO: Make this work with the new modal library. Try and integrate this with the "slices"
$
(
"body"
).
append
(
'<div id="circuit_editor" class="leanModal_box"
style="z-index: 11000; left: 50%; margin-left: -250px; position: absolute; top: 100px; opacity: 1; "
><div align="center">'
+
$
(
"body"
).
append
(
'<div id="circuit_editor" class="leanModal_box"><div align="center">'
+
'<input class="schematic" height="'
+
schematic_editor_height
+
'" width="'
+
schematic_editor_width
+
'" id="schematic_editor" name="schematic" type="hidden" value=""/>'
+
'<button type="button" id="circuit_save_btn">save</button></div></div>'
);
'<button type="button" id="circuit_save_btn"
class="btn-primary"
>save</button></div></div>'
);
//This is the editor that pops up as a modal
var
editorCircuit
=
$
(
"#schematic_editor"
).
get
(
0
);
...
...
@@ -54,7 +54,8 @@ $(function(){
CodeMirror
.
defineMode
(
"mitx_markdown"
,
function
(
cmCfg
,
modeCfg
)
{
var
htmlMode
=
CodeMirror
.
getMode
(
cmCfg
,
{
name
:
'xml'
,
htmlMode
:
true
});
var
htmlFound
=
CodeMirror
.
mimeModes
.
hasOwnProperty
(
"text/html"
);
var
htmlMode
=
CodeMirror
.
getMode
(
cmCfg
,
htmlFound
?
"text/html"
:
"text/plain"
);
var
header
=
'header'
,
code
=
'comment'
...
...
@@ -67,6 +68,38 @@ CodeMirror.defineMode("mitx_markdown", function(cmCfg, modeCfg) {
,
strong
=
'strong'
,
emstrong
=
'emstrong'
;
var
hrRE
=
/^
([
*
\-
=_
])(?:\s
*
\1){2,}\s
*$/
,
ulRE
=
/^
[
*
\-
+
]\s
+/
,
olRE
=
/^
[
0-9
]
+
\.\s
+/
,
headerRE
=
/^
(?:\={3,}
|-
{3,})
$/
,
textRE
=
/^
[^\[
*_
\\
<>`
]
+/
,
circuitRE
=
/^circuit-schematic:
(
.*
)
$/
;
function
switchInline
(
stream
,
state
,
f
)
{
state
.
f
=
state
.
inline
=
f
;
return
f
(
stream
,
state
);
}
function
switchBlock
(
stream
,
state
,
f
)
{
state
.
f
=
state
.
block
=
f
;
return
f
(
stream
,
state
);
}
// Blocks
function
blankLine
(
state
)
{
// Reset EM state
state
.
em
=
false
;
// Reset STRONG state
state
.
strong
=
false
;
if
(
!
htmlFound
&&
state
.
f
==
htmlBlock
)
{
state
.
f
=
inlineNormal
;
state
.
block
=
blockNormal
;
}
return
null
;
}
function
escapeHtml
(
unsafe
)
{
return
unsafe
.
replace
(
/&/g
,
"&"
)
...
...
@@ -108,34 +141,13 @@ CodeMirror.defineMode("mitx_markdown", function(cmCfg, modeCfg) {
}
};
var
hrRE
=
/^
[
*-=_
]
/
,
ulRE
=
/^
[
*-+
]\s
+/
,
olRE
=
/^
[
0-9
]
+
\.\s
+/
,
headerRE
=
/^
(?:\={3,}
|-
{3,})
$/
,
codeRE
=
/^
(
k:
\t
|
\s{4,})
/
,
textRE
=
/^
[^\[
*_
\\
<>`
]
+/
,
circuitRE
=
/^circuit-schematic:
(
.*
)
$/
;
function
switchInline
(
stream
,
state
,
f
)
{
state
.
f
=
state
.
inline
=
f
;
return
f
(
stream
,
state
);
}
function
switchBlock
(
stream
,
state
,
f
)
{
state
.
f
=
state
.
block
=
f
;
return
f
(
stream
,
state
);
}
// Blocks
function
blockNormal
(
stream
,
state
)
{
var
match
;
if
(
stream
.
match
(
circuitRE
))
{
stream
.
skipToEnd
();
return
circuit_formatter
;
}
else
if
(
stream
.
match
(
codeRE
))
{
}
else
if
(
state
.
indentationDiff
>=
4
)
{
state
.
indentation
-=
state
.
indentationDiff
;
stream
.
skipToEnd
();
return
code
;
}
else
if
(
stream
.
eatSpace
())
{
...
...
@@ -147,11 +159,8 @@ CodeMirror.defineMode("mitx_markdown", function(cmCfg, modeCfg) {
state
.
quote
=
true
;
}
else
if
(
stream
.
peek
()
===
'['
)
{
return
switchInline
(
stream
,
state
,
footnoteLink
);
}
else
if
(
hrRE
.
test
(
stream
.
peek
()))
{
var
re
=
new
RegExp
(
'(?:
\
s*['
+
stream
.
peek
()
+
']){3,}$'
);
if
(
stream
.
match
(
re
,
true
))
{
}
else
if
(
stream
.
match
(
hrRE
,
true
))
{
return
hr
;
}
}
else
if
(
match
=
stream
.
match
(
ulRE
,
true
)
||
stream
.
match
(
olRE
,
true
))
{
state
.
indentation
+=
match
[
0
].
length
;
return
list
;
...
...
@@ -162,49 +171,30 @@ CodeMirror.defineMode("mitx_markdown", function(cmCfg, modeCfg) {
function
htmlBlock
(
stream
,
state
)
{
var
style
=
htmlMode
.
token
(
stream
,
state
.
htmlState
);
if
(
style
===
'tag'
&&
state
.
htmlState
.
type
!==
'openTag'
&&
!
state
.
htmlState
.
context
)
{
if
(
htmlFound
&&
style
===
'tag'
&&
state
.
htmlState
.
type
!==
'openTag'
&&
!
state
.
htmlState
.
context
)
{
state
.
f
=
inlineNormal
;
state
.
block
=
blockNormal
;
}
if
(
state
.
md_inside
&&
stream
.
current
().
indexOf
(
">"
)
!=-
1
)
{
state
.
f
=
inlineNormal
;
state
.
block
=
blockNormal
;
state
.
htmlState
.
context
=
undefined
;
}
return
style
;
}
// Inline
function
getType
(
state
)
{
var
styles
=
[];
// Set defaults
returnValue
=
''
;
if
(
state
.
strong
)
{
styles
.
push
(
state
.
em
?
emstrong
:
strong
);
}
else
if
(
state
.
em
)
{
styles
.
push
(
em
);
}
// Strong / Emphasis
if
(
state
.
strong
){
if
(
state
.
em
){
returnValue
+=
(
returnValue
?
' '
:
''
)
+
emstrong
;
}
else
{
returnValue
+=
(
returnValue
?
' '
:
''
)
+
strong
;
}
}
else
{
if
(
state
.
em
){
returnValue
+=
(
returnValue
?
' '
:
''
)
+
em
;
}
}
// Header
if
(
state
.
header
){
returnValue
+=
(
returnValue
?
' '
:
''
)
+
header
;
}
// Quotes
if
(
state
.
quote
){
returnValue
+=
(
returnValue
?
' '
:
''
)
+
quote
;
}
// Check valud and return
if
(
!
returnValue
){
returnValue
=
null
;
}
return
returnValue
;
if
(
state
.
header
)
{
styles
.
push
(
header
);
}
if
(
state
.
quote
)
{
styles
.
push
(
quote
);
}
return
styles
.
length
?
styles
.
join
(
' '
)
:
null
;
}
function
handleText
(
stream
,
state
)
{
...
...
@@ -232,10 +222,22 @@ CodeMirror.defineMode("mitx_markdown", function(cmCfg, modeCfg) {
return switchInline(stream, state, linkText);
}
if (ch === '
<
' && stream.match(/^
\
w/, false)) {
var md_inside = false;
if (stream.string.indexOf(">")!=-1) {
var atts = stream.string.substring(1,stream.string.indexOf(">"));
if (/markdown
\
s*=
\
s*('
|
"){0,1}1('|"
){
0
,
1
}
/.test
(
atts
))
{
state
.
md_inside
=
true
;
}
}
stream
.
backUp
(
1
);
return
switchBlock
(
stream
,
state
,
htmlBlock
);
}
if
(
ch
===
'<'
&&
stream
.
match
(
/^
\/\w
*
?
>/
))
{
state
.
md_inside
=
false
;
return
"tag"
;
}
var
t
=
getType
(
state
);
if
(
ch
===
'*'
||
ch
===
'_'
)
{
if
(
stream
.
eat
(
ch
))
{
...
...
@@ -307,7 +309,7 @@ CodeMirror.defineMode("mitx_markdown", function(cmCfg, modeCfg) {
f: blockNormal,
block: blockNormal,
htmlState:
htmlMode.startState(
),
htmlState:
CodeMirror.startState(htmlMode
),
indentation: 0,
inline: inlineNormal,
...
...
@@ -332,45 +334,34 @@ CodeMirror.defineMode("mitx_markdown", function(cmCfg, modeCfg) {
em: s.em,
strong: s.strong,
header: s.header,
quote: s.quote
quote: s.quote,
md_inside: s.md_inside
};
},
token: function(stream, state) {
if (stream.sol()) {
// Reset EM state
state.em = false;
// Reset STRONG state
state.strong = false;
if (stream.match(/^
\
s*$/, true)) { return blankLine(state); }
// Reset state.header
state.header = false;
// Reset state.quote
state.quote = false;
state.f = state.block;
var previousIndentation = state.indentation
, currentIndentation = 0;
while (previousIndentation > 0) {
if (stream.eat('
')) {
previousIndentation--;
currentIndentation++;
} else if (previousIndentation >= 4 && stream.eat('
\
t
')) {
previousIndentation -= 4;
currentIndentation += 4;
} else {
break;
}
}
state.indentation = currentIndentation;
if (currentIndentation > 0) return null;
var indentation = stream.match(/^
\
s*/, true)[0].replace(/
\
t/g, '
').length;
state.indentationDiff = indentation - state.indentation;
state.indentation = indentation;
if (indentation > 0) { return null; }
}
return state.f(stream, state);
},
blankLine: blankLine,
getType: getType
};
});
}
, "xml"
);
CodeMirror.defineMIME("text/x-markdown", "markdown");
common/static/js/vendor/CodeMirror/xml.js
View file @
d3962ecd
CodeMirror
.
defineMode
(
"xml"
,
function
(
config
,
parserConfig
)
{
var
indentUnit
=
config
.
indentUnit
;
var
Kludges
=
parserConfig
.
htmlMode
?
{
autoSelfClosers
:
{
"br"
:
true
,
"img"
:
true
,
"hr"
:
true
,
"link"
:
true
,
"input"
:
true
,
"meta"
:
true
,
"col"
:
true
,
"frame"
:
true
,
"base"
:
true
,
"area"
:
true
},
autoSelfClosers
:
{
'area'
:
true
,
'base'
:
true
,
'br'
:
true
,
'col'
:
true
,
'command'
:
true
,
'embed'
:
true
,
'frame'
:
true
,
'hr'
:
true
,
'img'
:
true
,
'input'
:
true
,
'keygen'
:
true
,
'link'
:
true
,
'meta'
:
true
,
'param'
:
true
,
'source'
:
true
,
'track'
:
true
,
'wbr'
:
true
},
implicitlyClosed
:
{
'dd'
:
true
,
'li'
:
true
,
'optgroup'
:
true
,
'option'
:
true
,
'p'
:
true
,
'rp'
:
true
,
'rt'
:
true
,
'tbody'
:
true
,
'td'
:
true
,
'tfoot'
:
true
,
'th'
:
true
,
'tr'
:
true
},
contextGrabbers
:
{
'dd'
:
{
'dd'
:
true
,
'dt'
:
true
},
'dt'
:
{
'dd'
:
true
,
'dt'
:
true
},
'li'
:
{
'li'
:
true
},
'option'
:
{
'option'
:
true
,
'optgroup'
:
true
},
'optgroup'
:
{
'optgroup'
:
true
},
'p'
:
{
'address'
:
true
,
'article'
:
true
,
'aside'
:
true
,
'blockquote'
:
true
,
'dir'
:
true
,
'div'
:
true
,
'dl'
:
true
,
'fieldset'
:
true
,
'footer'
:
true
,
'form'
:
true
,
'h1'
:
true
,
'h2'
:
true
,
'h3'
:
true
,
'h4'
:
true
,
'h5'
:
true
,
'h6'
:
true
,
'header'
:
true
,
'hgroup'
:
true
,
'hr'
:
true
,
'menu'
:
true
,
'nav'
:
true
,
'ol'
:
true
,
'p'
:
true
,
'pre'
:
true
,
'section'
:
true
,
'table'
:
true
,
'ul'
:
true
},
'rp'
:
{
'rp'
:
true
,
'rt'
:
true
},
'rt'
:
{
'rp'
:
true
,
'rt'
:
true
},
'tbody'
:
{
'tbody'
:
true
,
'tfoot'
:
true
},
'td'
:
{
'td'
:
true
,
'th'
:
true
},
'tfoot'
:
{
'tbody'
:
true
},
'th'
:
{
'td'
:
true
,
'th'
:
true
},
'thead'
:
{
'tbody'
:
true
,
'tfoot'
:
true
},
'tr'
:
{
'tr'
:
true
}
},
doNotIndent
:
{
"pre"
:
true
},
allowUnquoted
:
true
,
allowMissing
:
false
}
:
{
autoSelfClosers
:
{},
doNotIndent
:
{},
allowUnquoted
:
false
,
allowMissing
:
false
};
}
:
{
autoSelfClosers
:
{},
implicitlyClosed
:
{},
contextGrabbers
:
{},
doNotIndent
:
{},
allowUnquoted
:
false
,
allowMissing
:
false
};
var
alignCDATA
=
parserConfig
.
alignCDATA
;
// Return variables for tokenizers
...
...
@@ -162,7 +194,12 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
}
else
if
(
type
==
"closeTag"
)
{
var
err
=
false
;
if
(
curState
.
context
)
{
err
=
curState
.
context
.
tagName
!=
tagName
;
if
(
curState
.
context
.
tagName
!=
tagName
)
{
if
(
Kludges
.
implicitlyClosed
.
hasOwnProperty
(
curState
.
context
.
tagName
.
toLowerCase
()))
{
popContext
();
}
err
=
!
curState
.
context
||
curState
.
context
.
tagName
!=
tagName
;
}
}
else
{
err
=
true
;
}
...
...
@@ -174,9 +211,15 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
function
endtag
(
startOfLine
)
{
return
function
(
type
)
{
if
(
type
==
"selfcloseTag"
||
(
type
==
"endTag"
&&
Kludges
.
autoSelfClosers
.
hasOwnProperty
(
curState
.
tagName
.
toLowerCase
())))
(
type
==
"endTag"
&&
Kludges
.
autoSelfClosers
.
hasOwnProperty
(
curState
.
tagName
.
toLowerCase
())))
{
maybePopContext
(
curState
.
tagName
.
toLowerCase
());
return
cont
();
if
(
type
==
"endTag"
)
{
pushContext
(
curState
.
tagName
,
startOfLine
);
return
cont
();}
}
if
(
type
==
"endTag"
)
{
maybePopContext
(
curState
.
tagName
.
toLowerCase
());
pushContext
(
curState
.
tagName
,
startOfLine
);
return
cont
();
}
return
cont
();
};
}
...
...
@@ -188,6 +231,20 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
return
cont
(
arguments
.
callee
);
}
}
function
maybePopContext
(
nextTagName
)
{
var
parentTagName
;
while
(
true
)
{
if
(
!
curState
.
context
)
{
return
;
}
parentTagName
=
curState
.
context
.
tagName
.
toLowerCase
();
if
(
!
Kludges
.
contextGrabbers
.
hasOwnProperty
(
parentTagName
)
||
!
Kludges
.
contextGrabbers
[
parentTagName
].
hasOwnProperty
(
nextTagName
))
{
return
;
}
popContext
();
}
}
function
attributes
(
type
)
{
if
(
type
==
"word"
)
{
setStyle
=
"attribute"
;
return
cont
(
attribute
,
attributes
);}
...
...
@@ -255,7 +312,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
if
(
a
.
indented
!=
b
.
indented
||
a
.
tokenize
!=
b
.
tokenize
)
return
false
;
for
(
var
ca
=
a
.
context
,
cb
=
b
.
context
;
;
ca
=
ca
.
prev
,
cb
=
cb
.
prev
)
{
if
(
!
ca
||
!
cb
)
return
ca
==
cb
;
if
(
ca
.
tagName
!=
cb
.
tagName
)
return
false
;
if
(
ca
.
tagName
!=
cb
.
tagName
||
ca
.
indent
!=
cb
.
indent
)
return
false
;
}
},
...
...
@@ -263,5 +320,7 @@ CodeMirror.defineMode("xml", function(config, parserConfig) {
};
});
CodeMirror
.
defineMIME
(
"text/xml"
,
"xml"
);
CodeMirror
.
defineMIME
(
"application/xml"
,
"xml"
);
CodeMirror
.
defineMIME
(
"text/html"
,
{
name
:
"xml"
,
htmlMode
:
true
});
if
(
!
CodeMirror
.
mimeModes
.
hasOwnProperty
(
"text/html"
))
CodeMirror
.
defineMIME
(
"text/html"
,
{
name
:
"xml"
,
htmlMode
:
true
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment