Exemplo n.º 1
0
    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
Exemplo n.º 2
0
 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>"))
Exemplo n.º 3
0
 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"))
Exemplo n.º 4
0
 def test_should_extract_2_when_the_number_is_inner_a_html_tag(self):
     self.assertEqual("2", xml.extract_reference_order("<span>2<span>"))
Exemplo n.º 5
0
 def test_should_extract_2_when_are_spaces_between_number_and_text(self):
     self.assertEqual("2", xml.extract_reference_order("2   ref"))
Exemplo n.º 6
0
 def test_extract_2_from_reference_text(self):
     self.assertEqual("2", xml.extract_reference_order("2. ref"))