expand method

  1. @override
List<Rule> expand()
override

The basic rules this block stands for. Called once per block.

Implementation

@override
List<Rule> expand() {
  final closeText = end ?? quote;
  final close = _escape(closeText);
  final closing = doubled
      ? '$close(?!$close)'
      : lastInRun
      ? '$close(?!${_escape(closeText[closeText.length - 1])})'
      : close;
  final escape = this.escape;
  return [
    RegionRule(
      begin: '${prefix ?? ''}${_escape(quote)}',
      end: multiline ? closing : '$closing|\$',
      scope: scope,
      rules: [
        if (doubled) TokenRule('$close$close', scope: Scopes.stringEscape),
        if (escape != null)
          TokenRule('${_escape(escape)}[\\s\\S]', scope: Scopes.stringEscape),
        ...rules,
      ],
    ),
  ];
}