From 0e52b133af6819092127650aabe41f262b10d00c Mon Sep 17 00:00:00 2001 From: Bonuspunkt Date: Tue, 21 Nov 2017 23:54:20 +0100 Subject: [PATCH] Sending channel and link together generates duplicate text --- client/js/libs/handlebars/parse.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/client/js/libs/handlebars/parse.js b/client/js/libs/handlebars/parse.js index fdf32bdc..0bccaa1d 100644 --- a/client/js/libs/handlebars/parse.js +++ b/client/js/libs/handlebars/parse.js @@ -2,6 +2,7 @@ const Handlebars = require("handlebars/runtime"); const parseStyle = require("./ircmessageparser/parseStyle"); +const anyIntersection = require("./ircmessageparser/anyIntersection"); const findChannels = require("./ircmessageparser/findChannels"); const findLinks = require("./ircmessageparser/findLinks"); const findEmoji = require("./ircmessageparser/findEmoji"); @@ -66,7 +67,15 @@ module.exports = function parse(text) { const parts = channelParts .concat(linkParts) .concat(emojiParts) - .sort((a, b) => a.start - b.start); + .sort((a, b) => a.start - b.start || b.end - a.end) + .reduce((prev, curr) => { + const intersection = prev.some((p) => anyIntersection(p, curr)); + + if (intersection) { + return prev; + } + return prev.concat([curr]); + }, []); // Merge the styling information with the channels / URLs / text objects and // generate HTML strings with the resulting fragments