MessageBlockBranch constructor

MessageBlockBranch(
  1. String branch
)

Implementation

factory MessageBlockBranch(String branch) {
  var idx = branch.indexOf(':');

  if (idx < 0) {
    return MessageBlockBranch._(
        MessageBlockBranchType.defaultBranch, null, MessageValue(branch));
  }

  var typeStr = branch.substring(0, idx).trim();

  var value = branch.substring(idx + 1);

  var idx2 = typeStr.indexOf('[');
  var idx3 = typeStr.indexOf(']');

  if (idx2 > 0 && idx3 > idx2) {
    var type = typeStr.substring(0, idx2).toUpperCase().trim();
    var varName = typeStr.substring(idx2 + 1, idx3).trim();

    return MessageBlockBranch._(
        EnumToString.fromString(MessageBlockBranchType.values, type) ??
            MessageBlockBranchType.defaultBranch,
        varName,
        MessageValue(value));
  } else {
    typeStr = typeStr.toUpperCase();
    return MessageBlockBranch._(
        EnumToString.fromString(MessageBlockBranchType.values, typeStr) ??
            MessageBlockBranchType.defaultBranch,
        null,
        MessageValue(value));
  }
}