From f265d0872fa9ed18e79527688571c816a4bfe77f Mon Sep 17 00:00:00 2001 From: dswitkin Date: Mon, 8 Dec 2008 23:08:23 +0000 Subject: [PATCH] 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 --- .../zxing/client/result/EmailAddressResultParser.java | 2 +- .../com/google/zxing/client/result/GeoResultParser.java | 2 +- .../google/zxing/client/result/SMSMMSResultParser.java | 3 ++- .../com/google/zxing/client/result/TelResultParser.java | 2 +- .../com/google/zxing/client/result/URLTOResultParser.java | 2 +- .../zxing/client/result/ParsedReaderResultTestCase.java | 8 +++++++- 6 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/src/com/google/zxing/client/result/EmailAddressResultParser.java b/core/src/com/google/zxing/client/result/EmailAddressResultParser.java index f2d97c161..1c32e7872 100644 --- a/core/src/com/google/zxing/client/result/EmailAddressResultParser.java +++ b/core/src/com/google/zxing/client/result/EmailAddressResultParser.java @@ -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('?'); diff --git a/core/src/com/google/zxing/client/result/GeoResultParser.java b/core/src/com/google/zxing/client/result/GeoResultParser.java index 2b85a063c..b1d36e7d4 100644 --- a/core/src/com/google/zxing/client/result/GeoResultParser.java +++ b/core/src/com/google/zxing/client/result/GeoResultParser.java @@ -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 diff --git a/core/src/com/google/zxing/client/result/SMSMMSResultParser.java b/core/src/com/google/zxing/client/result/SMSMMSResultParser.java index 055fe64c0..8e3883544 100644 --- a/core/src/com/google/zxing/client/result/SMSMMSResultParser.java +++ b/core/src/com/google/zxing/client/result/SMSMMSResultParser.java @@ -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:")) { diff --git a/core/src/com/google/zxing/client/result/TelResultParser.java b/core/src/com/google/zxing/client/result/TelResultParser.java index 5b77247e0..d50147a11 100644 --- a/core/src/com/google/zxing/client/result/TelResultParser.java +++ b/core/src/com/google/zxing/client/result/TelResultParser.java @@ -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; diff --git a/core/src/com/google/zxing/client/result/URLTOResultParser.java b/core/src/com/google/zxing/client/result/URLTOResultParser.java index dd23c847c..c65a4f9a8 100644 --- a/core/src/com/google/zxing/client/result/URLTOResultParser.java +++ b/core/src/com/google/zxing/client/result/URLTOResultParser.java @@ -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); diff --git a/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java b/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java index 7cd227f49..9474f9855 100644 --- a/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java +++ b/core/test/src/com/google/zxing/client/result/ParsedReaderResultTestCase.java @@ -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);