From 8aa0dc8aceeb8520b52a8488021eee156b91f1f1 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 23 Mar 2019 15:16:45 +0200 Subject: Change: inverted searches --- effitool | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'effitool') diff --git a/effitool b/effitool index af1e5ce..b41eea7 100755 --- a/effitool +++ b/effitool @@ -314,12 +314,27 @@ class ContainsCond(SearchCond): return pattern in value +class NotContainsCond(SearchCond): + + def op(self, value, pattern): + return pattern not in value + + class RegexCond(SearchCond): def op(self, value, pattern): return re.search(pattern, value) +class Invert(SearchCond): + + def __init__(self, cond): + self._cond = cond + + def matches(self, member): + return not self._cond.matches(member) + + class CondFactory: _pairs = [ @@ -330,6 +345,11 @@ class CondFactory: def parse(self, cond): for op, klass in self._pairs: + inv_op = '!' + op + if inv_op in cond: + field, pattern = cond.split(inv_op, 1) + return Invert(klass(field, pattern)) + if op in cond: field, pattern = cond.split(op, 1) return klass(field, pattern) -- cgit v1.2.1