diff --git a/src/lib/utils/structuretext.js b/src/lib/utils/structuretext.js index c38e17a..e42f916 100644 --- a/src/lib/utils/structuretext.js +++ b/src/lib/utils/structuretext.js @@ -86,6 +86,7 @@ function structure(text) { * Edit a structure in-place to remove trailing hashtags and separator characters. */ function removeTrailingHashtags(structured) { + let original = structured.slice() let hasHashtags = structured.some(part => part.type === "hashtag") let seenHashtags = false @@ -111,6 +112,7 @@ function removeTrailingHashtags(structured) { while (shouldRemoveLastPart()) { structured.pop() + if (structured.length === 0) return original } return structured diff --git a/test/structuretext.js b/test/structuretext.js index 22fa510..2125a00 100644 --- a/test/structuretext.js +++ b/test/structuretext.js @@ -240,5 +240,25 @@ tap.test("remove trailing hashtags", childTest => { "chongquing china" ) + childTest.same( + removeTrailingHashtags(structure("#justice #onlyhashtags")), + [ + {type: "text", text: ""}, + {type: "hashtag", text: "#justice", hashtag: "justice"}, + {type: "text", text: " "}, + {type: "hashtag", text: "#onlyhashtags", hashtag: "onlyhashtags"}, + {type: "text", text: ""} + ], + "only hashtags" + ) + + childTest.same( + removeTrailingHashtags(structure("")), + [ + {type: "text", text: ""} + ], + "no content" + ) + childTest.end() })