Class MessagePattern
java.lang.Object
com.vmware.vipclient.i18n.l2.text.MessagePattern
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumstatic enumArgument type constants.static final class -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intReturn value fromvalidateArgumentName(String)for when the string is a valid "pattern identifier" but not a number.static final intReturn value fromvalidateArgumentName(String)for when the string is invalid.static final doubleSpecial value that is returned by getNumericValue(Part) when no numeric value is defined for a part. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns a version of the parsed pattern string where each ASCII apostrophe is doubled (escaped) if it is not already, and if it is not interpreted as quoting syntax.voidclear()Clears this MessagePattern.voidClears this MessagePattern and sets the ApostropheMode.intReturns the number of "parts" created by parsing the pattern string.intfindEndQuoteIndex(int index) intgetLimitPartIndex(int start) Returns the index of the ARG|MSG_LIMIT part corresponding to the ARG|MSG_START at start.doubleReturns the numeric value associated with an ARG_INT or ARG_DOUBLE.getPart(int i) Gets the i-th pattern "part".getPartType(int i) Returns the Part.Type of the i-th pattern "part".intgetPatternIndex(int partIndex) Returns the pattern index of the specified pattern "part".doublegetPluralOffset(int pluralStart) Returns the "offset:" value of a PluralFormat argument, or 0 if none is specified.Returns the substring of the pattern string indicated by the Part.booleanDoes the parsed pattern have named arguments like {first_name}?booleanDoes the parsed pattern have numbered arguments like {2}?booleanisFrozen()Determines whether this object is frozen (immutable) or not.static booleanintparseArgNameOrNumber(int nameIndex, int index) intparseArgStyle(MessagePattern.ArgType argType, int nameIndex, int index, int nestingLevel) parseArgType(int argStart, int nameIndex, int index) intparseExplicitValuePluralSelector(MessagePattern.ArgType argType, int start, int selectorIndex, int index) intparsePluralOffset(boolean isEmpty, int start, int index) parsePluralOffsetOrNormalSelector(MessagePattern.ArgType argType, int start, int selectorIndex, int index, boolean isEmpty) parsePluralStyle(String pattern) Parses a PluralFormat pattern string.booleanCompares the part's substring with the input string s.toString()static intvalidateArgumentName(String name) Validates and parses an argument name or argument number string.
-
Field Details
-
ARG_NAME_NOT_NUMBER
public static final int ARG_NAME_NOT_NUMBERReturn value fromvalidateArgumentName(String)for when the string is a valid "pattern identifier" but not a number.- See Also:
-
ARG_NAME_NOT_VALID
public static final int ARG_NAME_NOT_VALIDReturn value fromvalidateArgumentName(String)for when the string is invalid. It might not be a valid "pattern identifier", or it have only ASCII digits but there is a leading zero or the number is too large.- See Also:
-
NO_NUMERIC_VALUE
public static final double NO_NUMERIC_VALUESpecial value that is returned by getNumericValue(Part) when no numeric value is defined for a part.
-
-
Constructor Details
-
MessagePattern
public MessagePattern() -
MessagePattern
-
MessagePattern
Constructs an empty MessagePattern.- Parameters:
mode- Explicit ApostropheMode.
-
-
Method Details
-
parse
-
parsePluralStyle
Parses a PluralFormat pattern string.- Parameters:
pattern- a PluralFormat pattern string- Returns:
- this
- Throws:
IllegalArgumentException- for syntax errors in the pattern stringIndexOutOfBoundsException- if certain limits are exceeded (e.g., argument number too high, argument name too long, etc.)NumberFormatException- if a number could not be parsed
-
findEndQuoteIndex
public int findEndQuoteIndex(int index) -
parseArgNameOrNumber
public int parseArgNameOrNumber(int nameIndex, int index) -
parseArgType
-
parseArgStyle
public int parseArgStyle(MessagePattern.ArgType argType, int nameIndex, int index, int nestingLevel) -
parseExplicitValuePluralSelector
public int parseExplicitValuePluralSelector(MessagePattern.ArgType argType, int start, int selectorIndex, int index) -
parsePluralOffsetOrNormalSelector
public Map<String,Object> parsePluralOffsetOrNormalSelector(MessagePattern.ArgType argType, int start, int selectorIndex, int index, boolean isEmpty) -
parsePluralOffset
public int parsePluralOffset(boolean isEmpty, int start, int index) -
isNumeric
-
clear
public void clear()Clears this MessagePattern. countParts() will return 0. -
clearPatternAndSetApostropheMode
Clears this MessagePattern and sets the ApostropheMode. countParts() will return 0.- Parameters:
mode- The new ApostropheMode.
-
getApostropheMode
- Returns:
- this instance's ApostropheMode.
-
getPatternString
- Returns:
- the parsed pattern string (null if none was parsed).
-
hasNamedArguments
public boolean hasNamedArguments()Does the parsed pattern have named arguments like {first_name}?- Returns:
- true if the parsed pattern has at least one named argument.
-
hasNumberedArguments
public boolean hasNumberedArguments()Does the parsed pattern have numbered arguments like {2}?- Returns:
- true if the parsed pattern has at least one numbered argument.
-
toString
-
validateArgumentName
Validates and parses an argument name or argument number string. An argument name must be a "pattern identifier", that is, it must contain no Unicode Pattern_Syntax or Pattern_White_Space characters. If it only contains ASCII digits, then it must be a small integer with no leading zero.- Parameters:
name- Input string.- Returns:
- >=0 if the name is a valid number, ARG_NAME_NOT_NUMBER (-1) if it is a "pattern identifier" but not all ASCII digits, ARG_NAME_NOT_VALID (-2) if it is neither.
-
autoQuoteApostropheDeep
Returns a version of the parsed pattern string where each ASCII apostrophe is doubled (escaped) if it is not already, and if it is not interpreted as quoting syntax.For example, this turns "I don't '{know}' {gender,select,female{h''er}other{h'im}}." into "I don''t '{know}' {gender,select,female{h''er}other{h''im}}."
- Returns:
- the deep-auto-quoted version of the parsed pattern string.
- See Also:
-
MessageFormat#autoQuoteApostrophe(String)
-
countParts
public int countParts()Returns the number of "parts" created by parsing the pattern string. Returns 0 if no pattern has been parsed or clear() was called.- Returns:
- the number of pattern parts.
-
getPart
Gets the i-th pattern "part".- Parameters:
i- The index of the Part data. (0..countParts()-1)- Returns:
- the i-th pattern "part".
- Throws:
IndexOutOfBoundsException- if i is outside the (0..countParts()-1) range
-
getPartType
Returns the Part.Type of the i-th pattern "part". Convenience method for getPart(i).getType().- Parameters:
i- The index of the Part data. (0..countParts()-1)- Returns:
- The Part.Type of the i-th Part.
- Throws:
IndexOutOfBoundsException- if i is outside the (0..countParts()-1) range
-
getPatternIndex
public int getPatternIndex(int partIndex) Returns the pattern index of the specified pattern "part". Convenience method for getPart(partIndex).getIndex().- Parameters:
partIndex- The index of the Part data. (0..countParts()-1)- Returns:
- The pattern index of this Part.
- Throws:
IndexOutOfBoundsException- if partIndex is outside the (0..countParts()-1) range
-
getSubstring
Returns the substring of the pattern string indicated by the Part. Convenience method for getPatternString().substring(part.getIndex(), part.getLimit()).- Parameters:
part- a part of this MessagePattern.- Returns:
- the substring associated with part.
-
partSubstringMatches
Compares the part's substring with the input string s.- Parameters:
part- a part of this MessagePattern.s- a string.- Returns:
- true if getSubstring(part).equals(s).
-
getNumericValue
Returns the numeric value associated with an ARG_INT or ARG_DOUBLE.- Parameters:
part- a part of this MessagePattern.- Returns:
- the part's numeric value, or NO_NUMERIC_VALUE if this is not a numeric part.
-
getPluralOffset
public double getPluralOffset(int pluralStart) Returns the "offset:" value of a PluralFormat argument, or 0 if none is specified.- Parameters:
pluralStart- the index of the first PluralFormat argument style part. (0..countParts()-1)- Returns:
- the "offset:" value.
- Throws:
IndexOutOfBoundsException- if pluralStart is outside the (0..countParts()-1) range
-
getLimitPartIndex
public int getLimitPartIndex(int start) Returns the index of the ARG|MSG_LIMIT part corresponding to the ARG|MSG_START at start.- Parameters:
start- The index of some Part data (0..countParts()-1); this Part should be of Type ARG_START or MSG_START.- Returns:
- The first i>start where getPart(i).getType()==ARG|MSG_LIMIT at the same nesting level, or start itself if getPartType(msgStart)!=ARG|MSG_START.
- Throws:
IndexOutOfBoundsException- if start is outside the (0..countParts()-1) range
-
isFrozen
public boolean isFrozen()Determines whether this object is frozen (immutable) or not.- Returns:
- true if this object is frozen.
-