facho/facho.py: adiciona replacement_for para sustitucion.
FossilOrigin-Name: 5e9210afdf4577388a206310ded9abbcf129d02f3818671aba3aad1282726466
This commit is contained in:
parent
1a2bd38b35
commit
e13d8a333b
@ -82,6 +82,9 @@ class LXMLBuilder:
|
||||
def append(self, elem, child):
|
||||
elem.append(child)
|
||||
|
||||
def remove(self, elem):
|
||||
elem.getparent().remove(elem)
|
||||
|
||||
def set_text(self, elem, text):
|
||||
elem.text = text
|
||||
|
||||
@ -164,6 +167,11 @@ class FachoXML:
|
||||
def placeholder_for(self, xpath):
|
||||
return self.find_or_create_element(xpath)
|
||||
|
||||
def replacement_for(self, xpath, new_xpath, content, **attrs):
|
||||
elem = self.get_element(xpath)
|
||||
self.builder.remove(elem)
|
||||
return self.set_element(new_xpath, content, **attrs)
|
||||
|
||||
def find_or_create_element(self, xpath, append=False):
|
||||
"""
|
||||
@param xpath ruta xpath para crear o consultar de un solo elemendo
|
||||
|
@ -170,3 +170,11 @@ def test_facho_xml_fragment_relative():
|
||||
invoice = xml.fragment('./Invoice')
|
||||
invoice.set_element('./Id', 1)
|
||||
assert xml.tostring() == '<root><Invoice><Id>1</Id></Invoice></root>'
|
||||
|
||||
|
||||
def test_facho_xml_replacement_for():
|
||||
xml = facho.FachoXML('root')
|
||||
xml.placeholder_for('./child/type')
|
||||
xml.replacement_for('./child/type',
|
||||
'./child/code', 'test')
|
||||
assert xml.tostring() == '<root><child><code>test</code></child></root>'
|
||||
|
Loading…
Reference in New Issue
Block a user