Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoradmin <2926969535@qq.com>2021-04-30 16:02:03 +0300
committerNiedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com>2021-05-02 19:41:47 +0300
commit521543ac94ff5caa8f71f8c44736820efc9f8df5 (patch)
treee80234fa46182b962d90bb8a28026212e5be413b
parentefcf6b5af97a6099ca11bef238eeb71dd7ebbe31 (diff)
test
-rw-r--r--markdown/src/androidTest/java/it/niedermann/android/markdown/MarkdownUtilTest.java36
-rw-r--r--markdown/src/main/java/it/niedermann/android/markdown/MarkdownUtil.java34
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) {