ICU 78.1 78.1 |
Parses and represents ICUMessageFormat patterns.More...
#include <messagepattern.h>

Data Structures | |
| class | Part |
| A message pattern "part", representing a pattern parsing event.More... | |
Public Member Functions | |
| MessagePattern (UErrorCode &errorCode) | |
| Constructs an emptyMessagePattern with default UMessagePatternApostropheMode.More... | |
| MessagePattern (UMessagePatternApostropheMode mode,UErrorCode &errorCode) | |
| Constructs an emptyMessagePattern.More... | |
| MessagePattern (constUnicodeString &pattern,UParseError *parseError,UErrorCode &errorCode) | |
| Constructs aMessagePattern with default UMessagePatternApostropheMode and parses theMessageFormat pattern string.More... | |
| MessagePattern (constMessagePattern &other) | |
| Copy constructor.More... | |
| MessagePattern & | operator= (constMessagePattern &other) |
| Assignment operator.More... | |
| virtual | ~MessagePattern () |
| Destructor.More... | |
| MessagePattern & | parse (constUnicodeString &pattern,UParseError *parseError,UErrorCode &errorCode) |
| Parses aMessageFormat pattern string.More... | |
| MessagePattern & | parseChoiceStyle (constUnicodeString &pattern,UParseError *parseError,UErrorCode &errorCode) |
| Parses aChoiceFormat pattern string.More... | |
| MessagePattern & | parsePluralStyle (constUnicodeString &pattern,UParseError *parseError,UErrorCode &errorCode) |
| Parses aPluralFormat pattern string.More... | |
| MessagePattern & | parseSelectStyle (constUnicodeString &pattern,UParseError *parseError,UErrorCode &errorCode) |
| Parses aSelectFormat pattern string.More... | |
| void | clear () |
| Clears thisMessagePattern.More... | |
| void | clearPatternAndSetApostropheMode (UMessagePatternApostropheMode mode) |
| Clears thisMessagePattern and sets the UMessagePatternApostropheMode.More... | |
| bool | operator== (constMessagePattern &other) const |
| bool | operator!= (constMessagePattern &other) const |
| int32_t | hashCode () const |
| UMessagePatternApostropheMode | getApostropheMode () const |
| constUnicodeString & | getPatternString () const |
| UBool | hasNamedArguments () const |
| Does the parsed pattern have named arguments like {first_name}?More... | |
| UBool | hasNumberedArguments () const |
| Does the parsed pattern have numbered arguments like {2}?More... | |
| UnicodeString | autoQuoteApostropheDeep () const |
| 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.More... | |
| int32_t | countParts () const |
| Returns the number of "parts" created by parsing the pattern string.More... | |
| constPart & | getPart (int32_t i) const |
| Gets the i-th pattern "part".More... | |
| UMessagePatternPartType | getPartType (int32_t i) const |
| Returns the UMessagePatternPartType of the i-th pattern "part".More... | |
| int32_t | getPatternIndex (int32_t partIndex) const |
| Returns the pattern index of the specified pattern "part".More... | |
| UnicodeString | getSubstring (constPart &part) const |
| Returns the substring of the pattern string indicated by thePart.More... | |
| UBool | partSubstringMatches (constPart &part, constUnicodeString &s) const |
| Compares the part's substring with the input string s.More... | |
| double | getNumericValue (constPart &part) const |
| Returns the numeric value associated with an ARG_INT or ARG_DOUBLE.More... | |
| double | getPluralOffset (int32_t pluralStart) const |
| Returns the "offset:" value of aPluralFormat argument, or 0 if none is specified.More... | |
| int32_t | getLimitPartIndex (int32_t start) const |
| Returns the index of the ARG|MSG_LIMIT part corresponding to the ARG|MSG_START at start.More... | |
Public Member Functions inherited fromicu::UObject | |
| virtual | ~UObject () |
| Destructor.More... | |
| virtualUClassID | getDynamicClassID () const |
| ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.More... | |
Static Public Member Functions | |
| static int32_t | validateArgumentName (constUnicodeString &name) |
| Validates and parses an argument name or argument number string.More... | |
Parses and represents ICUMessageFormat patterns.
Also handles patterns forChoiceFormat,PluralFormat andSelectFormat. Used in the implementations of those classes as well as in tools for message validation, translation and format conversion.
The parser handles all syntax relevant for identifying message arguments. This includes "complex" arguments whose style strings contain nestedMessageFormat pattern substrings. For "simple" arguments (with no nestedMessageFormat pattern substrings), the argument style is not parsed any further.
The parser handles named and numbered message arguments and allows both in one message.
Once a pattern has been parsed successfully, iterate through the parsed data withcountParts(),getPart() and related methods.
The data logically represents a parse tree, but is stored and accessed as a list of "parts" for fast and simple parsing and to minimize object allocations. Arguments and nested messages are best handled via recursion. For every _START "part",MessagePattern.getLimitPartIndex() efficiently returns the index of the corresponding _LIMIT "part".
List of "parts":
message = MSG_START (SKIP_SYNTAX | INSERT_CHAR | REPLACE_NUMBER | argument)* MSG_LIMITargument = noneArg | simpleArg | complexArgcomplexArg = choiceArg | pluralArg | selectArgnoneArg = ARG_START.NONE (ARG_NAME | ARG_NUMBER) ARG_LIMIT.NONEsimpleArg = ARG_START.SIMPLE (ARG_NAME | ARG_NUMBER) ARG_TYPE [ARG_STYLE] ARG_LIMIT.SIMPLEchoiceArg = ARG_START.CHOICE (ARG_NAME | ARG_NUMBER) choiceStyle ARG_LIMIT.CHOICEpluralArg = ARG_START.PLURAL (ARG_NAME | ARG_NUMBER) pluralStyle ARG_LIMIT.PLURALselectArg = ARG_START.SELECT (ARG_NAME | ARG_NUMBER) selectStyle ARG_LIMIT.SELECTchoiceStyle = ((ARG_INT | ARG_DOUBLE) ARG_SELECTOR message)+pluralStyle = [ARG_INT | ARG_DOUBLE] (ARG_SELECTOR [ARG_INT | ARG_DOUBLE] message)+selectStyle = (ARG_SELECTOR message)+
ARG_START.CHOICE stands for an ARG_STARTPart with ArgType CHOICE.This class is not intended for public subclassing.
Definition at line362 of filemessagepattern.h.
| icu::MessagePattern::MessagePattern | ( | UErrorCode & | errorCode | ) |
Constructs an emptyMessagePattern with default UMessagePatternApostropheMode.
| errorCode | Standard ICU error code. Its input value must pass theU_SUCCESS() test, or else the function returns immediately. Check forU_FAILURE() on output or use with function chaining. (See User Guide for details.) |
| icu::MessagePattern::MessagePattern | ( | UMessagePatternApostropheMode | mode, |
| UErrorCode & | errorCode | ||
| ) |
Constructs an emptyMessagePattern.
| mode | Explicit UMessagePatternApostropheMode. |
| errorCode | Standard ICU error code. Its input value must pass theU_SUCCESS() test, or else the function returns immediately. Check forU_FAILURE() on output or use with function chaining. (See User Guide for details.) |
| icu::MessagePattern::MessagePattern | ( | constUnicodeString & | pattern, |
| UParseError * | parseError, | ||
| UErrorCode & | errorCode | ||
| ) |
Constructs aMessagePattern with default UMessagePatternApostropheMode and parses theMessageFormat pattern string.
| pattern | aMessageFormat pattern string |
| parseError | Struct to receive information on the position of an error within the pattern. Can be nullptr. |
| errorCode | Standard ICU error code. Its input value must pass theU_SUCCESS() test, or else the function returns immediately. Check forU_FAILURE() on output or use with function chaining. (See User Guide for details.) TODO: turn |
| into | UErrorCode specifics? |
| IllegalArgumentException | for syntax errors in the pattern string |
| IndexOutOfBoundsException | if certain limits are exceeded (e.g., argument number too high, argument name too long, etc.) |
| NumberFormatException | if a number could not be parsed |
| icu::MessagePattern::MessagePattern | ( | constMessagePattern & | other | ) |
| virtual |
Destructor.
| UnicodeString icu::MessagePattern::autoQuoteApostropheDeep | ( | ) | const |
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}}."
| void icu::MessagePattern::clear | ( | ) |
| inline |
Clears thisMessagePattern and sets the UMessagePatternApostropheMode.
countParts() will return 0.
| mode | The new UMessagePatternApostropheMode. |
Definition at line519 of filemessagepattern.h.
| inline |
Returns the number of "parts" created by parsing the pattern string.
Returns 0 if no pattern has been parsed orclear() was called.
Definition at line616 of filemessagepattern.h.
| inline |
Definition at line550 of filemessagepattern.h.
| inline |
Returns the index of the ARG|MSG_LIMIT part corresponding to the ARG|MSG_START at start.
| start | The index of somePart data (0..countParts()-1); thisPart should be of Type ARG_START or MSG_START. |
Definition at line698 of filemessagepattern.h.
| double icu::MessagePattern::getNumericValue | ( | constPart & | part | ) | const |
Returns the numeric value associated with an ARG_INT or ARG_DOUBLE.
| part | a part of thisMessagePattern. |
| inline |
Gets the i-th pattern "part".
| i | The index of thePart data. (0..countParts()-1) |
Definition at line626 of filemessagepattern.h.
| inline |
Returns the UMessagePatternPartType of the i-th pattern "part".
Convenience method for getPart(i).getType().
| i | The index of thePart data. (0..countParts()-1) |
Definition at line637 of filemessagepattern.h.
| inline |
Returns the pattern index of the specified pattern "part".
Convenience method for getPart(partIndex).getIndex().
| partIndex | The index of thePart data. (0..countParts()-1) |
Definition at line648 of filemessagepattern.h.
| inline |
Definition at line561 of filemessagepattern.h.
| double icu::MessagePattern::getPluralOffset | ( | int32_t | pluralStart | ) | const |
Returns the "offset:" value of aPluralFormat argument, or 0 if none is specified.
| pluralStart | the index of the firstPluralFormat argument style part. (0..countParts()-1) |
| inline |
Returns the substring of the pattern string indicated by thePart.
Convenience method forgetPatternString().substring(part.getIndex(), part.getLimit()).
| part | a part of thisMessagePattern. |
Definition at line659 of filemessagepattern.h.
Referencesicu::UnicodeString::tempSubString().
| int32_t icu::MessagePattern::hashCode | ( | ) | const |
| inline |
Does the parsed pattern have named arguments like {first_name}?
Definition at line570 of filemessagepattern.h.
| inline |
Does the parsed pattern have numbered arguments like {2}?
Definition at line579 of filemessagepattern.h.
| inline |
| other | another object to compare with. |
Definition at line536 of filemessagepattern.h.
Referencesicu::operator==().
| MessagePattern& icu::MessagePattern::operator= | ( | constMessagePattern & | other | ) |
| bool icu::MessagePattern::operator== | ( | constMessagePattern & | other | ) | const |
| other | another object to compare with. |
| MessagePattern& icu::MessagePattern::parse | ( | constUnicodeString & | pattern, |
| UParseError * | parseError, | ||
| UErrorCode & | errorCode | ||
| ) |
Parses aMessageFormat pattern string.
| pattern | aMessageFormat pattern string |
| parseError | Struct to receive information on the position of an error within the pattern. Can be nullptr. |
| errorCode | Standard ICU error code. Its input value must pass theU_SUCCESS() test, or else the function returns immediately. Check forU_FAILURE() on output or use with function chaining. (See User Guide for details.) |
| IllegalArgumentException | for syntax errors in the pattern string |
| IndexOutOfBoundsException | if certain limits are exceeded (e.g., argument number too high, argument name too long, etc.) |
| NumberFormatException | if a number could not be parsed |
| MessagePattern& icu::MessagePattern::parseChoiceStyle | ( | constUnicodeString & | pattern, |
| UParseError * | parseError, | ||
| UErrorCode & | errorCode | ||
| ) |
Parses aChoiceFormat pattern string.
| pattern | aChoiceFormat pattern string |
| parseError | Struct to receive information on the position of an error within the pattern. Can be nullptr. |
| errorCode | Standard ICU error code. Its input value must pass theU_SUCCESS() test, or else the function returns immediately. Check forU_FAILURE() on output or use with function chaining. (See User Guide for details.) |
| IllegalArgumentException | for syntax errors in the pattern string |
| IndexOutOfBoundsException | if certain limits are exceeded (e.g., argument number too high, argument name too long, etc.) |
| NumberFormatException | if a number could not be parsed |
| MessagePattern& icu::MessagePattern::parsePluralStyle | ( | constUnicodeString & | pattern, |
| UParseError * | parseError, | ||
| UErrorCode & | errorCode | ||
| ) |
Parses aPluralFormat pattern string.
| pattern | aPluralFormat pattern string |
| parseError | Struct to receive information on the position of an error within the pattern. Can be nullptr. |
| errorCode | Standard ICU error code. Its input value must pass theU_SUCCESS() test, or else the function returns immediately. Check forU_FAILURE() on output or use with function chaining. (See User Guide for details.) |
| IllegalArgumentException | for syntax errors in the pattern string |
| IndexOutOfBoundsException | if certain limits are exceeded (e.g., argument number too high, argument name too long, etc.) |
| NumberFormatException | if a number could not be parsed |
| MessagePattern& icu::MessagePattern::parseSelectStyle | ( | constUnicodeString & | pattern, |
| UParseError * | parseError, | ||
| UErrorCode & | errorCode | ||
| ) |
Parses aSelectFormat pattern string.
| pattern | aSelectFormat pattern string |
| parseError | Struct to receive information on the position of an error within the pattern. Can be nullptr. |
| errorCode | Standard ICU error code. Its input value must pass theU_SUCCESS() test, or else the function returns immediately. Check forU_FAILURE() on output or use with function chaining. (See User Guide for details.) |
| IllegalArgumentException | for syntax errors in the pattern string |
| IndexOutOfBoundsException | if certain limits are exceeded (e.g., argument number too high, argument name too long, etc.) |
| NumberFormatException | if a number could not be parsed |
| inline |
Compares the part's substring with the input string s.
| part | a part of thisMessagePattern. |
| s | a string. |
Definition at line670 of filemessagepattern.h.
| static |
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.
| name | Input string. |