in lib/message_format.dart [247:284]
void _formatBlock(
Queue<_BlockTypeAndVal> parsedBlocks,
Map<String, Object> namedParameters,
bool ignorePound,
Queue<String> result) {
for (var currentPattern in parsedBlocks) {
var patternValue = currentPattern._value;
var patternType = currentPattern._type;
_checkAndThrow(patternType is _BlockType,
'The type should be a block type: $patternType');
switch (patternType) {
case _BlockType.string:
result.add(patternValue as String);
break;
case _BlockType.simple:
_formatSimplePlaceholder(
patternValue as String, namedParameters, result);
break;
case _BlockType.select:
_checkAndThrow(patternValue is Map<String, Object>,
'The value should be a map: $patternValue');
var mapPattern = patternValue as Map<String, Object>;
_formatSelectBlock(mapPattern, namedParameters, ignorePound, result);
break;
case _BlockType.plural:
_formatPluralOrdinalBlock(patternValue as Map<String, Object>,
namedParameters, _PluralRules.select, ignorePound, result);
break;
case _BlockType.ordinal:
_formatPluralOrdinalBlock(patternValue as Map<String, Object>,
namedParameters, _OrdinalRules.select, ignorePound, result);
break;
default:
_checkAndThrow(false, 'Unrecognized block type: $patternType');
}
}
}