Skip to content

Commit ee79eaf

Browse files
Merge pull request #128 from robertatakenaka/adiciona_author-notes_corresp
Implementa processamento de author-notes para elementos corresp
2 parents fb5629b + 3efc073 commit ee79eaf

2 files changed

Lines changed: 53 additions & 0 deletions

File tree

scielo_classic_website/spsxml/sps_xml_article_meta.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,57 @@ def transform(self, data):
273273
return data
274274

275275

276+
class XMLArticleMetaAuthorNotesPipe(plumber.Pipe):
277+
"""
278+
Pipe para criar author-notes como irmão de contrib-group.
279+
Move elementos corresp de back para dentro de author-notes.
280+
Executa após XMLArticleMetacontribGroupPipe.
281+
"""
282+
283+
def precond(data):
284+
raw, xml = data
285+
286+
# Verifica se existe corresp em back
287+
corresp_elements = xml.xpath(".//back//corresp|.//body//corresp")
288+
if not corresp_elements:
289+
raise plumber.UnmetPrecondition()
290+
291+
@plumber.precondition(precond)
292+
def transform(self, data):
293+
raw, xml = data
294+
295+
# Encontra elementos corresp em back
296+
corresp_elements = xml.xpath(".//back//corresp|.//body//corresp")
297+
298+
if corresp_elements:
299+
# Cria author-notes
300+
author_notes = ET.Element("author-notes")
301+
302+
# Move cada corresp para dentro de author-notes
303+
for corresp in corresp_elements:
304+
# Remove corresp de sua localização atual
305+
parent = corresp.getparent()
306+
if parent is not None:
307+
parent.remove(corresp)
308+
309+
# Adiciona corresp ao author-notes
310+
author_notes.append(corresp)
311+
312+
# Insere author-notes como irmão de contrib-group
313+
article_meta = xml.find("./front/article-meta")
314+
contrib_group = article_meta.find("contrib-group")
315+
316+
if contrib_group is not None:
317+
# Insere author-notes após contrib-group
318+
contrib_group_index = list(article_meta).index(contrib_group)
319+
article_meta.insert(contrib_group_index + 1, author_notes)
320+
else:
321+
# Se não há contrib-group, adiciona ao final de article-meta
322+
article_meta.append(author_notes)
323+
324+
return data
325+
326+
276327
class XMLArticleMetaAffiliationPipe(plumber.Pipe):
277328
def _addrline(self, affiliation):
278329
addrline = None

scielo_classic_website/spsxml/sps_xml_pipes.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
XMLArticleMetaArticleCategoriesPipe,
1212
XMLArticleMetaArticleIdDOIPipe,
1313
XMLArticleMetaContribGroupPipe,
14+
XMLArticleMetaAuthorNotesPipe,
1415
XMLArticleMetaCountsPipe,
1516
XMLArticleMetaElocationInfoPipe,
1617
XMLArticleMetaHistoryPipe,
@@ -67,6 +68,7 @@ def _process(document):
6768
XMLArticleMetaTitleGroupPipe(),
6869
XMLArticleMetaTranslatedTitleGroupPipe(),
6970
XMLArticleMetaContribGroupPipe(),
71+
XMLArticleMetaAuthorNotesPipe(),
7072
XMLArticleMetaAffiliationPipe(),
7173
XMLArticleMetaPublicationDatesPipe(),
7274
XMLArticleMetaIssueInfoPipe(),

0 commit comments

Comments
 (0)