public abstract class ResultParser
extends java.lang.Object
Abstract class representing the result of decoding a barcode, as more than
a String -- as some type of structured data. This might be a subclass which represents
a URL, or an e-mail address. parseResult(Result)
will turn a raw
decoded string into the most appropriate type of structured representation.
Thanks to Jeff Griffin for proposing rewrite of these classes that relies less on exception-based mechanisms during parsing.
Modifier and Type | Field and Description |
---|---|
private static java.util.regex.Pattern |
AMPERSAND |
private static java.lang.String |
BYTE_ORDER_MARK |
private static java.util.regex.Pattern |
DIGITS |
(package private) static java.lang.String[] |
EMPTY_STR_ARRAY |
private static java.util.regex.Pattern |
EQUALS |
private static ResultParser[] |
PARSERS |
Constructor and Description |
---|
ResultParser() |
Modifier and Type | Method and Description |
---|---|
private static void |
appendKeyValue(java.lang.CharSequence keyValue,
java.util.Map<java.lang.String,java.lang.String> result) |
private static int |
countPrecedingBackslashes(java.lang.CharSequence s,
int pos) |
protected static java.lang.String |
getMassagedText(Result result) |
protected static boolean |
isStringOfDigits(java.lang.CharSequence value,
int length) |
protected static boolean |
isSubstringOfDigits(java.lang.CharSequence value,
int offset,
int length) |
(package private) static java.lang.String[] |
matchPrefixedField(java.lang.String prefix,
java.lang.String rawText,
char endChar,
boolean trim) |
(package private) static java.lang.String |
matchSinglePrefixedField(java.lang.String prefix,
java.lang.String rawText,
char endChar,
boolean trim) |
protected static void |
maybeAppend(java.lang.String[] value,
java.lang.StringBuilder result) |
protected static void |
maybeAppend(java.lang.String value,
java.lang.StringBuilder result) |
protected static java.lang.String[] |
maybeWrap(java.lang.String value) |
abstract ParsedResult |
parse(Result theResult)
Attempts to parse the raw
Result 's contents as a particular type
of information (email, URL, etc.) and return a ParsedResult encapsulating
the result of parsing. |
protected static int |
parseHexDigit(char c) |
(package private) static java.util.Map<java.lang.String,java.lang.String> |
parseNameValuePairs(java.lang.String uri) |
static ParsedResult |
parseResult(Result theResult) |
protected static java.lang.String |
unescapeBackslash(java.lang.String escaped) |
(package private) static java.lang.String |
urlDecode(java.lang.String encoded) |
private static final ResultParser[] PARSERS
private static final java.util.regex.Pattern DIGITS
private static final java.util.regex.Pattern AMPERSAND
private static final java.util.regex.Pattern EQUALS
private static final java.lang.String BYTE_ORDER_MARK
static final java.lang.String[] EMPTY_STR_ARRAY
public abstract ParsedResult parse(Result theResult)
Result
's contents as a particular type
of information (email, URL, etc.) and return a ParsedResult
encapsulating
the result of parsing.theResult
- the raw Result
to parseParsedResult
encapsulating the parsing resultprotected static java.lang.String getMassagedText(Result result)
public static ParsedResult parseResult(Result theResult)
protected static void maybeAppend(java.lang.String value, java.lang.StringBuilder result)
protected static void maybeAppend(java.lang.String[] value, java.lang.StringBuilder result)
protected static java.lang.String[] maybeWrap(java.lang.String value)
protected static java.lang.String unescapeBackslash(java.lang.String escaped)
protected static int parseHexDigit(char c)
protected static boolean isStringOfDigits(java.lang.CharSequence value, int length)
protected static boolean isSubstringOfDigits(java.lang.CharSequence value, int offset, int length)
static java.util.Map<java.lang.String,java.lang.String> parseNameValuePairs(java.lang.String uri)
private static void appendKeyValue(java.lang.CharSequence keyValue, java.util.Map<java.lang.String,java.lang.String> result)
static java.lang.String urlDecode(java.lang.String encoded)
static java.lang.String[] matchPrefixedField(java.lang.String prefix, java.lang.String rawText, char endChar, boolean trim)
private static int countPrecedingBackslashes(java.lang.CharSequence s, int pos)
static java.lang.String matchSinglePrefixedField(java.lang.String prefix, java.lang.String rawText, char endChar, boolean trim)