mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-07-07 20:44:23 +00:00
2b5fb9801f
The matching of external links is hacky at the moment. The plan is to make it more easily extensible (ie without writing code)
53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
/*\
|
|
title: $:/core/modules/parsers/wikiparser/rules/extlink.js
|
|
type: application/javascript
|
|
module-type: wikirule
|
|
|
|
Wiki text inline rule for external links. For example:
|
|
|
|
```
|
|
An external link: http://www.tiddlywiki.com/
|
|
|
|
A suppressed external link: ~http://www.tiddlyspace.com/
|
|
```
|
|
|
|
External links can be suppressed by preceding them with `~`.
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
exports.name = "extlink";
|
|
exports.types = {inline: true};
|
|
|
|
exports.init = function(parser) {
|
|
this.parser = parser;
|
|
// Regexp to match
|
|
this.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\s'"<>]+(?:\/|\b)/mg;
|
|
};
|
|
|
|
exports.parse = function() {
|
|
// Move past the match
|
|
this.parser.pos = this.matchRegExp.lastIndex;
|
|
// Create the link unless it is suppressed
|
|
if(this.match[0].substr(0,1) === "~") {
|
|
return [{type: "text", text: this.match[0].substr(1)}];
|
|
} else {
|
|
return [{
|
|
type: "element",
|
|
tag: "$link",
|
|
attributes: {
|
|
to: {type: "string", value: this.match[0]}
|
|
},
|
|
children: [{
|
|
type: "text", text: this.match[0]
|
|
}]
|
|
}];
|
|
}
|
|
};
|
|
|
|
})();
|