Package com.ibm.icu.message2
Class MFDataModelFormatter
- java.lang.Object
-
- com.ibm.icu.message2.MFDataModelFormatter
-
class MFDataModelFormatter extends java.lang.Object
Takes anMFDataModel
and formats it to aString
(and later on we will also implement formatting to aFormattedMessage
).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
MFDataModelFormatter.IntVarTuple
(package private) static class
MFDataModelFormatter.ResolvedExpression
private static class
MFDataModelFormatter.ResolvedSelector
-
Field Summary
Fields Modifier and Type Field Description private MFFunctionRegistry
customFunctions
private MFDataModel.Message
dm
private static MFFunctionRegistry
EMPTY_REGISTY
private java.util.Locale
locale
private MFFunctionRegistry
standardFunctions
-
Constructor Summary
Constructors Constructor Description MFDataModelFormatter(MFDataModel.Message dm, java.util.Locale locale, MFFunctionRegistry customFunctionRegistry)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.util.Map<java.lang.String,java.lang.Object>
convertOptions(java.util.Map<java.lang.String,MFDataModel.Option> options, java.util.Map<java.lang.String,java.lang.Object> localVars, java.util.Map<java.lang.String,java.lang.Object> arguments)
private MFDataModel.Pattern
findBestMatchingPattern(MFDataModel.SelectMessage sm, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> arguments)
(package private) java.lang.String
format(java.util.Map<java.lang.String,java.lang.Object> arguments)
private FormattedPlaceholder
formatExpression(MFDataModel.Expression expression, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> arguments)
Formats an expression.private static void
formattingError(java.lang.String message)
private FormatterFactory
getFormattingFunctionFactoryByName(java.lang.Object toFormat, java.lang.String functionName)
private java.util.List<java.lang.String>
matchSelectorKeys(MFDataModelFormatter.ResolvedSelector rv, java.util.List<java.lang.String> keys)
spec: The method MatchSelectorKeys is determined by the implementation.private java.util.Map<java.lang.String,java.lang.Object>
resolveDeclarations(java.util.List<MFDataModel.Declaration> declarations, java.util.Map<java.lang.String,java.lang.Object> arguments)
private static java.lang.Object
resolveLiteralOrVariable(MFDataModel.LiteralOrVariableRef value, java.util.Map<java.lang.String,java.lang.Object> localVars, java.util.Map<java.lang.String,java.lang.Object> arguments)
private static int
sortVariants(MFDataModelFormatter.IntVarTuple o1, MFDataModelFormatter.IntVarTuple o2)
-
-
-
Field Detail
-
locale
private final java.util.Locale locale
-
dm
private final MFDataModel.Message dm
-
standardFunctions
private final MFFunctionRegistry standardFunctions
-
customFunctions
private final MFFunctionRegistry customFunctions
-
EMPTY_REGISTY
private static final MFFunctionRegistry EMPTY_REGISTY
-
-
Constructor Detail
-
MFDataModelFormatter
MFDataModelFormatter(MFDataModel.Message dm, java.util.Locale locale, MFFunctionRegistry customFunctionRegistry)
-
-
Method Detail
-
format
java.lang.String format(java.util.Map<java.lang.String,java.lang.Object> arguments)
-
findBestMatchingPattern
private MFDataModel.Pattern findBestMatchingPattern(MFDataModel.SelectMessage sm, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> arguments)
-
sortVariants
private static int sortVariants(MFDataModelFormatter.IntVarTuple o1, MFDataModelFormatter.IntVarTuple o2)
-
matchSelectorKeys
private java.util.List<java.lang.String> matchSelectorKeys(MFDataModelFormatter.ResolvedSelector rv, java.util.List<java.lang.String> keys)
spec: The method MatchSelectorKeys is determined by the implementation. It takes as arguments a resolved _selector_ value `rv` and a list of string keys `keys`, and returns a list of string keys in preferential order. The returned list MUST contain only unique elements of the input list `keys`. The returned list MAY be empty. The most-preferred key is first, with each successive key appearing in order by decreasing preference.
-
formattingError
private static void formattingError(java.lang.String message)
-
getFormattingFunctionFactoryByName
private FormatterFactory getFormattingFunctionFactoryByName(java.lang.Object toFormat, java.lang.String functionName)
-
resolveLiteralOrVariable
private static java.lang.Object resolveLiteralOrVariable(MFDataModel.LiteralOrVariableRef value, java.util.Map<java.lang.String,java.lang.Object> localVars, java.util.Map<java.lang.String,java.lang.Object> arguments)
-
convertOptions
private static java.util.Map<java.lang.String,java.lang.Object> convertOptions(java.util.Map<java.lang.String,MFDataModel.Option> options, java.util.Map<java.lang.String,java.lang.Object> localVars, java.util.Map<java.lang.String,java.lang.Object> arguments)
-
formatExpression
private FormattedPlaceholder formatExpression(MFDataModel.Expression expression, java.util.Map<java.lang.String,java.lang.Object> variables, java.util.Map<java.lang.String,java.lang.Object> arguments)
Formats an expression.- Parameters:
expression
- the expression to formatvariables
- local variables, created from declarations (`.input` and `.local`)arguments
- the arguments passed at runtime to be formatted (`mf.format(arguments)`)
-
resolveDeclarations
private java.util.Map<java.lang.String,java.lang.Object> resolveDeclarations(java.util.List<MFDataModel.Declaration> declarations, java.util.Map<java.lang.String,java.lang.Object> arguments)
-
-