CedarPattern.parse constructor

CedarPattern.parse(
  1. String pattern
)

Implementation

factory CedarPattern.parse(String pattern) {
  final components = <Object?>[];
  final jsonComponents = <Object?>[];
  final scanner = StringScanner(pattern);
  while (!scanner.isDone) {
    while (!scanner.isDone && scanner.peekChar() == Character.star) {
      scanner.readChar();
      components.add(const Wildcard());
      jsonComponents.add('Wildcard');
    }
    final literal = scanner.readUnquoted(star: true);
    if (literal.isNotEmpty) {
      components.add(Literal(literal));
      for (final rune in literal.runes) {
        jsonComponents.add({'Literal': String.fromCharCode(rune)});
      }
    }
  }
  return CedarPattern.from(
    components,
    raw: pattern,
    jsonForm: jsonComponents,
  );
}