in lib/message_format.dart [709:750]
Map<String, Object> _parseOrdinalBlock(String pattern) {
var argumentName = '';
var replaceRegex = _ordinalBlockRe;
pattern = pattern.replaceFirstMapped(replaceRegex, (match) {
// string, name
argumentName = match.group(1)!;
return '';
});
var result = {'argumentName': argumentName, 'argumentOffset': 0};
var parts = _extractParts(pattern);
// Looking for (key block)+ sequence.
var pos = 0;
while (pos < parts.length) {
var thePart = parts.elementAt(pos);
_checkAndThrow(thePart._value is String, 'Missing ordinal key element.');
var key = thePart._value;
pos++;
_checkAndThrow(
pos < parts.length, 'Missing or invalid ordinal value element.');
thePart = parts.elementAt(pos);
Queue<_BlockTypeAndVal>? value;
if (_ElementType.block == thePart._type) {
value = _parseBlock(thePart._value);
} else {
_checkAndThrow(false, 'Expected block type.');
}
key = key.replaceFirstMapped(RegExp('\\s*(?:=)?(\\w+)\\s*'), (match) {
return match.group(1).toString();
});
result[key] = value!;
pos++;
}
_checkAndThrow(result.containsKey(_other),
'Missing other key in selectordinal statement.');
return result;
}