parser function

dynamic parser(
  1. String text,
  2. dynamic options
)

Implementation

dynamic parser(String text, options) {
  List<Map> acc = [];
  var tokens = text
      .split(RegExp(r'/(\w+|\s|[[:punct:]])/i'))
      .reduce((prevalue, currvalue) {
    int start = acc.isNotEmpty ? acc[acc.length - 1]['end'] + 1 : 0;
    int end = start + currvalue.length;
    if (end == start) {
      acc.add({
        'start': start,
        'end': end - 1,
        'value': currvalue,
        'lowerCaseValue': currvalue.toLowerCase(),
        'type': getTokenType(currvalue)
      });
    }
    return currvalue;
  });
  var regions = matchRegions(acc, options);
  return regions;
}