mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-06 10:45:23 +08:00
Url-regexp: Remove redundant escapes and add test
This commit is contained in:
@@ -580,12 +580,11 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void showUrlSelection() {
|
static LinkedHashSet<CharSequence> extractUrls(String text) {
|
||||||
String text = getCurrentTermSession().getEmulator().getScreen().getTranscriptText();
|
|
||||||
// Pattern for recognizing a URL, based off RFC 3986
|
// Pattern for recognizing a URL, based off RFC 3986
|
||||||
// http://stackoverflow.com/questions/5713558/detect-and-extract-url-from-a-string
|
// http://stackoverflow.com/questions/5713558/detect-and-extract-url-from-a-string
|
||||||
final Pattern urlPattern = Pattern.compile(
|
final Pattern urlPattern = Pattern.compile(
|
||||||
"(?:^|[\\W])((ht|f)tp(s?):\\/\\/|www\\.)" + "(([\\w\\-]+\\.){1,}?([\\w\\-.~]+\\/?)*" + "[\\p{Alnum}.,%_=?&#\\-+()\\[\\]\\*$~@!:/{};']*)",
|
"(?:^|[\\W])((ht|f)tp(s?)://|www\\.)" + "(([\\w\\-]+\\.)+?([\\w\\-.~]+/?)*" + "[\\p{Alnum}.,%_=?&#\\-+()\\[\\]\\*$~@!:/{};']*)",
|
||||||
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
|
||||||
LinkedHashSet<CharSequence> urlSet = new LinkedHashSet<>();
|
LinkedHashSet<CharSequence> urlSet = new LinkedHashSet<>();
|
||||||
Matcher matcher = urlPattern.matcher(text);
|
Matcher matcher = urlPattern.matcher(text);
|
||||||
@@ -595,7 +594,12 @@ public final class TermuxActivity extends Activity implements ServiceConnection
|
|||||||
String url = text.substring(matchStart, matchEnd);
|
String url = text.substring(matchStart, matchEnd);
|
||||||
urlSet.add(url);
|
urlSet.add(url);
|
||||||
}
|
}
|
||||||
|
return urlSet;
|
||||||
|
}
|
||||||
|
|
||||||
|
void showUrlSelection() {
|
||||||
|
String text = getCurrentTermSession().getEmulator().getScreen().getTranscriptText();
|
||||||
|
LinkedHashSet<CharSequence> urlSet = extractUrls(text);
|
||||||
if (urlSet.isEmpty()) {
|
if (urlSet.isEmpty()) {
|
||||||
new AlertDialog.Builder(this).setMessage(R.string.select_url_no_found).show();
|
new AlertDialog.Builder(this).setMessage(R.string.select_url_no_found).show();
|
||||||
return;
|
return;
|
||||||
|
24
app/src/test/java/com/termux/app/TermuxActivityTest.java
Normal file
24
app/src/test/java/com/termux/app/TermuxActivityTest.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package com.termux.app;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
|
|
||||||
|
public class TermuxActivityTest extends TestCase {
|
||||||
|
|
||||||
|
private void assertUrlsAre(String text, String... urls) {
|
||||||
|
LinkedHashSet<String> expected = new LinkedHashSet<>();
|
||||||
|
for (String url : urls) expected.add(url);
|
||||||
|
assertEquals(expected, TermuxActivity.extractUrls(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testExtractUrls() {
|
||||||
|
assertUrlsAre("hello http://example.com world", "http://example.com");
|
||||||
|
|
||||||
|
assertUrlsAre("http://example.com\nhttp://another.com", "http://example.com", "http://another.com");
|
||||||
|
|
||||||
|
assertUrlsAre("hello http://example.com world and http://more.example.com with secure https://more.example.com",
|
||||||
|
"http://example.com", "http://more.example.com", "https://more.example.com");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue
Block a user