From 1f088d46438a12123b3b32e6a284889ef6588676 Mon Sep 17 00:00:00 2001 From: Nikolaos-Digenis Karagiannis Date: Sun, 13 Apr 2014 14:44:16 +0300 Subject: [PATCH] just a demo --- scrapy/contrib/loader/processor.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/scrapy/contrib/loader/processor.py b/scrapy/contrib/loader/processor.py index 8c74c53584a..2732b8f0f1d 100644 --- a/scrapy/contrib/loader/processor.py +++ b/scrapy/contrib/loader/processor.py @@ -49,11 +49,32 @@ def __call__(self, value, loader_context=None): return value +class Filter(object): + + def __init__(self, function=lambda v: v is not None and v != ''): + self.function = function + + def __call__(self, values): + return tuple(filter(self.function, values)) + + +class Slice(object): + + def __init__(self, begin=None, end=None): + self.begin, self.end = begin, end + + def __call__(self, values): + return values[self.begin:self.end] + + class TakeFirst(object): + def __init__(self, function=lambda v: v is not None and v != ''): + self.function = bool if function is None else function + def __call__(self, values): for value in values: - if value is not None and value != '': + if self.function(value): return value