matches method

bool matches(
  1. String text,
  2. List<TreeSitterNode> ancestors, {
  3. Set<String> properties = const {},
})

Implementation

bool matches(
  String text,
  List<TreeSitterNode> ancestors, {
  Set<String> properties = const {},
}) {
  return switch (operator) {
    TreeSitterQueryPredicateOperator.match => _matchesRegex(text),
    TreeSitterQueryPredicateOperator.notMatch => !_matchesRegex(text),
    TreeSitterQueryPredicateOperator.anyMatch => _matchesRegex(text),
    TreeSitterQueryPredicateOperator.anyNotMatch => !_matchesRegex(text),
    TreeSitterQueryPredicateOperator.equals =>
      values.isNotEmpty && text == values.first,
    TreeSitterQueryPredicateOperator.notEquals =>
      values.isNotEmpty && text != values.first,
    TreeSitterQueryPredicateOperator.anyEquals =>
      values.isNotEmpty && text == values.first,
    TreeSitterQueryPredicateOperator.anyNotEquals =>
      values.isNotEmpty && text != values.first,
    TreeSitterQueryPredicateOperator.anyOf => values.contains(text),
    TreeSitterQueryPredicateOperator.notAnyOf => !values.contains(text),
    TreeSitterQueryPredicateOperator.notHasParent => !ancestors.any(
      (ancestor) => values.contains(ancestor.kind),
    ),
    TreeSitterQueryPredicateOperator.hasAncestor => ancestors.any(
      (ancestor) => values.contains(ancestor.kind),
    ),
    TreeSitterQueryPredicateOperator.notHasAncestor => !ancestors.any(
      (ancestor) => values.contains(ancestor.kind),
    ),
    TreeSitterQueryPredicateOperator.isProperty =>
      values.isNotEmpty && properties.contains(values.first),
    TreeSitterQueryPredicateOperator.isNotProperty =>
      values.isNotEmpty && !properties.contains(values.first),
  };
}