diff options
-rw-r--r-- | src/main/java/com/juick/util/MessageUtils.java | 9 | ||||
-rw-r--r-- | src/test/java/com/juick/MessageTest.java | 13 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/main/java/com/juick/util/MessageUtils.java b/src/main/java/com/juick/util/MessageUtils.java index 72c9bd04..dd9db293 100644 --- a/src/main/java/com/juick/util/MessageUtils.java +++ b/src/main/java/com/juick/util/MessageUtils.java @@ -144,12 +144,11 @@ public class MessageUtils { } public static String formatMessage(String msg) { + msg = msg.replaceAll("&", "&"); msg = msg.replaceAll("<", "<"); msg = msg.replaceAll(">", ">"); - // > citate - msg = msg.replaceAll(citateRegex, "<q>$1</q>"); - msg = msg.replaceAll("</q><q>", "\n"); + // -- // — msg = msg.replaceAll("((?<=\\s)|(?<=\\A))\\-\\-?((?=\\s)|(?=\\Z))", "$1—$2"); @@ -207,6 +206,10 @@ public class MessageUtils { m.appendTail(sb); msg = sb.toString(); + // > citate + msg = msg.replaceAll(citateRegex, "<q>$1</q>"); + msg = msg.replaceAll("</q><q>", "\n"); + msg = msg.replaceAll("\n", "<br/>\n"); return msg; } diff --git a/src/test/java/com/juick/MessageTest.java b/src/test/java/com/juick/MessageTest.java index 0b48efa1..eabeeb0f 100644 --- a/src/test/java/com/juick/MessageTest.java +++ b/src/test/java/com/juick/MessageTest.java @@ -214,5 +214,18 @@ public class MessageTest { assertThat(MessageUtils.formatMessage(brokenComment), is("<!-- read next")); String url = "[ya](http://ya.ru)"; assertThat(MessageUtils.formatMessage(url), is("<a href=\"http://ya.ru\" rel=\"nofollow\">ya</a>")); + String complexMessage = "У футболистов нет мозгов. Что в России, что в Беларуси:\n" + + "\n" + + ">Отец футболиста Лухвича, объехавшего пробку по тротуару: «Сына задержали, Infiniti арестовали» https://auto.onliner.by/2019/01/23/probka-9\n" + + "\n" + + "Вкратце: малолетний долбоёб ездил по встрече, по тротуарам, парковался где хотел и всё это выкладывал в сеть, мол, хули вы мне сделоете. Сделали. Ибо нехуй."; + String formattedMessage = "У футболистов нет мозгов. Что в России, что в Беларуси:<br/>\n<br/>\n" + + "<q>Отец футболиста Лухвича, объехавшего пробку по тротуару: «Сына задержали, Infiniti арестовали» <a href=\"https://auto.onliner.by/2019/01/23/probka-9\" rel=\"nofollow\">auto.onliner.by</a></q>" + + "<br/>\n" + + "Вкратце: малолетний долбоёб ездил по встрече, по тротуарам, парковался где хотел и всё это выкладывал в сеть, мол, хули вы мне сделоете. Сделали. Ибо нехуй."; + + assertThat(MessageUtils.formatMessage(complexMessage), is(formattedMessage)); + String multiQuote = "> quote line 1\n> quote line 2\nmessage"; + assertThat(MessageUtils.formatMessage(multiQuote), is("<q>quote line 1<br/>\nquote line 2</q>message")); } } |