MessageValue constructor

MessageValue(
  1. dynamic value
)

Implementation

factory MessageValue(dynamic value) {
  var built = <dynamic>[];

  if (value is List) {
    var list = value;

    for (dynamic e in list) {
      var val = MessageValue(e);
      built.addAll(val._values);
    }
  } else {
    var line = '$value';

    var cursor = 0;
    for (var m in _regexpBlock.allMatches(line)) {
      if (m.start > cursor) {
        var prev = line.substring(cursor, m.start);
        built.addAll(_buildValueFromString(prev));
      }

      var block = m.group(1)!;
      built.add(MessageBlock(block));

      cursor = m.end;
    }

    if (line.length > cursor) {
      var tail = line.substring(cursor);
      built.addAll(_buildValueFromString(tail));
    }
  }

  return MessageValue._(built);
}