mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-24 10:37:20 +00:00
a1c8ac624f
There are still some whitespace and attribute ordering issues, but the result runs correctly.
95 lines
2.4 KiB
JavaScript
Executable File
95 lines
2.4 KiB
JavaScript
Executable File
//--
|
|
//-- Formatter helpers
|
|
//--
|
|
|
|
function Formatter(formatters)
|
|
{
|
|
var n;
|
|
this.formatters = [];
|
|
var pattern = [];
|
|
for(n=0; n<formatters.length; n++) {
|
|
pattern.push("(" + formatters[n].match + ")");
|
|
this.formatters.push(formatters[n]);
|
|
}
|
|
this.formatterRegExp = new RegExp(pattern.join("|"),"mg");
|
|
}
|
|
|
|
config.formatterHelpers = {
|
|
|
|
createElementAndWikify: function(w)
|
|
{
|
|
w.subWikifyTerm(createTiddlyElement(w.output,this.element),this.termRegExp);
|
|
},
|
|
|
|
inlineCssHelper: function(w)
|
|
{
|
|
var styles = [];
|
|
config.textPrimitives.cssLookaheadRegExp.lastIndex = w.nextMatch;
|
|
var lookaheadMatch = config.textPrimitives.cssLookaheadRegExp.exec(w.source);
|
|
while(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {
|
|
var s,v;
|
|
if(lookaheadMatch[1]) {
|
|
s = lookaheadMatch[1].unDash();
|
|
v = lookaheadMatch[2];
|
|
} else {
|
|
s = lookaheadMatch[3].unDash();
|
|
v = lookaheadMatch[4];
|
|
}
|
|
if(s=="bgcolor")
|
|
s = "backgroundColor";
|
|
if(s=="float")
|
|
s = "cssFloat";
|
|
styles.push({style: s, value: v});
|
|
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
|
|
config.textPrimitives.cssLookaheadRegExp.lastIndex = w.nextMatch;
|
|
lookaheadMatch = config.textPrimitives.cssLookaheadRegExp.exec(w.source);
|
|
}
|
|
return styles;
|
|
},
|
|
|
|
applyCssHelper: function(e,styles)
|
|
{
|
|
var t;
|
|
for(t=0; t< styles.length; t++) {
|
|
try {
|
|
e.style[styles[t].style] = styles[t].value;
|
|
} catch (ex) {
|
|
}
|
|
}
|
|
},
|
|
|
|
enclosedTextHelper: function(w)
|
|
{
|
|
this.lookaheadRegExp.lastIndex = w.matchStart;
|
|
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
|
|
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
|
|
var text = lookaheadMatch[1];
|
|
if(config.browser.isIE)
|
|
text = text.replace(/\n/g,"\r");
|
|
createTiddlyElement(w.output,this.element,null,null,text);
|
|
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
|
|
}
|
|
},
|
|
|
|
isExternalLink: function(link)
|
|
{
|
|
if(store.tiddlerExists(link) || store.isShadowTiddler(link)) {
|
|
//# Definitely not an external link
|
|
return false;
|
|
}
|
|
var urlRegExp = new RegExp(config.textPrimitives.urlPattern,"mg");
|
|
if(urlRegExp.exec(link)) {
|
|
//# Definitely an external link
|
|
return true;
|
|
}
|
|
if(link.indexOf(".")!=-1 || link.indexOf("\\")!=-1 || link.indexOf("/")!=-1 || link.indexOf("#")!=-1) {
|
|
//# Link contains . / \ or # so is probably an external link
|
|
return true;
|
|
}
|
|
//# Otherwise assume it is not an external link
|
|
return false;
|
|
}
|
|
|
|
};
|
|
|