mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-02-23 14:30:02 +00:00
autolinks system tiddlers
enhanced extlink parser to cover system tiddler links of course, only those without spaces in their title didn't want to open up an extra parser for this as extlink has all the basics
This commit is contained in:
parent
978cc2e173
commit
8ba3e8973e
@ -3,16 +3,20 @@ title: $:/core/modules/parsers/wikiparser/rules/extlink.js
|
|||||||
type: application/javascript
|
type: application/javascript
|
||||||
module-type: wikirule
|
module-type: wikirule
|
||||||
|
|
||||||
Wiki text inline rule for external links. For example:
|
Wiki text inline rule for external links and system tiddler links.
|
||||||
|
Can be suppressed preceding them with `~`.
|
||||||
|
|
||||||
```
|
```
|
||||||
An external link: http://www.tiddlywiki.com/
|
; system tiddler
|
||||||
|
: $:/config
|
||||||
|
|
||||||
A suppressed external link: ~http://www.tiddlyspace.com/
|
; external link
|
||||||
|
: http://www.tiddlywiki.com/
|
||||||
|
|
||||||
|
; suppressed external link
|
||||||
|
: ~http://www.tiddlyspace.com/
|
||||||
```
|
```
|
||||||
|
|
||||||
External links can be suppressed by preceding them with `~`.
|
|
||||||
|
|
||||||
\*/
|
\*/
|
||||||
(function(){
|
(function(){
|
||||||
|
|
||||||
@ -26,26 +30,38 @@ exports.types = {inline: true};
|
|||||||
exports.init = function(parser) {
|
exports.init = function(parser) {
|
||||||
this.parser = parser;
|
this.parser = parser;
|
||||||
// Regexp to match
|
// Regexp to match
|
||||||
this.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\s<>{}\[\]`|'"\\^~]+(?:\/|\b)/mg;
|
this.matchRegExp = /~?(?:\$|file|http|https|mailto|ftp|irc|news|data|skype):[^\s<>{}\[\]`|'"\\^~]+(?:\/|\b)/mg;
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.parse = function() {
|
exports.parse = function() {
|
||||||
|
var match = this.match[0];
|
||||||
// Move past the match
|
// Move past the match
|
||||||
this.parser.pos = this.matchRegExp.lastIndex;
|
this.parser.pos = this.matchRegExp.lastIndex;
|
||||||
// Create the link unless it is suppressed
|
// Create the link unless it is suppressed
|
||||||
if(this.match[0].substr(0,1) === "~") {
|
if(match.substr(0,1) === "~") {
|
||||||
return [{type: "text", text: this.match[0].substr(1)}];
|
return [{type: "text", text: match.substr(1)}];
|
||||||
|
} else if(match.substr(0,1) === "$") {
|
||||||
|
return [{
|
||||||
|
type: "link",
|
||||||
|
attributes: {
|
||||||
|
to: {type: "string", value: match}
|
||||||
|
},
|
||||||
|
children: [{
|
||||||
|
type: "text",
|
||||||
|
text: match
|
||||||
|
}]
|
||||||
|
}];
|
||||||
} else {
|
} else {
|
||||||
return [{
|
return [{
|
||||||
type: "element",
|
type: "element",
|
||||||
tag: "a",
|
tag: "a",
|
||||||
attributes: {
|
attributes: {
|
||||||
href: {type: "string", value: this.match[0]},
|
href: {type: "string", value: match},
|
||||||
"class": {type: "string", value: "tc-tiddlylink-external"},
|
"class": {type: "string", value: "tc-tiddlylink-external"},
|
||||||
target: {type: "string", value: "_blank"}
|
target: {type: "string", value: "_blank"}
|
||||||
},
|
},
|
||||||
children: [{
|
children: [{
|
||||||
type: "text", text: this.match[0]
|
type: "text", text: match
|
||||||
}]
|
}]
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user