captureQuantifiers method

Map<String, TreeSitterCaptureQuantifier> captureQuantifiers(
  1. int patternIndex
)

Implementation

Map<String, TreeSitterCaptureQuantifier> captureQuantifiers(
  int patternIndex,
) {
  _checkNotDisposed();
  _checkPatternIndex(patternIndex);
  if (patternIndex < captureQuantifiersByPattern.length) {
    return captureQuantifiersByPattern[patternIndex];
  }
  final pattern = <TreeSitterStructuralQueryPattern>[
    ...structuralPatterns,
    ...matchPatterns,
  ].where((candidate) => candidate.patternIndex == patternIndex).firstOrNull;
  final Map<String, _TreeSitterCaptureCardinality> cardinalities;
  if (pattern == null) {
    cardinalities = const {};
  } else if (pattern.root case final root?) {
    cardinalities = _nodeCaptureCardinalities(root);
  } else {
    cardinalities = _sequenceCaptureCardinalities(pattern.rootSiblings);
  }
  return Map.unmodifiable({
    for (final name in captureNames)
      name: (cardinalities[name] ?? const _TreeSitterCaptureCardinality(0, 0))
          .quantifier,
  });
}