site-media/scripts/wmd/wmd-plus.js @ 5d5a567385bb

Initial open-source revision of the site.
author Steve Losh <steve@stevelosh.com>
date Tue, 13 Jan 2009 19:37:21 -0500
parents (none)
children (none)
var Attacklab=Attacklab||{};
Attacklab.wmdPlus=function(){
this.symboltable;
var _1=top;
var _2=_1["Attacklab"];
var _3=_1["document"];
var _4=_1["RegExp"];
var _5=_1["navigator"];
var _6=_2.Util;
var _7=_2.Position;
var _8=_2.Command;
_8.doAutoindent=function(_9){
_9.before=_9.before.replace(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]*\n$/,"\n\n");
_9.before=_9.before.replace(/(\n|^)[ ]{0,3}>[ \t]*\n$/,"\n\n");
_9.before=_9.before.replace(/(\n|^)[ \t]+\n$/,"\n\n");
if(/(\n|^)[ ]{0,3}([*+-]|\d+[.])[ \t]+.*\n$/.test(_9.before)){
if(_8.doList){
_8.doList(_9);
}
}
if(/(\n|^)[ ]{0,3}>[ \t]+.*\n$/.test(_9.before)){
if(_8.doBlockquote){
_8.doBlockquote(_9);
}
}
if(/(\n|^)(\t|[ ]{4,}).*\n$/.test(_9.before)){
if(_8.doCode){
_8.doCode(_9);
}
}
};
_8.doBlockquote=function(_a){
_a.selection=_a.selection.replace(/^(\n*)([^\r]+?)(\n*)$/,function(_b,_c,_d,_e){
_a.before+=_c;
_a.after=_e+_a.after;
return _d;
});
_a.before=_a.before.replace(/(>[ \t]*)$/,function(_f,_10){
_a.selection=_10+_a.selection;
return "";
});
_a.selection=_a.selection.replace(/^(\s|>)+$/,"");
_a.selection=_a.selection||"Blockquote";
if(_a.before){
_a.before=_a.before.replace(/\n?$/,"\n");
}
if(_a.after){
_a.after=_a.after.replace(/^\n?/,"\n");
}
_a.before=_a.before.replace(/(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*$)/,function(_11){
_a.startTag=_11;
return "";
});
_a.after=_a.after.replace(/^(((\n|^)(\n[ \t]*)*>(.+\n)*.*)+(\n[ \t]*)*)/,function(_12){
_a.endTag=_12;
return "";
});
var _13=function(_14){
var _15=_14?"> ":"";
if(_a.startTag){
_a.startTag=_a.startTag.replace(/\n((>|\s)*)\n$/,function(_16,_17){
return "\n"+_17.replace(/^[ ]{0,3}>?[ \t]*$/gm,_15)+"\n";
});
}
if(_a.endTag){
_a.endTag=_a.endTag.replace(/^\n((>|\s)*)\n/,function(_18,_19){
return "\n"+_19.replace(/^[ ]{0,3}>?[ \t]*$/gm,_15)+"\n";
});
}
};
if(/^(?![ ]{0,3}>)/m.test(_a.selection)){
_8.wrap(_a,_2.wmd_env.lineLength-2);
_a.selection=_a.selection.replace(/^/gm,"> ");
_13(true);
_a.skipLines();
}else{
_a.selection=_a.selection.replace(/^[ ]{0,3}> ?/gm,"");
_8.unwrap(_a);
_13(false);
if(!/^(\n|^)[ ]{0,3}>/.test(_a.selection)){
if(_a.startTag){
_a.startTag=_a.startTag.replace(/\n{0,2}$/,"\n\n");
}
}
if(!/(\n|^)[ ]{0,3}>.*$/.test(_a.selection)){
if(_a.endTag){
_a.endTag=_a.endTag.replace(/^\n{0,2}/,"\n\n");
}
}
}
if(!/\n/.test(_a.selection)){
_a.selection=_a.selection.replace(/^(> *)/,function(_1a,_1b){
_a.startTag+=_1b;
return "";
});
}
};
_8.doCode=function(_1c){
var _1d=/\S[ ]*$/.test(_1c.before);
var _1e=/^[ ]*\S/.test(_1c.after);
if((!_1e&&!_1d)||/\n/.test(_1c.selection)){
_1c.before=_1c.before.replace(/[ ]{4}$/,function(_1f){
_1c.selection=_1f+_1c.selection;
return "";
});
var _20=1;
var _21=1;
if(/\n(\t|[ ]{4,}).*\n$/.test(_1c.before)){
_20=0;
}
if(/^\n(\t|[ ]{4,})/.test(_1c.after)){
_21=0;
}
_1c.skipLines(_20,_21);
if(!_1c.selection){
_1c.startTag="    ";
_1c.selection="print(\"code sample\");";
return;
}
if(/^[ ]{0,3}\S/m.test(_1c.selection)){
_1c.selection=_1c.selection.replace(/^/gm,"    ");
}else{
_1c.selection=_1c.selection.replace(/^[ ]{4}/gm,"");
}
}else{
_1c.trimWhitespace();
_1c.findTags(/`/,/`/);
if(!_1c.startTag&&!_1c.endTag){
_1c.startTag=_1c.endTag="`";
if(!_1c.selection){
_1c.selection="print(\"code sample\");";
}
}else{
if(_1c.endTag&&!_1c.startTag){
_1c.before+=_1c.endTag;
_1c.endTag="";
}else{
_1c.startTag=_1c.endTag="";
}
}
}
};
_8.autoindent={};
_8.autoindent.textOp=_8.doAutoindent;
_8.blockquote={};
_8.blockquote.description="Blockquote <blockquote>";
_8.blockquote.image="images/blockquote.png";
_8.blockquote.key=".";
_8.blockquote.keyCode=190;
_8.blockquote.textOp=function(_22){
return _8.doBlockquote(_22);
};
_8.code={};
_8.code.description="Code Sample <pre><code>";
_8.code.image="images/code.png";
_8.code.key="k";
_8.code.textOp=_8.doCode;
_8.img={};
_8.img.description="Image <img>";
_8.img.image="images/img.png";
_8.img.key="g";
_8.img.textOp=function(_23,_24){
return _8.doLinkOrImage(_23,true,_24);
};
_8.doList=function(_25,_26){
var _27=/(([ ]{0,3}([*+-]|\d+[.])[ \t]+.*)(\n.+|\n{2,}([*+-].*|\d+[.])[ \t]+.*|\n{2,}[ \t]+\S.*)*)\n*/;
var _28="";
var _29=1;
var _2a=function(){
if(_26){
var _2b=" "+_29+". ";
_29++;
return _2b;
}
var _2c=_28||"-";
return "  "+_2c+" ";
};
var _2d=function(_2e){
if(_26==undefined){
_26=/^\s*\d/.test(_2e);
}
_2e=_2e.replace(/^[ ]{0,3}([*+-]|\d+[.])\s/gm,function(_2f){
return _2a();
});
return _2e;
};
var _30=function(){
_31=_6.regexToString(_27);
_31.expression="^\n*"+_31.expression;
var _32=_6.stringToRegex(_31);
_25.after=_25.after.replace(_32,_2d);
};
_25.findTags(/(\n|^)*[ ]{0,3}([*+-]|\d+[.])\s+/,null);
var _33=/^\n/;
if(_25.before&&!/\n$/.test(_25.before)&&!_33.test(_25.startTag)){
_25.before+=_25.startTag;
_25.startTag="";
}
if(_25.startTag){
var _34=/\d+[.]/.test(_25.startTag);
_25.startTag="";
_25.selection=_25.selection.replace(/\n[ ]{4}/g,"\n");
_8.unwrap(_25);
_25.skipLines();
if(_34){
_30();
}
if(_26==_34){
return;
}
}
var _35=1;
var _31=_6.regexToString(_27);
_31.expression="(\\n|^)"+_31.expression+"$";
var _36=_6.stringToRegex(_31);
_25.before=_25.before.replace(_36,function(_37){
if(/^\s*([*+-])/.test(_37)){
_28=_4.$1;
}
_35=/[^\n]\n\n[^\n]/.test(_37)?1:0;
return _2d(_37);
});
if(!_25.selection){
_25.selection="List item";
}
var _38=_2a();
var _39=1;
_31=_6.regexToString(_27);
_31.expression="^\n*"+_31.expression;
_36=_6.stringToRegex(_31);
_25.after=_25.after.replace(_36,function(_3a){
_39=/[^\n]\n\n[^\n]/.test(_3a)?1:0;
return _2d(_3a);
});
_25.trimWhitespace(true);
_25.skipLines(_35,_39,true);
_25.startTag=_38;
var _3b=_38.replace(/./g," ");
_8.wrap(_25,_2.wmd_env.lineLength-_3b.length);
_25.selection=_25.selection.replace(/\n/g,"\n"+_3b);
};
_8.doHeading=function(_3c){
_3c.selection=_3c.selection.replace(/\s+/g," ");
_3c.selection=_3c.selection.replace(/(^\s+|\s+$)/g,"");
var _3d=0;
_3c.findTags(/#+[ ]*/,/[ ]*#+/);
if(/#+/.test(_3c.startTag)){
_3d=_4.lastMatch.length;
}
_3c.startTag=_3c.endTag="";
_3c.findTags(null,/\s?(-+|=+)/);
if(/=+/.test(_3c.endTag)){
_3d=1;
}
if(/-+/.test(_3c.endTag)){
_3d=2;
}
_3c.startTag=_3c.endTag="";
_3c.skipLines(1,1);
if(!_3c.selection){
_3c.startTag="## ";
_3c.selection="Heading";
_3c.endTag=" ##";
return;
}
var _3e=_3d==0?2:_3d-1;
if(_3e){
var _3f=_3e>=2?"-":"=";
var _40=_3c.selection.length;
if(_40>_2.wmd_env.lineLength){
_40=_2.wmd_env.lineLength;
}
_3c.endTag="\n";
while(_40--){
_3c.endTag+=_3f;
}
}
};
_8.ol={};
_8.ol.description="Numbered List <ol>";
_8.ol.image="images/ol.png";
_8.ol.key="o";
_8.ol.textOp=function(_41){
_8.doList(_41,true);
};
_8.ul={};
_8.ul.description="Bulleted List <ul>";
_8.ul.image="images/ul.png";
_8.ul.key="u";
_8.ul.textOp=function(_42){
_8.doList(_42,false);
};
_8.h1={};
_8.h1.description="Heading <h1>/<h2>";
_8.h1.image="images/h1.png";
_8.h1.key="h";
_8.h1.textOp=_8.doHeading;
_8.hr={};
_8.hr.description="Horizontal Rule <hr>";
_8.hr.image="images/hr.png";
_8.hr.key="r";
_8.hr.textOp=function(_43){
_43.startTag="----------\n";
_43.selection="";
_43.skipLines(2,1,true);
};
};
if(Attacklab.fileLoaded){
Attacklab.fileLoaded("wmd-plus.js");
}