importFrom method

Parser<ImportFromNode> importFrom()
inherited

Implementation

Parser<ImportFromNode> importFrom() =>
    seq4(
      ref0(fromToken),
      seq2(
        ref1(token, '.').star().flatten().map((dots) => dots.length),
        ref0(dottedName).optional(),
      ),
      ref0(importToken),
      [
        ref1(token, '*').map((_) => [const AliasNode(name: '*')]),
        seq3(
          ref1(token, '('),
          ignore(ref0(dottedAsNames)),
          ref1(token, ')'),
        ).map3((_, names, _) => names),
        ref0(dottedAsNames),
      ].toChoiceParser(),
    ).map4(
      (_, moduleSpec, _, names) => ImportFromNode(
        module: moduleSpec.$2,
        level: moduleSpec.$1,
        names: names,
      ),
    );