matches method

  1. @override
bool matches(
  1. OrgSection section
)
override

Implementation

@override
bool matches(OrgSection section) {
  final value = this.value;
  switch (property.toUpperCase()) {
    case 'TODO':
      return value is String &&
          evaluateString(section.headline.keyword?.value, operator, value);
    case 'LEVEL':
      return value is num && evaluateNumber(section.level, operator, value);
    case 'PRIORITY':
      return value is String &&
          evaluateString(
            // The default priority is "B"
            // TODO(aaron): This knowledge shouldn't live here
            // TODO(aaron): Support custom priorities, numeric priorities
            section.headline.priority?.value ?? 'B',
            operator,
            value,
          );
    default:
      final actual = section.getProperties(':$property:').firstOrNull;
      if (value is String) {
        return evaluateString(actual, operator, value);
      } else if (actual != null && value is num) {
        return evaluateNumber(num.parse(actual), operator, value);
      }
  }
  return false;
}