convertTemplateToRegex function

(String, List<String>, List<String>) convertTemplateToRegex({
  1. Map<String, String>? parameters,
  2. String template = '',
  3. MatchType? matchTypeOverride,
  4. bool extraEscape = false,
})

Implementation

(String, List<String>, List<String>) convertTemplateToRegex(
    {Map<String, String>? parameters,
    String template = '',
    MatchType? matchTypeOverride,
    bool extraEscape = false}) {
  template = escapeSpecialCharacters(template, extraEscape: extraEscape);
  parameters = parameters ?? {};
  final List<String> unSubstitutedVars = [];
  final List<String> allVars = templateParamRegex
      .allMatches(template)
      .map((match) => match.group(1)!)
      .toList();
  allVars.asMap().forEach((index, param) {
    if (parameters?.containsKey(param) ?? false) {
      template = template.replaceAll('{{$param}}', parameters![param]!);
    } else {
      unSubstitutedVars.add(param);

      final replacement =
          matchTypeOverride == MatchType.GREEDY || param.endsWith('GRD')
              ? '(.*)'
              : '(.*?)';
      template = template.replaceAll('{{$param}}', replacement);
    }
  });
  return (template, allVars, unSubstitutedVars);
}