fStringDelimited method

Parser<List<ExpressionNode>> fStringDelimited(
  1. String quote
)
inherited

Implementation

Parser<List<ExpressionNode>> fStringDelimited(String quote) => seq3(
  char(quote),
  [
    string('{{').map((_) => const ConstantNode('{')),
    string('}}').map((_) => const ConstantNode('}')),
    ref0(fStringReplacementField),
    (string(r'\' + quote) |
            char(r'\').seq(any()) |
            pattern('^$quote\r\n\\{}'))
        .plus()
        .flatten()
        .map((s) => ConstantNode(_unescape(s))),
  ].toChoiceParser().star(),
  char(quote),
).map3((_, parts, _) => parts);