mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-07-06 20:12:49 +00:00

This fixes a problem introduced in c7b31b02422265e11b68992e58ef5638cf2e568e. The changes by @tobibeer inadvertently made the regular expression evaluation significantly more expensive because of lookahead. The is less elegant but reverts the performance problem.
50 lines
1.0 KiB
JavaScript
50 lines
1.0 KiB
JavaScript
/*\
|
|
title: $:/core/modules/parsers/wikiparser/rules/syslink.js
|
|
type: application/javascript
|
|
module-type: wikirule
|
|
|
|
Wiki text inline rule for system tiddler links.
|
|
Can be suppressed preceding them with `~`.
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
exports.name = "syslink";
|
|
exports.types = {inline: true};
|
|
|
|
exports.init = function(parser) {
|
|
this.parser = parser;
|
|
// Regexp to match
|
|
this.matchRegExp = new RegExp(
|
|
"~?\\$:\\/[" +
|
|
$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +
|
|
"\/._-]+",
|
|
"mg"
|
|
);
|
|
};
|
|
|
|
exports.parse = function() {
|
|
var match = this.match[0];
|
|
// Move past the match
|
|
this.parser.pos = this.matchRegExp.lastIndex;
|
|
// Create the link unless it is suppressed
|
|
if(match.substr(0,1) === "~") {
|
|
return [{type: "text", text: match.substr(1)}];
|
|
} else {
|
|
return [{
|
|
type: "link",
|
|
attributes: {
|
|
to: {type: "string", value: match}
|
|
},
|
|
children: [{
|
|
type: "text",
|
|
text: match
|
|
}]
|
|
}];
|
|
}
|
|
};
|
|
|
|
})(); |