From 9f565e2e88f3ce22d18aac513f8d6317f7a9be26 Mon Sep 17 00:00:00 2001 From: Laurent Bachelier Date: Thu, 21 Mar 2019 17:48:39 +0100 Subject: [PATCH] filters: Add Coalesce --- weboob/browser/filters/standard.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/weboob/browser/filters/standard.py b/weboob/browser/filters/standard.py index 18fba7c247..ce0ad5892a 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é' -- GitLab