From ee672d06dea1013d6410f4920a50ea27b27ba7ad Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Tue, 13 Sep 2016 19:36:46 +0100 Subject: [PATCH] Revert "Fix linkification and bump linkifyjs dep" --- src/linkify-matrix.js | 60 +++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 34 deletions(-) diff --git a/src/linkify-matrix.js b/src/linkify-matrix.js index 4eb343cd55..99e4898182 100644 --- a/src/linkify-matrix.js +++ b/src/linkify-matrix.js @@ -23,84 +23,76 @@ function matrixLinkify(linkify) { var S_START = linkify.parser.start; - function ROOMALIAS(value) { - this.v = value; - } - linkify.inherits(MultiToken, ROOMALIAS, { - type: 'roomalias', - isLink: true, - }); + var ROOMALIAS = function(value) { + MultiToken.call(this, value); + this.type = 'roomalias'; + this.isLink = true; + }; + ROOMALIAS.prototype = new MultiToken(); - var S_HASH = S_START.jump(TT.POUND); + var S_HASH = new linkify.parser.State(); var S_HASH_NAME = new linkify.parser.State(); var S_HASH_NAME_COLON = new linkify.parser.State(); + var S_HASH_NAME_COLON_DOMAIN = new linkify.parser.State(); + var S_HASH_NAME_COLON_DOMAIN_DOT = new linkify.parser.State(); var S_ROOMALIAS = new linkify.parser.State(ROOMALIAS); - // WTF!? It is absolutely crazy that these have to be listed out this way, - // TT.DOMAIN should've covered all of them! - - const localpart_tokens = [ - TT.DOMAIN, - TT.TLD, - TT.LOCALHOST, - TT.NUM, - TT.UNDERSCORE, - ]; - var roomname_tokens = [ - TT.POUND, - TT.UNDERSCORE, TT.DOT, TT.PLUS, TT.NUM, TT.DOMAIN, - TT.LOCALHOST + TT.TLD ]; S_START.on(TT.POUND, S_HASH); S_HASH.on(roomname_tokens, S_HASH_NAME); S_HASH_NAME.on(roomname_tokens, S_HASH_NAME); + S_HASH_NAME.on(TT.DOMAIN, S_HASH_NAME); S_HASH_NAME.on(TT.COLON, S_HASH_NAME_COLON); - S_HASH_NAME_COLON.on(localpart_tokens, S_ROOMALIAS); - S_ROOMALIAS.on(TT.DOT, S_HASH_NAME_COLON); + S_HASH_NAME_COLON.on(TT.DOMAIN, S_HASH_NAME_COLON_DOMAIN); + S_HASH_NAME_COLON_DOMAIN.on(TT.DOT, S_HASH_NAME_COLON_DOMAIN_DOT); + S_HASH_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_HASH_NAME_COLON_DOMAIN); + S_HASH_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_ROOMALIAS); var USERID = function(value) { - this.v = value; + MultiToken.call(this, value); + this.type = 'userid'; + this.isLink = true; }; - linkify.inherits(MultiToken, USERID, { - type: 'userid', - isLink: true, - }); + USERID.prototype = new MultiToken(); var S_AT = new linkify.parser.State(); var S_AT_NAME = new linkify.parser.State(); var S_AT_NAME_COLON = new linkify.parser.State(); + var S_AT_NAME_COLON_DOMAIN = new linkify.parser.State(); var S_AT_NAME_COLON_DOMAIN_DOT = new linkify.parser.State(); var S_USERID = new linkify.parser.State(USERID); var username_tokens = [ TT.DOT, - TT.UNDERSCORE, TT.PLUS, TT.NUM, TT.DOMAIN, - TT.TLD, - TT.LOCALHOST, + TT.TLD ]; S_START.on(TT.AT, S_AT); S_AT.on(username_tokens, S_AT_NAME); S_AT_NAME.on(username_tokens, S_AT_NAME); + S_AT_NAME.on(TT.DOMAIN, S_AT_NAME); S_AT_NAME.on(TT.COLON, S_AT_NAME_COLON); - S_AT_NAME_COLON.on(localpart_tokens, S_USERID); - S_USERID.on(TT.DOT, S_AT_NAME_COLON); + S_AT_NAME_COLON.on(TT.DOMAIN, S_AT_NAME_COLON_DOMAIN); + S_AT_NAME_COLON_DOMAIN.on(TT.DOT, S_AT_NAME_COLON_DOMAIN_DOT); + S_AT_NAME_COLON_DOMAIN_DOT.on(TT.DOMAIN, S_AT_NAME_COLON_DOMAIN); + S_AT_NAME_COLON_DOMAIN_DOT.on(TT.TLD, S_USERID); } // stubs, overwritten in MatrixChat's componentDidMount