captureQuantifiers method
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,
});
}