1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-16 02:19:55 +00:00

create syslink.js, revert extlink.js

introduces new parser for system links
This commit is contained in:
Tobias Beer 2015-01-09 23:51:07 +01:00
parent 8ba3e8973e
commit 795a929187
2 changed files with 56 additions and 27 deletions

View File

@ -3,20 +3,16 @@ title: $:/core/modules/parsers/wikiparser/rules/extlink.js
type: application/javascript
module-type: wikirule
Wiki text inline rule for external links and system tiddler links.
Can be suppressed preceding them with `~`.
Wiki text inline rule for external links. For example:
```
; system tiddler
: $:/config
An external link: http://www.tiddlywiki.com/
; external link
: http://www.tiddlywiki.com/
; suppressed external link
: ~http://www.tiddlyspace.com/
A suppressed external link: ~http://www.tiddlyspace.com/
```
External links can be suppressed by preceding them with `~`.
\*/
(function(){
@ -30,41 +26,29 @@ 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;
this.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\s<>{}\[\]`|'"\\^~]+(?:\/|\b)/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 if(match.substr(0,1) === "$") {
return [{
type: "link",
attributes: {
to: {type: "string", value: match}
},
children: [{
type: "text",
text: match
}]
}];
if(this.match[0].substr(0,1) === "~") {
return [{type: "text", text: this.match[0].substr(1)}];
} else {
return [{
type: "element",
tag: "a",
attributes: {
href: {type: "string", value: match},
href: {type: "string", value: this.match[0]},
"class": {type: "string", value: "tc-tiddlylink-external"},
target: {type: "string", value: "_blank"}
},
children: [{
type: "text", text: match
type: "text", text: this.match[0]
}]
}];
}
};
})();
})();

View File

@ -0,0 +1,45 @@
/*\
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 = /~?(?:\$):[^\s<>{}\[\]`|'"\\^~]+(?:\/|\b)/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
}]
}];
}
};
})();