diff options
author | admin <2926969535@qq.com> | 2021-04-30 16:02:03 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2021-05-02 19:41:47 +0300 |
commit | 521543ac94ff5caa8f71f8c44736820efc9f8df5 (patch) | |
tree | e80234fa46182b962d90bb8a28026212e5be413b | |
parent | efcf6b5af97a6099ca11bef238eeb71dd7ebbe31 (diff) |
test
-rw-r--r-- | markdown/src/androidTest/java/it/niedermann/android/markdown/MarkdownUtilTest.java | 36 | ||||
-rw-r--r-- | markdown/src/main/java/it/niedermann/android/markdown/MarkdownUtil.java | 34 |
2 files changed, 50 insertions, 20 deletions
diff --git a/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkdownUtilTest.java b/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkdownUtilTest.java index cef46ebe..171299bd 100644 --- a/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkdownUtilTest.java +++ b/markdown/src/androidTest/java/it/niedermann/android/markdown/MarkdownUtilTest.java @@ -300,19 +300,19 @@ public class MarkdownUtilTest extends TestCase { assertEquals("Lorem [](https://example.com) dolor sit amet.", builder.toString()); // TODO Add link without clipboardUrl to empty selection before space character -// builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); -// assertEquals(13, MarkdownUtil.insertLink(builder, 11, 11, null)); -// assertEquals("Lorem ipsum []() dolor sit amet.", builder.toString()); + builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); + assertEquals(13, MarkdownUtil.insertLink(builder, 11, 11, null)); + assertEquals("Lorem ipsum []() dolor sit amet.", builder.toString()); // TODO Add link without clipboardUrl to empty selection after space character -// builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); -// assertEquals(13, MarkdownUtil.insertLink(builder, 12, 12, null)); -// assertEquals("Lorem ipsum []() dolor sit amet.", builder.toString()); + builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); + assertEquals(13, MarkdownUtil.insertLink(builder, 12, 12, null)); + assertEquals("Lorem ipsum []() dolor sit amet.", builder.toString()); // TODO Add link without clipboardUrl to empty selection in word -// builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); -// assertEquals(20, MarkdownUtil.insertLink(builder, 14, 14, null)); -// assertEquals("Lorem ipsum [dolor]() sit amet.", builder.toString()); + builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); + assertEquals(20, MarkdownUtil.insertLink(builder, 14, 14, null)); + assertEquals("Lorem ipsum [dolor]() sit amet.", builder.toString()); // Add link with clipboardUrl to normal text builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); @@ -325,19 +325,19 @@ public class MarkdownUtilTest extends TestCase { assertEquals("Lorem [https://example.com](https://example.de) dolor sit amet.", builder.toString()); // TODO Add link with clipboardUrl to empty selection before space character -// builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); -// assertEquals(13, MarkdownUtil.insertLink(builder, 11, 11, "https://example.de")); -// assertEquals("Lorem ipsum []("https://example.de") dolor sit amet.", builder.toString()); + builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); + assertEquals(13, MarkdownUtil.insertLink(builder, 11, 11, "https://example.de")); + assertEquals("Lorem ipsum [](https://example.de) dolor sit amet.", builder.toString()); // TODO Add link with clipboardUrl to empty selection after space character -// builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); -// assertEquals(13, MarkdownUtil.insertLink(builder, 12, 12, "https://example.de")); -// assertEquals("Lorem ipsum []("https://example.de") dolor sit amet.", builder.toString()); + builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); + assertEquals(13, MarkdownUtil.insertLink(builder, 12, 12, "https://example.de")); + assertEquals("Lorem ipsum [](https://example.de) dolor sit amet.", builder.toString()); // TODO Add link with clipboardUrl to empty selection in word -// builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); -// assertEquals(18, MarkdownUtil.insertLink(builder, 14, 14, "https://example.de")); -// assertEquals("Lorem ipsum [dolor]("https://example.de") sit amet.", builder.toString()); + builder = new SpannableStringBuilder("Lorem ipsum dolor sit amet."); + assertEquals(38, MarkdownUtil.insertLink(builder, 14, 14, "https://example.de")); + assertEquals("Lorem ipsum [dolor](https://example.de) sit amet.", builder.toString()); } @Test diff --git a/markdown/src/main/java/it/niedermann/android/markdown/MarkdownUtil.java b/markdown/src/main/java/it/niedermann/android/markdown/MarkdownUtil.java index 045b7f13..1c7e089e 100644 --- a/markdown/src/main/java/it/niedermann/android/markdown/MarkdownUtil.java +++ b/markdown/src/main/java/it/niedermann/android/markdown/MarkdownUtil.java @@ -315,8 +315,38 @@ public class MarkdownUtil { */ public static int insertLink(@NonNull Editable editable, int selectionStart, int selectionEnd, @Nullable String clipboardUrl) { if (selectionStart == selectionEnd) { - editable.insert(selectionStart, "[](" + (clipboardUrl == null ? "" : clipboardUrl) + ")"); - return selectionStart + 1; + char start = editable.charAt(selectionStart-1); + char end = editable.charAt(selectionEnd); + if (start == ' '||end == ' ') { + if (start != ' ') { + editable.insert(selectionStart, " "); + selectionStart += 1; + } + if (end != ' ') { + editable.insert(selectionEnd, " "); + } + editable.insert(selectionStart, "[](" + (clipboardUrl == null ? "" : clipboardUrl) + ")"); + return selectionStart + 1; + + }else { + while (start != ' '){ + selectionStart--; + start = editable.charAt(selectionStart); + } + selectionStart++; + while (end != ' '){ + selectionEnd++; + end = editable.charAt(selectionEnd); + } + selectionEnd++; + editable.insert(selectionStart,"["); + editable.insert(selectionEnd,"](" + (clipboardUrl == null ? "" : clipboardUrl) + ")"); + if (clipboardUrl!=null){ + selectionEnd += clipboardUrl.length(); + } + return selectionEnd + 2; + + } } else { final boolean textToFormatIsLink = TextUtils.indexOf(editable.subSequence(selectionStart, selectionEnd), "http") == 0; if (textToFormatIsLink) { |