Skip to content

Instantly share code, notes, and snippets.

@joffilyfe
Created December 16, 2019 20:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joffilyfe/f41df40a1827a52d8dc27ac742101147 to your computer and use it in GitHub Desktop.
Save joffilyfe/f41df40a1827a52d8dc27ac742101147 to your computer and use it in GitHub Desktop.
class RemoveReferencesFromBodyPipe(CustomPipe):
def transform(self, data):
raw, xml = data
if len(self.super_obj.ref_items) > 0:
reference_header, references = self._find_references_to_delete(xml)
if len(self.super_obj.ref_items) == len(references):
self._mark_references_to_be_deleted(references + [reference_header])
else:
logger.info("RemoveReferencesFromBodyPipe: FALHOU")
return data
def _find_references_to_delete(self, xml):
"""Seleciona os parágrafos a serem removidos com base nos
delimitadores de referência."""
reference_header = None
references = []
for comment in xml.xpath("//comment()"):
parent = comment.getparent()
if reference_header is None and comment.text.strip() == "ref":
reference_header = comment.getprevious()
elif comment.text.strip() == "end-ref":
references.append(parent)
return (reference_header, references)
def _mark_references_to_be_deleted(self, references):
"""Marca referências a serem removidas durante a execução da pipeline
de conversão do `body`."""
for reference in references:
_remove_tag(reference, True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment