onIndefinite method
void
onIndefinite(
- String text
)
override
Implementation
@override
void onIndefinite(String text) {
// Process depending on indefinite type.
switch (text) {
case indefBytes:
_indefiniteStartCount++;
_indefiniteStack.add(text);
_byteAssembly.clear();
break;
case indefString:
_indefiniteStartCount++;
_indefiniteStack.add(text);
_stringAssembly = '';
break;
case indefMap:
_indefiniteStartCount++;
_indefiniteStack.add(text);
onMap(indefiniteMaxSize);
break;
case indefArray:
_indefiniteStartCount++;
_indefiniteStack.add(text);
onArray(indefiniteMaxSize);
break;
case indefStop:
// Get the top of the indefinite stack and switch on it.
if (_indefiniteStack.isEmpty) {
onError('Unbalanced indefinite break');
break;
}
final top = _indefiniteStack.removeLast();
switch (top) {
case indefBytes:
onBytes(_byteAssembly, _byteAssembly.length);
break;
case indefString:
onString(_stringAssembly);
break;
case indefMap:
case indefArray:
{
// Add an indefinite iterable stop item
final item = DartItem();
item.type = dartTypes.dtIterableIndefiniteStop;
item.complete = true;
_append(item);
}
break;
default:
onError('Unknown indefinite type on stop');
}
_indefiniteStartCount--;
break;
default:
onError('Unknown indefinite type on start');
}
// If the indefinite sequence has stopped process it
if (_indefiniteStartCount == 0) {
_buildIndefiniteSequence();
}
}