satisfiesTextPredicates method
bool
satisfiesTextPredicates(
- TreeSitterQuery query, {
- String? source,
- TreeSitterQueryTextProvider? textProvider,
Applies only Tree-sitter's built-in text predicates to this match.
Property and general predicates are metadata and intentionally do not
participate, matching Rust QueryMatch::satisfies_text_predicates.
Implementation
bool satisfiesTextPredicates(
TreeSitterQuery query, {
String? source,
TreeSitterQueryTextProvider? textProvider,
}) {
query._checkPatternIndex(patternIndex);
final pattern = <TreeSitterStructuralQueryPattern>[
...query.structuralPatterns,
...query.matchPatterns,
].where((candidate) => candidate.patternIndex == patternIndex).firstOrNull;
if (pattern == null || pattern.predicates.isEmpty) return true;
final bindings = <String, List<_TreeSitterBoundNode>>{};
for (final capture in captures) {
final ancestors = <TreeSitterNode>[];
for (
var parent = capture.node.parent;
parent != null;
parent = parent.parent
) {
ancestors.insert(0, parent);
}
bindings
.putIfAbsent(capture.name, () => <_TreeSitterBoundNode>[])
.add(_TreeSitterBoundNode(capture.node, ancestors));
}
return query._textPredicatesMatch(
pattern.predicates,
bindings,
source,
textProvider,
);
}