Made our parsing code handle uppercase prefixes for a variety of loosely-defined formats.

git-svn-id: https://zxing.googlecode.com/svn/trunk@779 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
dswitkin 2008-12-08 23:08:23 +00:00
parent 12420b443d
commit f265d0872f
6 changed files with 13 additions and 6 deletions

View file

@ -34,7 +34,7 @@ final class EmailAddressResultParser extends ResultParser {
return null;
}
String emailAddress;
if (rawText.startsWith("mailto:")) {
if (rawText.startsWith("mailto:") || rawText.startsWith("MAILTO:")) {
// If it starts with mailto:, assume it is definitely trying to be an email address
emailAddress = rawText.substring(7);
int queryStart = emailAddress.indexOf('?');

View file

@ -33,7 +33,7 @@ final class GeoResultParser extends ResultParser {
public static GeoParsedResult parse(Result result) {
String rawText = result.getText();
if (rawText == null || !rawText.startsWith("geo:")) {
if (rawText == null || (!rawText.startsWith("geo:") && !rawText.startsWith("GEO:"))) {
return null;
}
// Drop geo, query portion

View file

@ -42,7 +42,8 @@ final class SMSMMSResultParser extends ResultParser {
return null;
}
int prefixLength;
if (rawText.startsWith("sms:") || rawText.startsWith("mms:")) {
if (rawText.startsWith("sms:") || rawText.startsWith("SMS:") ||
rawText.startsWith("mms:") || rawText.startsWith("MMS:")) {
prefixLength = 4;
} else if (rawText.startsWith("smsto:") || rawText.startsWith("SMSTO:") ||
rawText.startsWith("mmsto:") || rawText.startsWith("MMSTO:")) {

View file

@ -30,7 +30,7 @@ final class TelResultParser extends ResultParser {
public static TelParsedResult parse(Result result) {
String rawText = result.getText();
if (rawText == null || !rawText.startsWith("tel:")) {
if (rawText == null || (!rawText.startsWith("tel:") && !rawText.startsWith("TEL:"))) {
return null;
}
String telURI = rawText;

View file

@ -32,7 +32,7 @@ final class URLTOResultParser {
public static URIParsedResult parse(Result result) {
String rawText = result.getText();
if (rawText == null || !rawText.startsWith("URLTO:")) {
if (rawText == null || (!rawText.startsWith("urlto:") && !rawText.startsWith("URLTO:"))) {
return null;
}
int titleEnd = rawText.indexOf(':', 6);

View file

@ -42,6 +42,7 @@ public final class ParsedReaderResultTestCase extends TestCase {
}
public void testURLTOType() {
doTestResult("urlto:foo:bar.com", ParsedResultType.URI);
doTestResult("URLTO:foo:bar.com", ParsedResultType.URI);
doTestResult("URLTO::bar.com", ParsedResultType.URI);
doTestResult("URLTO::http://bar.com", ParsedResultType.URI);
@ -58,6 +59,7 @@ public final class ParsedReaderResultTestCase extends TestCase {
public void testEmailAddressType() {
doTestResult("srowen@example.org", ParsedResultType.EMAIL_ADDRESS);
doTestResult("mailto:srowen@example.org", ParsedResultType.EMAIL_ADDRESS);
doTestResult("MAILTO:srowen@example.org", ParsedResultType.EMAIL_ADDRESS);
doTestResult("srowen@example", ParsedResultType.TEXT);
doTestResult("srowen", ParsedResultType.TEXT);
doTestResult("Let's meet @ 2", ParsedResultType.TEXT);
@ -67,7 +69,7 @@ public final class ParsedReaderResultTestCase extends TestCase {
doTestResult("MECARD:N:Sean Owen;;", ParsedResultType.ADDRESSBOOK);
doTestResult("MECARD:TEL:+12125551212;N:Sean Owen;;", ParsedResultType.ADDRESSBOOK);
doTestResult("MECARD:TEL:+12125551212;N:Sean Owen;URL:google.com;;", ParsedResultType.ADDRESSBOOK);
doTestResult("TEL:+12125551212;N:Sean Owen;;", ParsedResultType.TEXT);
doTestResult("N:Sean Owen;TEL:+12125551212;;", ParsedResultType.TEXT);
}
public void testAddressBookAUType() {
@ -108,6 +110,7 @@ public final class ParsedReaderResultTestCase extends TestCase {
public void testGeo() {
doTestResult("geo:1,2", ParsedResultType.GEO);
doTestResult("GEO:1,2", ParsedResultType.GEO);
doTestResult("geo:1,2,3", ParsedResultType.GEO);
doTestResult("geo:100.33,-32.3344,3.35", ParsedResultType.GEO);
doTestResult("geography", ParsedResultType.TEXT);
@ -115,6 +118,7 @@ public final class ParsedReaderResultTestCase extends TestCase {
public void testTel() {
doTestResult("tel:+15551212", ParsedResultType.TEL);
doTestResult("TEL:+15551212", ParsedResultType.TEL);
doTestResult("tel:212 555 1212", ParsedResultType.TEL);
doTestResult("tel:2125551212", ParsedResultType.TEL);
doTestResult("telephone", ParsedResultType.TEXT);
@ -157,6 +161,7 @@ public final class ParsedReaderResultTestCase extends TestCase {
public void testSMS() {
doTestResult("sms:+15551212", ParsedResultType.SMS);
doTestResult("SMS:+15551212", ParsedResultType.SMS);
doTestResult("SMSTO:+15551212", ParsedResultType.SMS);
doTestResult("smsto:+15551212", ParsedResultType.SMS);
doTestResult("sms:+15551212;via=999333", ParsedResultType.SMS);
@ -166,6 +171,7 @@ public final class ParsedReaderResultTestCase extends TestCase {
public void testMMS() {
doTestResult("mms:+15551212", ParsedResultType.SMS);
doTestResult("MMS:+15551212", ParsedResultType.SMS);
doTestResult("MMSTO:+15551212", ParsedResultType.SMS);
doTestResult("mmsto:+15551212", ParsedResultType.SMS);
doTestResult("mms:+15551212;via=999333", ParsedResultType.SMS);