From e8b0adab2aecc233a090f98c569931871f977ba4 Mon Sep 17 00:00:00 2001 From: makc Date: Thu, 29 Jul 2021 12:01:52 +0200 Subject: better hashtags https://juick.com/rm/2997070#7 --- src/main/java/com/juick/service/TagServiceImpl.java | 2 +- src/test/java/com/juick/server/tests/ServerTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/juick/service/TagServiceImpl.java b/src/main/java/com/juick/service/TagServiceImpl.java index 93edcccc..0bd6bb0c 100644 --- a/src/main/java/com/juick/service/TagServiceImpl.java +++ b/src/main/java/com/juick/service/TagServiceImpl.java @@ -221,7 +221,7 @@ public class TagServiceImpl extends BaseJdbcService implements TagService { public Pair> fromString(final String txt) { String firstLine = txt.split("\\n", 2)[0]; Supplier> tagsStream = () -> Arrays.stream(firstLine.split("\\ ")) - .takeWhile(t -> !t.equals("*") && t.startsWith("*")); + .takeWhile(t -> t.matches("\\*[^\\s]+|#[^\\s]*[^\\d][^\\s]*")); int tagsLength = tagsStream.get().collect(Collectors.joining(" ")).length(); String body = txt.substring(tagsLength); List tags = tagsStream.get().map(t -> getTag(t.substring(1), true)) diff --git a/src/test/java/com/juick/server/tests/ServerTests.java b/src/test/java/com/juick/server/tests/ServerTests.java index 795415be..c37d70bc 100644 --- a/src/test/java/com/juick/server/tests/ServerTests.java +++ b/src/test/java/com/juick/server/tests/ServerTests.java @@ -436,6 +436,18 @@ public class ServerTests { messagesService.deleteMessage(user.getUid(), mid4); } + @Test + public void tagParsingTests() { + assertEquals(0, tagService.fromString("*").getRight().size()); + assertEquals(1, tagService.fromString("*kek").getRight().size()); + assertEquals(1, tagService.fromString("*123").getRight().size()); + assertEquals(0, tagService.fromString("#").getRight().size()); + assertEquals(1, tagService.fromString("#kek").getRight().size()); + assertEquals(1, tagService.fromString("#12k").getRight().size()); + assertEquals(0, tagService.fromString("#123").getRight().size()); + assertEquals(2, tagService.fromString("#mixed *tags #123 test").getRight().size()); + } + @Test public void likeTypeStatsTests() { User dsdss = userService.createUser("dsdss", "secret").orElseThrow(IllegalStateException::new); -- cgit v1.2.3