From 795a9291870d2fda636f22375cd841eb3e8b3257 Mon Sep 17 00:00:00 2001 From: Tobias Beer Date: Fri, 9 Jan 2015 23:51:07 +0100 Subject: [PATCH] create syslink.js, revert extlink.js introduces new parser for system links --- .../parsers/wikiparser/rules/extlink.js | 38 +++++----------- .../parsers/wikiparser/rules/syslink.js | 45 +++++++++++++++++++ 2 files changed, 56 insertions(+), 27 deletions(-) create mode 100644 core/modules/parsers/wikiparser/rules/syslink.js diff --git a/core/modules/parsers/wikiparser/rules/extlink.js b/core/modules/parsers/wikiparser/rules/extlink.js index b9df988be..539d0f11b 100644 --- a/core/modules/parsers/wikiparser/rules/extlink.js +++ b/core/modules/parsers/wikiparser/rules/extlink.js @@ -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] }] }]; } }; -})(); \ No newline at end of file +})(); diff --git a/core/modules/parsers/wikiparser/rules/syslink.js b/core/modules/parsers/wikiparser/rules/syslink.js new file mode 100644 index 000000000..d38b6dcf3 --- /dev/null +++ b/core/modules/parsers/wikiparser/rules/syslink.js @@ -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 + }] + }]; + } +}; + +})(); \ No newline at end of file