From 5bac4a1e332973ba270a523e838e4de43a52182a Mon Sep 17 00:00:00 2001 From: Marius Tolzmann Date: Tue, 7 May 2019 23:58:53 +0200 Subject: [PATCH] add comment clarifying why match index hast to be length -1 i verified that the actual transaction does not contain the last matching char tr.doc.textBetween(start, end+1) will miss the triggering char at the end --- packages/tiptap-commands/src/commands/markInputRule.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/tiptap-commands/src/commands/markInputRule.js b/packages/tiptap-commands/src/commands/markInputRule.js index d37d29c4d..f9ad91c21 100644 --- a/packages/tiptap-commands/src/commands/markInputRule.js +++ b/packages/tiptap-commands/src/commands/markInputRule.js @@ -10,6 +10,8 @@ export default function (regexp, markType, getAttrs) { if (match[m]) { const matchStart = start + match[0].indexOf(match[m - 1]) + // matchEnd index is -1 because the last matching char is not yet member of transaction + // and actually never will be because it triggered the inputrule and vanishes ;) const matchEnd = matchStart + match[m - 1].length - 1 const textStart = matchStart + match[m - 1].lastIndexOf(match[m]) const textEnd = textStart + match[m].length