-/*
-Ajax upload
-*/jQuery.extend({createUploadIframe:function(d,b){var a="jUploadFrame"+d;if(window.ActiveXObject){var c=document.createElement('<iframe id="'+a+'" name="'+a+'" />');if(typeof b=="boolean"){c.src="javascript:false"}else{if(typeof b=="string"){c.src=b}}}else{var c=document.createElement("iframe");c.id=a;c.name=a}c.style.position="absolute";c.style.top="-1000px";c.style.left="-1000px";document.body.appendChild(c);return c},createUploadForm:function(g,b){var e="jUploadForm"+g;var a="jUploadFile"+g;var d=$('<form action="" method="POST" name="'+e+'" id="'+e+'" enctype="multipart/form-data"></form>');var c=$("#"+b);var f=$(c).clone();$(c).attr("id",a);$(c).before(f);$(c).appendTo(d);$(d).css("position","absolute");$(d).css("top","-1200px");$(d).css("left","-1200px");$(d).appendTo("body");return d},ajaxFileUpload:function(k){k=jQuery.extend({},jQuery.ajaxSettings,k);var a=new Date().getTime();var b=jQuery.createUploadForm(a,k.fileElementId);var i=jQuery.createUploadIframe(a,k.secureuri);var h="jUploadFrame"+a;var j="jUploadForm"+a;if(k.global&&!jQuery.active++){jQuery.event.trigger("ajaxStart")}var c=false;var f={};if(k.global){jQuery.event.trigger("ajaxSend",[f,k])}var d=function(l){var p=document.getElementById(h);try{if(p.contentWindow){f.responseText=p.contentWindow.document.body?p.contentWindow.document.body.innerText:null;f.responseXML=p.contentWindow.document.XMLDocument?p.contentWindow.document.XMLDocument:p.contentWindow.document}else{if(p.contentDocument){f.responseText=p.contentDocument.document.body?p.contentDocument.document.body.textContent||document.body.innerText:null;f.responseXML=p.contentDocument.document.XMLDocument?p.contentDocument.document.XMLDocument:p.contentDocument.document}}}catch(o){jQuery.handleError(k,f,null,o)}if(f||l=="timeout"){c=true;var m;try{m=l!="timeout"?"success":"error";if(m!="error"){var n=jQuery.uploadHttpData(f,k.dataType);if(k.success){k.success(n,m)}if(k.global){jQuery.event.trigger("ajaxSuccess",[f,k])}}else{jQuery.handleError(k,f,m)}}catch(o){m="error";jQuery.handleError(k,f,m,o)}if(k.global){jQuery.event.trigger("ajaxComplete",[f,k])}if(k.global&&!--jQuery.active){jQuery.event.trigger("ajaxStop")}if(k.complete){k.complete(f,m)}jQuery(p).unbind();setTimeout(function(){try{$(p).remove();$(b).remove()}catch(q){jQuery.handleError(k,f,null,q)}},100);f=null}};if(k.timeout>0){setTimeout(function(){if(!c){d("timeout")}},k.timeout)}try{var b=$("#"+j);$(b).attr("action",k.url);$(b).attr("method","POST");$(b).attr("target",h);if(b.encoding){b.encoding="multipart/form-data"}else{b.enctype="multipart/form-data"}$(b).submit()}catch(g){jQuery.handleError(k,f,null,g)}if(window.attachEvent){document.getElementById(h).attachEvent("onload",d)}else{document.getElementById(h).addEventListener("load",d,false)}return{abort:function(){}}},uploadHttpData:function(r,type){var data=!type;data=type=="xml"||data?r.responseXML:r.responseText;if(type=="script"){jQuery.globalEval(data)}if(type=="json"){eval("data = "+data)}if(type=="html"){jQuery("<div>").html(data).evalScripts()}return data}});
+jQuery.extend({createUploadIframe:function(d,b){var a="jUploadFrame"+d;if(window.ActiveXObject){var c=document.createElement('<iframe id="'+a+'" name="'+a+'" />');if(typeof b=="boolean"){c.src="javascript:false"}else{if(typeof b=="string"){c.src=b}}}else{var c=document.createElement("iframe");c.id=a;c.name=a}c.style.position="absolute";c.style.top="-1000px";c.style.left="-1000px";document.body.appendChild(c);return c},createUploadForm:function(g,b){var e="jUploadForm"+g;var a="jUploadFile"+g;var d=$('<form action="" method="POST" name="'+e+'" id="'+e+'" enctype="multipart/form-data"></form>');var c=$("#"+b);var f=$(c).clone();$(c).attr("id",a);$(c).before(f);$(c).appendTo(d);$(d).css("position","absolute");$(d).css("top","-1200px");$(d).css("left","-1200px");$(d).appendTo("body");return d},ajaxFileUpload:function(k){k=jQuery.extend({},jQuery.ajaxSettings,k);var a=new Date().getTime();var b=jQuery.createUploadForm(a,k.fileElementId);var i=jQuery.createUploadIframe(a,k.secureuri);var h="jUploadFrame"+a;var j="jUploadForm"+a;if(k.global&&!jQuery.active++){jQuery.event.trigger("ajaxStart")}var c=false;var f={};if(k.global){jQuery.event.trigger("ajaxSend",[f,k])}var d=function(l){var p=document.getElementById(h);try{if(p.contentWindow){f.responseText=p.contentWindow.document.body?p.contentWindow.document.body.innerText:null;f.responseXML=p.contentWindow.document.XMLDocument?p.contentWindow.document.XMLDocument:p.contentWindow.document}else{if(p.contentDocument){f.responseText=p.contentDocument.document.body?p.contentDocument.document.body.textContent||document.body.innerText:null;f.responseXML=p.contentDocument.document.XMLDocument?p.contentDocument.document.XMLDocument:p.contentDocument.document}}}catch(o){jQuery.handleError(k,f,null,o)}if(f||l=="timeout"){c=true;var m;try{m=l!="timeout"?"success":"error";if(m!="error"){var n=jQuery.uploadHttpData(f,k.dataType);if(k.success){k.success(n,m)}if(k.global){jQuery.event.trigger("ajaxSuccess",[f,k])}}else{jQuery.handleError(k,f,m)}}catch(o){m="error";jQuery.handleError(k,f,m,o)}if(k.global){jQuery.event.trigger("ajaxComplete",[f,k])}if(k.global&&!--jQuery.active){jQuery.event.trigger("ajaxStop")}if(k.complete){k.complete(f,m)}jQuery(p).unbind();setTimeout(function(){try{$(p).remove();$(b).remove()}catch(q){jQuery.handleError(k,f,null,q)}},100);f=null}};if(k.timeout>0){setTimeout(function(){if(!c){d("timeout")}},k.timeout)}try{var b=$("#"+j);$(b).attr("action",k.url);$(b).attr("method","POST");$(b).attr("target",h);if(b.encoding){b.encoding="multipart/form-data"}else{b.enctype="multipart/form-data"}$(b).submit()}catch(g){jQuery.handleError(k,f,null,g)}if(window.attachEvent){document.getElementById(h).attachEvent("onload",d)}else{document.getElementById(h).addEventListener("load",d,false)}return{abort:function(){}}},uploadHttpData:function(r,type){var data=!type;data=type=="xml"||data?r.responseXML:r.responseText;if(type=="script"){jQuery.globalEval(data)}if(type=="json"){eval("data = "+data)}if(type=="html"){jQuery("<div>").html(data).evalScripts()}return data}});
/*Upload call*/
function ajaxFileUpload(imageUrl)
{
alert(e);
}
}
- )
+ );
return false;
}
// Used to work around some browser bugs where we can't use feature testing.
- global.isIE = /msie/.test(nav.userAgent.toLowerCase());
- global.isIE_5or6 = /msie 6/.test(nav.userAgent.toLowerCase()) || /msie 5/.test(nav.userAgent.toLowerCase());
- global.isIE_7plus = global.isIE && !global.isIE_5or6;
- global.isOpera = /opera/.test(nav.userAgent.toLowerCase());
- global.isKonqueror = /konqueror/.test(nav.userAgent.toLowerCase());
+ global.isIE = /msie/.test(nav.userAgent.toLowerCase());
+ global.isIE_5or6 = /msie 6/.test(nav.userAgent.toLowerCase()) || /msie 5/.test(nav.userAgent.toLowerCase());
+ global.isIE_7plus = global.isIE && !global.isIE_5or6;
+ global.isOpera = /opera/.test(nav.userAgent.toLowerCase());
+ global.isKonqueror = /konqueror/.test(nav.userAgent.toLowerCase());
var toolbar_strong_label = $.i18n._('bold') + " <strong> Ctrl-B";
var toolbar_emphasis_label = $.i18n._('italic') + " <em> Ctrl-I";
var toolbar_horizontal_label = $.i18n._('horizontal bar') + " <hr> Ctrl-R";
var toolbar_undo_label = $.i18n._('undo') + " Ctrl-Z";
var toolbar_redo_label = $.i18n._('redo') + " Ctrl-Y";
-
+
// -------------------------------------------------------------------
// YOUR CHANGES GO HERE
//
// The text that appears on the upper part of the dialog box when
// entering links.
- var imageDialogText = "<p style='margin-top: 0px'>" + $.i18n._('enter image url') + '</p>';
- var linkDialogText = "<p style='margin-top: 0px'>" + $.i18n._('enter url') + '</p>';
- var uploadImageHTML ="<div>" + $.i18n._('upload image') + "</div>" +
- "<input type=\"file\" name=\"file-upload\" id=\"file-upload\" size=\"26\" "+
- "onchange=\"return ajaxFileUpload($('#image-url'));\"/><br>" +
- "<img id=\"loading\" src=\"" + mediaUrl("media/images/indicator.gif") + "\" style=\"display:none;\"/>";
+ var imageDialogText = "<p style='margin-top: 0px'>" + $.i18n._('enter image url') + "</p>";
+ var linkDialogText = "<p style='margin-top: 0px'>" + $.i18n._('enter url') + "</p>";
+ var uploadImageHTML ="<div>" + $.i18n._('upload image') + "</div>" +
+ "<input type=\"file\" name=\"file-upload\" id=\"file-upload\" size=\"26\" "+
+ "onchange=\"return ajaxFileUpload($('#image-url'));\"/><br>" +
+ "<img id=\"loading\" src=\"" + mediaUrl("media/images/indicator.gif") + "\" style=\"display:none;\"/>";
+
// The default text that appears in the dialog input box when entering
// links.
}
else if (elem.currentStyle) {
// IE
- return elem.currentStyle.display !== "none";
+ return elem.currentStyle["display"] !== "none";
}
};
}
var pattern = regex.toString();
- var flags;
+ var flags = "";
// Replace the flags with empty space and store them.
- pattern = pattern.replace(/\/([gim]*)$/, "");
- flags = re.$1;
+ // Technically, this can match incorrect flags like "gmm".
+ var result = pattern.match(/\/([gim]*)$/);
+ if (result === null) {
+ flags = result[0];
+ }
+ else {
+ flags = "";
+ }
- // Remove the slash delimiters on the regular expression.
- pattern = pattern.replace(/(^\/|\/$)/g, "");
+ // Remove the flags and slash delimiters from the regular expression.
+ pattern = pattern.replace(/(^\/|\/[gim]*$)/g, "");
pattern = pre + pattern + post;
- return new re(pattern, flags);
- };
+ return new RegExp(pattern, flags);
+ }
// Sets the image for a button passed to the WMD editor.
text = text.replace('http://https://', 'https://');
text = text.replace('http://ftp://', 'ftp://');
- if (text.indexOf('http://') === -1 && text.indexOf('ftp://') === -1 && text.indexOf('/') != 0) {
+ if (text.indexOf('http://') === -1 && text.indexOf('ftp://') === -1 && text.indexOf('https://') === -1 && text.indexOf('/') !== 0) {
text = 'http://' + text;
}
}
var upload = doc.createElement("div");
upload.innerHTML = uploadImageHTML;
upload.style.padding = "5px";
- form.appendChild(upload);
+ form.appendChild(upload);
}
-
+
// The ok button
var okButton = doc.createElement("input");
okButton.type = "button";
position.getTop = function(elem, isInner){
var result = elem.offsetTop;
if (!isInner) {
- while (elem.offsetParent) {
- elem = elem.offsetParent;
- result += elem.offsetTop;
- }
+ while (elem = elem.offsetParent) {
+ result += elem.offsetTop;
+ }
}
return result;
};
var handlePaste = function(){
if (global.isIE || (inputStateObj && inputStateObj.text != wmd.panels.input.value)) {
- if (timer === undefined) {
+ if (timer == undefined) {
mode = "paste";
saveState();
refreshState();
previewRefreshCallback();
};
- var noCleanup = button.textOp(chunks, fixupInputArea);
+ var useDefaultText = true;
+ var noCleanup = button.textOp(chunks, fixupInputArea, useDefaultText);
if(!noCleanup) {
fixupInputArea();
}
doClick(this);
return false;
- };
+ }
}
}
else {
button.style.backgroundPosition = button.XShift + " " + disabledYShift;
button.onmouseover = button.onmouseout = button.onclick = function(){};
}
- };
-
+ }
+
var makeSpritedButtonRow = function(){
+
var buttonBar = document.getElementById("wmd-button-bar");
+
var normalYShift = "0px";
var disabledYShift = "-20px";
var highlightYShift = "-40px";
linkButton.id = "wmd-link-button";
linkButton.title = toolbar_hyperlink_label;
linkButton.XShift = "-40px";
- linkButton.textOp = function(chunk, postProcessing){
+ linkButton.textOp = function(chunk, postProcessing, useDefaultText){
return command.doLinkOrImage(chunk, postProcessing, false);
};
setupButton(linkButton, true);
imageButton.id = "wmd-image-button";
imageButton.title = toolbar_image_label;
imageButton.XShift = "-100px";
- imageButton.textOp = function(chunk, postProcessing){
+ imageButton.textOp = function(chunk, postProcessing, useDefaultText){
return command.doLinkOrImage(chunk, postProcessing, true);
};
setupButton(imageButton, true);
olistButton.id = "wmd-olist-button";
olistButton.title = toolbar_numbered_label;
olistButton.XShift = "-120px";
- olistButton.textOp = function(chunk, postProcessing){
- command.doList(chunk, postProcessing, true);
+ olistButton.textOp = function(chunk, postProcessing, useDefaultText){
+ command.doList(chunk, postProcessing, true, useDefaultText);
};
setupButton(olistButton, true);
buttonRow.appendChild(olistButton);
ulistButton.id = "wmd-ulist-button";
ulistButton.title = toolbar_bulleted_label;
ulistButton.XShift = "-140px";
- ulistButton.textOp = function(chunk, postProcessing){
- command.doList(chunk, postProcessing, false);
+ ulistButton.textOp = function(chunk, postProcessing, useDefaultText){
+ command.doList(chunk, postProcessing, false, useDefaultText);
};
setupButton(ulistButton, true);
buttonRow.appendChild(ulistButton);
};
setupButton(redoButton, true);
buttonRow.appendChild(redoButton);
- /*
- var helpButton = document.createElement("li");
- helpButton.className = "wmd-button";
- helpButton.id = "wmd-help-button";
- helpButton.XShift = "-240px";
- helpButton.isHelp = true;
-
- var helpAnchor = document.createElement("a");
- helpAnchor.href = helpLink;
- helpAnchor.target = helpTarget
- helpAnchor.title = helpHoverTitle;
- helpButton.appendChild(helpAnchor);
-
- setupButton(helpButton, true);
- buttonRow.appendChild(helpButton);
- */
+
setUndoRedoButtonStates();
- };
+ }
var setupEditor = function(){
// Check to see if we have a button key and, if so execute the callback.
if (key.ctrlKey || key.metaKey) {
-
+
var keyCode = key.charCode || key.keyCode;
var keyCodeStr = String.fromCharCode(keyCode).toLowerCase();
if (keyCode === 190) {
keyCodeStr = ".";
}
-
+
switch(keyCodeStr) {
case "b":
doClick(document.getElementById("wmd-bold-button"));
case "l":
doClick(document.getElementById("wmd-link-button"));
break;
- case ".":
+ case "q":
doClick(document.getElementById("wmd-quote-button"));
break;
case "k":
}
});
- // Auto-indent on shift-enter
+ // Auto-continue lists, code blocks and block quotes when
+ // the enter key is pressed.
util.addEvent(inputBox, "keyup", function(key){
- if (key.shiftKey && !key.ctrlKey && !key.metaKey) {
+ if (!key.shiftKey && !key.ctrlKey && !key.metaKey) {
var keyCode = key.charCode || key.keyCode;
- // Character 13 is Enter
+ // Key code 13 is Enter
if (keyCode === 13) {
fakeButton = {};
fakeButton.textOp = command.doAutoindent;
}
});
+ // Disable ESC clearing the input textarea on IE
+ if (global.isIE) {
+ util.addEvent(inputBox, "keydown", function(key){
+ var code = key.keyCode;
+ // Key code 27 is ESC
+ if (code === 27) {
+ return false;
+ }
+ });
+ }
+
if (inputBox.form) {
var submitCallback = inputBox.form.onsubmit;
inputBox.form.onsubmit = function(){
// Restore this state into the input area.
this.restore = function(){
- if (stateObj.text !== undefined && stateObj.text != inputArea.value) {
+ if (stateObj.text != undefined && stateObj.text != inputArea.value) {
inputArea.value = stateObj.text;
}
this.setInputAreaSelection();
};
- wmd.Chunks.prototype.skipLines = function(nLinesBefore, nLinesAfter, findExtraNewlines){
+ wmd.Chunks.prototype.addBlankLines = function(nLinesBefore, nLinesAfter, findExtraNewlines){
if (nLinesBefore === undefined) {
nLinesBefore = 1;
chunk.selection = chunk.selection.replace(/\s+$/, "");
};
- command.doBold = function(chunk, postProcessing){
- return command.doBorI(chunk, postProcessing, 2, "strong text");
+ command.doBold = function(chunk, postProcessing, useDefaultText){
+ return command.doBorI(chunk, 2, "strong text");
};
- command.doItalic = function(chunk, postProcessing){
- return command.doBorI(chunk, postProcessing, 1, "emphasized text");
+ command.doItalic = function(chunk, postProcessing, useDefaultText){
+ return command.doBorI(chunk, 1, "emphasized text");
};
// chunk: The selected region that will be enclosed with */**
// nStars: 1 for italics, 2 for bold
// insertText: If you just click the button without highlighting text, this gets inserted
- command.doBorI = function(chunk, postProcessing, nStars, insertText){
+ command.doBorI = function(chunk, nStars, insertText){
// Get rid of whitespace and fixup newlines.
chunk.trimWhitespace();
};
if (isImage) {
- // add forth param to identify image window
+ // add fourth param to identify image window
util.prompt(imageDialogText, imageDefaultText, makeLinkMarkdown, 1);
}
else {
if (wmd.panels.preview) {
wmd.panels.preview.scrollTop = (wmd.panels.preview.scrollHeight - wmd.panels.preview.clientHeight) * getScaleFactor(wmd.panels.preview);
+ ;
}
if (wmd.panels.output) {
wmd.panels.output.scrollTop = (wmd.panels.output.scrollHeight - wmd.panels.output.clientHeight) * getScaleFactor(wmd.panels.output);
+ ;
}
};
init();
};
- // When making a list, hitting shift-enter will put your cursor on the next line
- // at the current indent level.
- command.doAutoindent = function(chunk, postProcessing){
+ // Moves the cursor to the next line and continues lists, quotes and code.
+ command.doAutoindent = function(chunk, postProcessing, useDefaultText){
chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/, "\n\n");
chunk.before = chunk.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/, "\n\n");
chunk.before = chunk.before.replace(/(\n|^)[ \t]+\n$/, "\n\n");
- if(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(chunk.before)){
+ useDefaultText = false;
+
+ if(/(\n|^)[ ]{0,3}([*+-])[ \t]+.*\n$/.test(chunk.before)){
if(command.doList){
- command.doList(chunk);
+ command.doList(chunk, postProcessing, false, true);
+ }
+ }
+ if(/(\n|^)[ ]{0,3}(\d+[.])[ \t]+.*\n$/.test(chunk.before)){
+ if(command.doList){
+ command.doList(chunk, postProcessing, true, true);
}
}
if(/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(chunk.before)){
if(command.doBlockquote){
- command.doBlockquote(chunk);
+ command.doBlockquote(chunk, postProcessing, useDefaultText);
}
}
if(/(\n|^)(\t|[ ]{4,}).*\n$/.test(chunk.before)){
if(command.doCode){
- command.doCode(chunk);
+ command.doCode(chunk, postProcessing, useDefaultText);
}
}
};
- command.doBlockquote = function(chunk, postProcessing){
+ command.doBlockquote = function(chunk, postProcessing, useDefaultText){
chunk.selection = chunk.selection.replace(/^(\n*)([^\r]+?)(\n*)$/,
function(totalMatch, newlinesBefore, text, newlinesAfter){
chunk.selection = blankLine + chunk.selection;
return "";
});
-
+
+ var defaultText = useDefaultText ? "Blockquote" : "";
chunk.selection = chunk.selection.replace(/^(\s|>)+$/ ,"");
- chunk.selection = chunk.selection || "Blockquote";
+ chunk.selection = chunk.selection || defaultText;
if(chunk.before){
chunk.before = chunk.before.replace(/\n?$/,"\n");
command.wrap(chunk, wmd.wmd_env.lineLength - 2);
chunk.selection = chunk.selection.replace(/^/gm, "> ");
replaceBlanksInTags(true);
- chunk.skipLines();
+ chunk.addBlankLines();
}
else{
chunk.selection = chunk.selection.replace(/^[ ]{0,3}> ?/gm, "");
}
};
- command.doCode = function(chunk, postProcessing){
+ command.doCode = function(chunk, postProcessing, useDefaultText){
var hasTextBefore = /\S[ ]*$/.test(chunk.before);
var hasTextAfter = /^[ ]*\S/.test(chunk.after);
return "";
});
- var nLinesBack = 1;
- var nLinesForward = 1;
+ var nLinesBefore = 1;
+ var nLinesAfter = 1;
+
- if(/\n(\t|[ ]{4,}).*\n$/.test(chunk.before)){
- nLinesBack = 0;
+ if(/\n(\t|[ ]{4,}).*\n$/.test(chunk.before) || chunk.after === ""){
+ nLinesBefore = 0;
}
if(/^\n(\t|[ ]{4,})/.test(chunk.after)){
- nLinesForward = 0;
+ nLinesAfter = 0; // This needs to happen on line 1
}
- chunk.skipLines(nLinesBack, nLinesForward);
+ chunk.addBlankLines(nLinesBefore, nLinesAfter);
if(!chunk.selection){
chunk.startTag = " ";
- chunk.selection = "enter code here";
+ chunk.selection = useDefaultText ? "enter code here" : "";
}
else {
if(/^[ ]{0,3}\S/m.test(chunk.selection)){
if(!chunk.startTag && !chunk.endTag){
chunk.startTag = chunk.endTag="`";
if(!chunk.selection){
- chunk.selection = "enter code here";
+ chunk.selection = useDefaultText ? "enter code here" : "";
}
}
else if(chunk.endTag && !chunk.startTag){
}
};
- command.doList = function(chunk, postProcessing, isNumberedList){
+ command.doList = function(chunk, postProcessing, isNumberedList, useDefaultText){
// These are identical except at the very beginning and end.
// Should probably use the regex extension function to make this clearer.
chunk.startTag = "";
chunk.selection = chunk.selection.replace(/\n[ ]{4}/g, "\n");
command.unwrap(chunk);
- chunk.skipLines();
+ chunk.addBlankLines();
if(hasDigits){
// Have to renumber the bullet points if this is a numbered list.
}
}
- var nLinesUp = 1;
+ var nLinesBefore = 1;
chunk.before = chunk.before.replace(previousItemsRegex,
function(itemText){
if(/^\s*([*+-])/.test(itemText)){
bullet = re.$1;
}
- nLinesUp = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0;
+ nLinesBefore = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0;
return getPrefixedItem(itemText);
});
if(!chunk.selection){
- chunk.selection = "List item";
+ chunk.selection = useDefaultText ? "List item" : " ";
}
var prefix = getItemPrefix();
- var nLinesDown = 1;
+ var nLinesAfter = 1;
chunk.after = chunk.after.replace(nextItemsRegex,
function(itemText){
- nLinesDown = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0;
+ nLinesAfter = /[^\n]\n\n[^\n]/.test(itemText) ? 1 : 0;
return getPrefixedItem(itemText);
});
chunk.trimWhitespace(true);
- chunk.skipLines(nLinesUp, nLinesDown, true);
+ chunk.addBlankLines(nLinesBefore, nLinesAfter, true);
chunk.startTag = prefix;
var spaces = prefix.replace(/./g, " ");
command.wrap(chunk, wmd.wmd_env.lineLength - spaces.length);
};
- command.doHeading = function(chunk, postProcessing){
+ command.doHeading = function(chunk, postProcessing, useDefaultText){
// Remove leading/trailing whitespace and reduce internal spaces to single spaces.
chunk.selection = chunk.selection.replace(/\s+/g, " ");
// Skip to the next line so we can create the header markdown.
chunk.startTag = chunk.endTag = "";
- chunk.skipLines(1, 1);
+ chunk.addBlankLines(1, 1);
// We make a level 2 header if there is no current header.
// If there is a header level, we substract one from the header level.
}
};
- command.doHorizontalRule = function(chunk, postProcessing){
+ command.doHorizontalRule = function(chunk, postProcessing, useDefaultText){
chunk.startTag = "----------\n";
chunk.selection = "";
- chunk.skipLines(2, 1, true);
+ chunk.addBlankLines(2, 1, true);
}
};