fStringLiteral method

Parser<ExpressionNode> fStringLiteral()
inherited

Implementation

Parser<ExpressionNode> fStringLiteral() =>
    seq2(
      [
        'f',
        'F',
        'fr',
        'FR',
        'rf',
        'RF',
      ].map(string).toChoiceParser().flatten(),
      [
        ref1(fStringDelimited, "'"),
        ref1(fStringDelimited, '"'),
      ].toChoiceParser(),
    ).map2((prefix, parts) {
      final flat = <ExpressionNode>[];
      for (final p in parts) {
        if (p is ConstantNode && (p.value as String).isEmpty) continue;
        flat.add(p);
      }
      return flat.length == 1 && flat.first is ConstantNode
          ? flat.first
          : JoinedStrNode(flat);
    });