def update_mixed_citations(self, references: dict, override=False) -> list: """Atualiza a tag `mixed-citation` nas referências do artigo. Também cria a tag `label` com a ordem/índice da referência. Params: references (dict): Dicionário com as referências de um artigo. O formato esperado é: {"order": "reference-text"}. override (bool): Força a atualização do mixed-citation para referências que já possuam o elemento. Returns: None """ updated = [] for order, reference in enumerate( self.xmltree.findall(".//back/ref-list/ref"), start=1): reference_text = references.get(str(order)) if reference_text is None: continue elif not override and reference.find( ".//mixed-citation") is not None: continue try: new_mixed_citation = xml.create_mixed_citation_element( reference_text) except AssertionError: continue xml.remove_element(reference, ".//mixed-citation") reference.insert(0, new_mixed_citation) extracted_order = xml.extract_reference_order(text=reference_text) if extracted_order == str(order): xml.remove_element(reference, ".//label") reference_label = etree.Element("label") reference_label.text = extracted_order reference.insert(0, reference_label) updated.append(references.get(str(order))) return updated
def test_should_return_an_empty_string_when_the_number_is_an_parameter_value( self): self.assertEqual( "", xml.extract_reference_order("<font size='2'>ref</font>"))
def test_should_return_an_empty_string_when_does_not_extract_the_reference_order( self): self.assertEqual("", xml.extract_reference_order("ref ref ref ref"))
def test_should_extract_2_when_the_number_is_inner_a_html_tag(self): self.assertEqual("2", xml.extract_reference_order("<span>2<span>"))
def test_should_extract_2_when_are_spaces_between_number_and_text(self): self.assertEqual("2", xml.extract_reference_order("2 ref"))
def test_extract_2_from_reference_text(self): self.assertEqual("2", xml.extract_reference_order("2. ref"))