diff --git a/weboob/browser/filters/standard.py b/weboob/browser/filters/standard.py index 18fba7c247212c0d69d0b195b597d164cbeaa34e..ce0ad5892a7ed516dd1af9c1b524bc845c1bed81 100644 --- a/weboob/browser/filters/standard.py +++ b/weboob/browser/filters/standard.py @@ -946,6 +946,19 @@ def filter(self, url): return qs[self.querykey][0] +class Coalesce(MultiFilter): + """ + Returns the first value that is not falsy, + or default if all values are falsy. + """ + @debug() + def filter(self, values): + for value in values: + if value: + return value + return self.default_or_raise(FilterError('All falsy and no default.')) + + def test_CleanText(): # This test works poorly under a doctest, or would be hard to read assert CleanText().filter(u' coucou  \n\théhé') == u'coucou héhé'