--- a/pvl/syslog/filter.py Sun Feb 10 19:57:00 2013 +0200
+++ b/pvl/syslog/filter.py Sun Feb 10 23:27:04 2013 +0200
@@ -7,19 +7,30 @@
"""
Match syslog messages fields against given patterns.
"""
+
+ @classmethod
+ def build (cls, **filters) :
+ """
+ Match using given non-None fields.
+ """
- def __init__ (self, **filters) :
+ # drop None's
+ return cls(dict((attr, regex) for attr, regex in filters.iteritems() if regex is not None))
+
+ def __init__ (self, filters) :
"""
Match using given { field: regex }.
"""
-
- # drop None's
- self.filters = dict((attr, regex) for attr, regex in filters.iteritems() if regex is not None)
+
+ self.filters = filters
def match_glob (self, attr, glob, value=None) :
"""
Match prog as glob.
"""
+
+ if not glob :
+ return { attr: value }
if not value :
# require
@@ -59,6 +70,9 @@
Match given value against given pattern.
"""
+ if not regex :
+ return { attr: value }
+
if not value :
# XXX: optional = match empty string?
value = ''
@@ -92,10 +106,6 @@
# filter
filter = self.filters[attr]
- if not filter :
- # ignore
- continue
-
# lookup match-func
match = getattr(self, 'match_{attr}'.format(attr=attr), None)