core (xml_tools): fixed findAll
- names and namespases arguments haven been inverted to be in the same order as for domish.Element.elements
- fixed bad copy of elements in recursions
- check if childrens are IElements
- namespaces and names can now be basestrings instead of iterables
This commit is contained in:
parent
66e393336b
commit
791be3a4ad
2 changed files with 12 additions and 6 deletions
|
|
@ -282,7 +282,7 @@ class BlogImportPlugin(object):
|
|||
tmp_dir = tempfile.mkdtemp()
|
||||
try:
|
||||
# TODO: would be nice to also update the hyperlinks to these images, e.g. when you have <a href="{url}"><img src="{url}"></a>
|
||||
for img_elt in xml_tools.findAll(top_elt, ['img']):
|
||||
for img_elt in xml_tools.findAll(top_elt, names=[u'img']):
|
||||
yield self.imgFilters(client, img_elt, options, opt_host, tmp_dir)
|
||||
finally:
|
||||
os.rmdir(tmp_dir) # XXX: tmp_dir should be empty, or something went wrong
|
||||
|
|
|
|||
|
|
@ -1405,19 +1405,25 @@ def getText(node):
|
|||
data.append(child.wholeText)
|
||||
return u"".join(data)
|
||||
|
||||
def findAll(elt, names=None, namespaces=None):
|
||||
def findAll(elt, namespaces=None, names=None, ):
|
||||
"""Find child element at any depth matching criteria
|
||||
|
||||
@param elt(domish.Element): top parent of the elements to find
|
||||
@param names(iterable, None): names to match
|
||||
@param names(iterable[unicode], basestring, None): names to match
|
||||
None to accept every names
|
||||
@param namespace(unicode): URIs to match
|
||||
@param namespace(iterable[unicode], basestring, None): URIs to match
|
||||
None to accept every namespaces
|
||||
@return ((G)domish.Element): found elements
|
||||
"""
|
||||
if isinstance(namespaces, basestring):
|
||||
namespaces=tuple((namespaces,))
|
||||
if isinstance(names, basestring):
|
||||
names=tuple((names,))
|
||||
|
||||
for child in elt.elements():
|
||||
if ((not names or child.name in names) and
|
||||
if (domish.IElement.providedBy(child) and
|
||||
(not names or child.name in names) and
|
||||
(not namespaces or child.uri in namespaces)):
|
||||
yield child
|
||||
for found in findAll(child, names):
|
||||
for found in findAll(child, namespaces, names):
|
||||
yield found
|
||||
|
|
|
|||
Loading…
Reference in a new issue