Added a [code] block to the problem markdown parser
Adds a code block to the problem markdown parser that translates [code] TestTest [/code] to <pre><code> TestTest </code></pre>
This commit is contained in:
1
AUTHORS
1
AUTHORS
@@ -92,3 +92,4 @@ Felipe Montoya <felipe.montoya@edunext.co>
|
||||
Julia Hansbrough <julia@edx.org>
|
||||
Pavel Yushchenko <pavelyushchenko@gmail.com>
|
||||
Nicolas Chevalier <nicolas.chevalier@epitech.eu>
|
||||
Iain Dunning <idunning@mit.edu>
|
||||
|
||||
@@ -314,6 +314,10 @@ describe 'MarkdownEditingDescriptor', ->
|
||||
|
||||
bad tests require drivel
|
||||
</div>
|
||||
|
||||
[code]
|
||||
Code should be nicely monospaced.
|
||||
[/code]
|
||||
""")
|
||||
expect(data).toEqual("""<problem>
|
||||
<p>Not a header</p>
|
||||
@@ -382,5 +386,9 @@ describe 'MarkdownEditingDescriptor', ->
|
||||
|
||||
<p>bad tests require drivel</p>
|
||||
</div>
|
||||
|
||||
<pre><code>
|
||||
Code should be nicely monospaced.
|
||||
</code></pre>
|
||||
</problem>""")
|
||||
# failure tests
|
||||
|
||||
@@ -268,18 +268,24 @@ class @MarkdownEditingDescriptor extends XModule.Descriptor
|
||||
var selectString = '<solution>\n<div class="detailed-solution">\nExplanation\n\n' + p1 + '\n</div>\n</solution>';
|
||||
return selectString;
|
||||
});
|
||||
|
||||
// replace code blocks
|
||||
xml = xml.replace(/\[code\]\n?([^\]]*)\[\/?code\]/gmi, function(match, p1) {
|
||||
var selectString = '<pre><code>\n' + p1 + '</code></pre>';
|
||||
return selectString;
|
||||
});
|
||||
|
||||
// split scripts and wrap paragraphs
|
||||
var splits = xml.split(/(\<\/?script.*?\>)/g);
|
||||
// split scripts and preformatted sections, and wrap paragraphs
|
||||
var splits = xml.split(/(\<\/?(?:script|pre).*?\>)/g);
|
||||
var scriptFlag = false;
|
||||
for(var i = 0; i < splits.length; i++) {
|
||||
if(/\<script/.test(splits[i])) {
|
||||
if(/\<(script|pre)/.test(splits[i])) {
|
||||
scriptFlag = true;
|
||||
}
|
||||
if(!scriptFlag) {
|
||||
splits[i] = splits[i].replace(/(^(?!\s*\<|$).*$)/gm, '<p>$1</p>');
|
||||
}
|
||||
if(/\<\/script/.test(splits[i])) {
|
||||
if(/\<\/(script|pre)/.test(splits[i])) {
|
||||
scriptFlag = false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user