1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-06-25 06:43:15 +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 type: application/javascript
module-type: wikirule module-type: wikirule
Wiki text inline rule for external links and system tiddler links. Wiki text inline rule for external links. For example:
Can be suppressed preceding them with `~`.
``` ```
; system tiddler An external link: http://www.tiddlywiki.com/
: $:/config
; external link A suppressed external link: ~http://www.tiddlyspace.com/
: http://www.tiddlywiki.com/
; suppressed external link
: ~http://www.tiddlyspace.com/
``` ```
External links can be suppressed by preceding them with `~`.
\*/ \*/
(function(){ (function(){
@ -30,41 +26,29 @@ 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(match.substr(0,1) === "~") { if(this.match[0].substr(0,1) === "~") {
return [{type: "text", text: match.substr(1)}]; return [{type: "text", text: this.match[0].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: match}, href: {type: "string", value: this.match[0]},
"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: 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
}]
}];
}
};
})();