createSpans method

dynamic createSpans(
  1. String text
)

Implementation

createSpans(String text){
  var spans = <TextSpan>[];
  var rs = r'"(\\\n|\\"|[^"\n])*"' + '|' + r"'(\\\n|\\'|[^'\n])*'";
  var rc = r'/\*(.|\n)*?\*/';
  var lst = [];
  var r = new RegExp(rc + '|' + rs + '|' + r'//.*');
  r.allMatches(text).forEach((i) {
    text = text.replaceFirst(i.group(0)!, '\x00');
    lst.add(i.group(0));
  });
  RegExp  re = new RegExp(r'(\x00)|([^\x00\?:!%\+\=\-\*/\&\^\|~\w])+|((\w)+)|[\s\?:!%\+\=\-\*/\&\^\|~]+');
  int j=0;
  String? lastToken = '';
  re.allMatches(text).forEach((i) {
    if(i.group(0)!.contains('\x00')){
      var x = i.group(0)!.replaceFirst('\x00', lst[j]);
      spans.add(TextSpan(text: x,style: getTextStyle(lst[j] , spans , lastToken)));
      j++;
    }else {
      spans.add(TextSpan(text: i.group(0), style: getTextStyle(i.group(0)! , spans , lastToken)));
    }
    lastToken = i.group(0)!;
    // print(i.group(0));
  });
  return  spans;
}