🚸 Format USK links with filenames better
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 27 Mar 2019 17:19:24 +0000 (18:19 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 27 Mar 2019 17:19:24 +0000 (18:19 +0100)
src/main/kotlin/net/pterodactylus/sone/text/SoneTextParser.kt
src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java

index 3cd6587..0063148 100644 (file)
@@ -69,7 +69,7 @@ class SoneTextParser @Inject constructor(private val soneProvider: SoneProvider?
                SSK, USK ->
                        try {
                                FreenetURI(link).let { uri ->
-                                       uri.docName ?: "${uri.keyType}@${uri.routingKey.freenetBase64}"
+                                       uri.allMetaStrings?.lastOrNull() ?: uri.docName ?: "${uri.keyType}@${uri.routingKey.freenetBase64}"
                                }.let { FreenetLinkPart(link, it, trusted = context?.routingKey?.contentEquals(FreenetURI(link).routingKey) == true) }
                        } catch (e: MalformedURLException) {
                                PlainTextPart(link)
index cf8cdd2..69cc658 100644 (file)
@@ -307,6 +307,12 @@ public class SoneTextParserTest {
        }
 
        @Test
+       public void uskLinkWithFilenameShowsTheFilename() {
+               Iterable<Part> parts = soneTextParser.parse("Some link (USK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8/test/0/images/image.jpg). Nice", null);
+               assertThat("Part Text", convertText(parts), is("Some link ([USK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8/test/0/images/image.jpg|USK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8/test/0/images/image.jpg|image.jpg]). Nice"));
+       }
+
+       @Test
        public void httpLinkWithOpenedAndClosedParensEndsAtNextClosingParen() {
                Iterable<Part> parts = soneTextParser.parse("Some text (and a link: http://example.sone/abc_(def)) – nice!", null);
                assertThat("Part Text", convertText(parts, PlainTextPart.class, LinkPart.class), is("Some text (and a link: [http://example.sone/abc_(def)|http://example.sone/abc_(def)|example.sone/abc_(def)]) – nice!"));