[browser2] Add a Dict filter
This commit is contained in:
parent
9167a60d6c
commit
fadd88dafc
1 changed files with 24 additions and 0 deletions
|
|
@ -159,6 +159,30 @@ class TableCell(_Filter):
|
||||||
|
|
||||||
return self.default_or_raise(ColumnNotFound('Unable to find column %s' % ' or '.join(self.names)))
|
return self.default_or_raise(ColumnNotFound('Unable to find column %s' % ' or '.join(self.names)))
|
||||||
|
|
||||||
|
class Dict(Filter):
|
||||||
|
@classmethod
|
||||||
|
def select(cls, selector, item):
|
||||||
|
if isinstance(selector, basestring):
|
||||||
|
if isinstance(item, dict):
|
||||||
|
content = item
|
||||||
|
else:
|
||||||
|
content = item.el
|
||||||
|
|
||||||
|
for el in selector.split('/'):
|
||||||
|
if el not in content:
|
||||||
|
raise ParseError()
|
||||||
|
|
||||||
|
content = content.get(el)
|
||||||
|
|
||||||
|
return content
|
||||||
|
elif callable(selector):
|
||||||
|
return selector(item)
|
||||||
|
else:
|
||||||
|
return selector
|
||||||
|
|
||||||
|
def filter(self, txt):
|
||||||
|
return txt
|
||||||
|
|
||||||
class CleanHTML(Filter):
|
class CleanHTML(Filter):
|
||||||
def filter(self, txt):
|
def filter(self, txt):
|
||||||
if isinstance(txt, (tuple,list)):
|
if isinstance(txt, (tuple,list)):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue