Commit 986999c6 by Vik Paruchuri

Fix cheatsheet, start working on xml replacement

parent 3a15f935
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<div class="col prompt"> <div class="col prompt">
</div> </div>
<div class="col"> <div class="col">
<pre><code>[explanation] A short explanation of the answer. [explanation]</code></pre> <pre><code>[prompt]Why is the sky blue?[prompt]</code></pre>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
...@@ -49,9 +49,17 @@ ...@@ -49,9 +49,17 @@
<div class="col sample rubric"><!DOCTYPE html> <div class="col sample rubric"><!DOCTYPE html>
</div> </div>
<div class="col"> <div class="col">
<pre><code>( ) red <pre><code>
( ) green [rubric]
(x) blue</code></pre> + Color Identification
- Incorrect
- Correct
+ Grammar
- Poor
- Acceptable
- Superb
[rubric]
</code></pre>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
...@@ -59,7 +67,7 @@ ...@@ -59,7 +67,7 @@
<div class="col sample tasks"> <div class="col sample tasks">
</div> </div>
<div class="col"> <div class="col">
<pre><code>[[wrong, (right)]]</code></pre> <pre><code>[tasks](Self), ({0,1}AI), ({1,3}Peer)[tasks]</code></pre>
</div> </div>
</div> </div>
</div> </div>
......
class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor
# TODO really, these templates should come from or also feed the cheatsheet # TODO really, these templates should come from or also feed the cheatsheet
@rubricTemplate : "+ Color Identification\n- Incorrect\n- Correct\n + Grammar\n- Poor\n- Acceptable\n- Superb \n" @rubricTemplate : "[rubric]\n+ Color Identification\n- Incorrect\n- Correct\n + Grammar\n- Poor\n- Acceptable\n- Superb \n[rubric]\n"
@tasksTemplate: "[[Self, {0,1}AI, {1,3}Peer]]\n" @tasksTemplate: "[tasks]\n(Self), ({0,1}AI), ({1,3}Peer)\n[tasks]\n"
@promptTemplate: "[prompt]\nWhy is the sky blue?\n[prompt]\n" @promptTemplate: "[prompt]\nWhy is the sky blue?\n[prompt]\n"
constructor: (element) -> constructor: (element) ->
...@@ -108,26 +108,26 @@ class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor ...@@ -108,26 +108,26 @@ class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor
@element.off('click', '.format-buttons a', @onToolbarButton) @element.off('click', '.format-buttons a', @onToolbarButton)
@element.off('click', '.cheatsheet-toggle', @toggleCheatsheet) @element.off('click', '.cheatsheet-toggle', @toggleCheatsheet)
if @current_editor == @markdown_editor if @current_editor == @markdown_editor
{ {
data: MarkdownEditingDescriptor.markdownToXml(@markdown_editor.getValue()) data: MarkdownEditingDescriptor.markdownToXml(@markdown_editor.getValue())
metadata: metadata:
markdown: @markdown_editor.getValue() markdown: @markdown_editor.getValue()
} }
else else
{ {
data: @xml_editor.getValue() data: @xml_editor.getValue()
metadata: metadata:
markdown: null markdown: null
} }
@insertRubric: (selectedText) -> @insertRubric: (selectedText) ->
return OpenEndedMarkdownEditingDescriptor.insertGenericInput(selectedText, '(', ')', OpenEndedMarkdownEditingDescriptor.rubricTemplate) return OpenEndedMarkdownEditingDescriptor.insertGenericInput(selectedText, '[rubric]', '[rubric]', OpenEndedMarkdownEditingDescriptor.rubricTemplate)
@insertPrompt: (selectedText) -> @insertPrompt: (selectedText) ->
return OpenEndedMarkdownEditingDescriptor.insertGenericInput(selectedText, '[', ']', OpenEndedMarkdownEditingDescriptor.promptTemplate) return OpenEndedMarkdownEditingDescriptor.insertGenericInput(selectedText, '[prompt]', '[prompt]', OpenEndedMarkdownEditingDescriptor.promptTemplate)
@insertTasks: (selectedText) -> @insertTasks: (selectedText) ->
return OpenEndedMarkdownEditingDescriptor.insertGenericInput(selectedText, '= ', '', OpenEndedMarkdownEditingDescriptor.tasksTemplate) return OpenEndedMarkdownEditingDescriptor.insertGenericInput(selectedText, '[tasks]', '[tasks]', OpenEndedMarkdownEditingDescriptor.tasksTemplate)
@insertGenericInput: (selectedText, lineStart, lineEnd, template) -> @insertGenericInput: (selectedText, lineStart, lineEnd, template) ->
if selectedText.length > 0 if selectedText.length > 0
...@@ -140,12 +140,8 @@ class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor ...@@ -140,12 +140,8 @@ class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor
toXml = `function(markdown) { toXml = `function(markdown) {
var xml = markdown; var xml = markdown;
// replace headers // group rubrics
xml = xml.replace(/(^.*?$)(?=\n\=\=+$)/gm, '<h1>$1</h1>'); xml = xml.replace(/\[rubric\]\n?([^\]]*)\[\/?rubric\]/gmi, function(match, p) {
xml = xml.replace(/\n^\=\=+$/gm, '');
// group multiple choice answers
xml = xml.replace(/(^\s*\(.?\).*?$\n*)+/gm, function(match, p) {
var groupString = '<multiplechoiceresponse>\n'; var groupString = '<multiplechoiceresponse>\n';
groupString += ' <choicegroup type="MultipleChoice">\n'; groupString += ' <choicegroup type="MultipleChoice">\n';
var options = match.split('\n'); var options = match.split('\n');
...@@ -213,37 +209,20 @@ class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor ...@@ -213,37 +209,20 @@ class @OpenEndedMarkdownEditingDescriptor extends XModule.Descriptor
selectString += '</optionresponse>\n\n'; selectString += '</optionresponse>\n\n';
return selectString; return selectString;
}); });
// replace explanations // replace prompts
xml = xml.replace(/\[explanation\]\n?([^\]]*)\[\/?explanation\]/gmi, function(match, p1) { xml = xml.replace(/\[prompt\]\n?([^\]]*)\[\/?prompt\]/gmi, function(match, p1) {
var selectString = '<solution>\n<div class="detailed-solution">\nExplanation\n\n' + p1 + '\n</div>\n</solution>'; var selectString = '<prompt>\n' + p1 + '\n</prompt>';
return selectString; return selectString;
}); });
// split scripts and wrap paragraphs
var splits = xml.split(/(\<\/?script.*?\>)/g);
var scriptFlag = false;
for(var i = 0; i < splits.length; i++) {
if(/\<script/.test(splits[i])) {
scriptFlag = true;
}
if(!scriptFlag) {
splits[i] = splits[i].replace(/(^(?!\s*\<|$).*$)/gm, '<p>$1</p>');
}
if(/\<\/script/.test(splits[i])) {
scriptFlag = false;
}
}
xml = splits.join('');
// rid white space // rid white space
xml = xml.replace(/\n\n\n/g, '\n'); xml = xml.replace(/\n\n\n/g, '\n');
// surround w/ problem tag // surround w/ combinedopenended tag
xml = '<problem>\n' + xml + '\n</problem>'; xml = '<combinedopenended>\n' + xml + '\n</combinedopenended>';
return xml; return xml;
} }
` `
return toXml markdown return toXml markdown
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment