mirror of https://github.com/scrapy/scrapy.git
added TreeExpander example
This commit is contained in:
parent
38f82e3993
commit
5be0cee577
|
|
@ -404,6 +404,17 @@ one, as the other is just an identity expander.
|
|||
Loader arguments passed to on each expander call. This arguments can be
|
||||
overriden with specific noader arguments passed on each expander call.
|
||||
|
||||
Example::
|
||||
|
||||
>>> def filter_world(x):
|
||||
... return None if x == 'world' else x
|
||||
...
|
||||
>>> from scrapy.newitem.loader.expanders import TreeExpander
|
||||
>>> expander = TreeExpander(filter_world, str.upper)
|
||||
>>> expander(['hello', 'world', 'this', 'is', 'scrapy'])
|
||||
['HELLO, 'THIS', 'IS', 'SCRAPY']
|
||||
|
||||
|
||||
IdentityExpander
|
||||
----------------
|
||||
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class TreeExpander(object):
|
|||
def wrap_with_args(self, f):
|
||||
return lambda x, y: f(x, loader_args=y)
|
||||
|
||||
def __call__(self, value, loader_args):
|
||||
def __call__(self, value, loader_args=None):
|
||||
values = arg_to_iter(value)
|
||||
largs = self.default_loader_args
|
||||
if loader_args:
|
||||
|
|
|
|||
|
|
@ -70,6 +70,14 @@ class LoaderTest(unittest.TestCase):
|
|||
self.assertEqual(il.get_expanded_value('name'), [u'Pepe'])
|
||||
self.assertEqual(il.get_reduced_value('name'), u'Pepe')
|
||||
|
||||
def test_tree_expander_filter(self):
|
||||
def filter_world(x):
|
||||
return None if x == 'world' else x
|
||||
|
||||
expander = TreeExpander(filter_world, str.upper)
|
||||
self.assertEqual(expander(['hello', 'world', 'this', 'is', 'scrapy']),
|
||||
['HELLO', 'THIS', 'IS', 'SCRAPY'])
|
||||
|
||||
def test_tree_expander_multiple_functions(self):
|
||||
class TestLoader(NameLoader):
|
||||
name_exp = TreeExpander(lambda v: v.title(), lambda v: v[:-1])
|
||||
|
|
|
|||
Loading…
Reference in New Issue