diff --git a/README.md b/README.md index cfaf50d..d2f320b 100644 --- a/README.md +++ b/README.md @@ -53,16 +53,17 @@ Extracting links: ```java import org.nibor.autolink.*; -String input = "wow, so example: http://test.com"; -LinkExtractor linkExtractor = LinkExtractor.builder() - .linkTypes(EnumSet.of(LinkType.URL, LinkType.WWW, LinkType.EMAIL)) +var input = "two links: https://test.com and https://example.com"; +var linkExtractor = LinkExtractor.builder() + .linkTypes(EnumSet.of(LinkType.URL)) // limit to URLs .build(); -Iterable links = linkExtractor.extractLinks(input); -LinkSpan link = links.iterator().next(); -link.getType(); // LinkType.URL -link.getBeginIndex(); // 17 -link.getEndIndex(); // 32 -input.substring(link.getBeginIndex(), link.getEndIndex()); // "http://test.com" +var links = new ArrayList<>(); +for (var span : linkExtractor.extractLinks(input)) { + var link = input.substring(span.getBeginIndex(), span.getEndIndex()); + links.add(link); +} + +links; // List.of("https://test.com", "https://example.com") ``` Note that by default all supported types of links are extracted. If diff --git a/src/test/java/org/nibor/autolink/UsageExampleTest.java b/src/test/java/org/nibor/autolink/UsageExampleTest.java index 69e890c..933d1b1 100644 --- a/src/test/java/org/nibor/autolink/UsageExampleTest.java +++ b/src/test/java/org/nibor/autolink/UsageExampleTest.java @@ -2,7 +2,10 @@ import org.junit.Test; +import java.util.ArrayList; import java.util.EnumSet; +import java.util.List; +import java.util.stream.Stream; import static org.junit.Assert.assertEquals; @@ -35,6 +38,21 @@ public void linkify() { assertEquals("wow http://test.com such linked", sb.toString()); } + @Test + public void extractLinks() { + var input = "hey https://test.com and https://example.com"; + var linkExtractor = LinkExtractor.builder() + .linkTypes(EnumSet.of(LinkType.URL)) + .build(); + var links = new ArrayList<>(); + for (var linkSpan : linkExtractor.extractLinks(input)) { + var link = input.substring(linkSpan.getBeginIndex(), linkSpan.getEndIndex()); + links.add(link); + } + + assertEquals(List.of("https://test.com", "https://example.com"), links); + } + // Mocked here to not have to depend on owasp-java-encoder in tests private static class Encode { public static String forHtmlAttribute(String text) {