Skip to content

Commit

Permalink
improve support for journal-article crossrefxml
Browse files Browse the repository at this point in the history
  • Loading branch information
mfenner committed May 15, 2024
1 parent 087289f commit 5b497b4
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 25 deletions.
2 changes: 1 addition & 1 deletion cmd/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ var versionCmd = &cobra.Command{
Short: "Print the version number of commonmeta",
Long: `All software has versions. This is commonmeta's`,
Run: func(cmd *cobra.Command, args []string) {
cmd.Println("Commonmeta v0.3.14 -- HEAD")
cmd.Println("Commonmeta v0.3.15 -- HEAD")
},
}

Expand Down
44 changes: 21 additions & 23 deletions crossrefxml/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -397,39 +397,37 @@ type ItemNumber struct {
// Journal represents a journal in Crossref XML metadata.
type Journal struct {
XMLName xml.Name `xml:"journal"`
JournalIssue JournalIssue `xml:"journal_issue,omitempty"`
JournalMetadata JournalMetadata `xml:"journal_metadata,omitempty"`
JournalIssue JournalIssue `xml:"journal_issue,omitempty"`
JournalArticle JournalArticle `xml:"journal_article,omitempty"`
}

// JournalArticle represents a journal article in Crossref XML metadata.
type JournalArticle struct {
XMLName xml.Name `xml:"journal_article"`
Text string `xml:",chardata"`
PublicationType string `xml:"publication_type,attr"`
ReferenceDistributionOpts string `xml:"reference_distribution_opts,attr"`
PublicationType string `xml:"publication_type,attr,omitempty"`
ReferenceDistributionOpts string `xml:"reference_distribution_opts,attr,omitempty"`
Titles Titles `xml:"titles,omitempty"`
Contributors Contributors `xml:"contributors,omitempty"`
PublicationDate []PublicationDate `xml:"publication_date"`
PublisherItem struct {
ItemNumber ItemNumber `xml:"item_number"`
} `xml:"publisher_item"`
Abstract []Abstract `xml:"jats:abstract"`
Pages Pages `xml:"pages"`
ISSN []ISSN `xml:"issn"`
Program []Program `xml:"program"`
Crossmark Crossmark `xml:"crossmark"`
ArchiveLocations ArchiveLocations `xml:"archive_locations"`
DOIData DOIData `xml:"doi_data"`
CitationList CitationList `xml:"citation_list,omitempty"`
PublisherItem *PublisherItem `xml:"publisher_item,omitempty"`
Abstract []Abstract `xml:"jats:abstract"`
Pages *Pages `xml:"pages,omitempty"`
ISSN []ISSN `xml:"issn"`
Program []Program `xml:"program"`
Crossmark *Crossmark `xml:"crossmark,omitempty"`
ArchiveLocations *ArchiveLocations `xml:"archive_locations"`
DOIData DOIData `xml:"doi_data"`
CitationList CitationList `xml:"citation_list,omitempty"`
}

type JournalIssue struct {
XMLName xml.Name `xml:"journal_issue"`
PublicationDate []PublicationDate `xml:"publication_date"`
JournalVolume JournalVolume `xml:"journal_volume"`
Issue string `xml:"issue"`
DOIData DOIData `xml:"doi_data"`
JournalVolume JournalVolume `xml:"journal_volume,omitempty"`
Issue string `xml:"issue,omitempty"`
DOIData *DOIData `xml:"doi_data,omitempty"`
}

// JournalMetadata represents journal metadata in Crossref XML metadata.
Expand All @@ -438,7 +436,7 @@ type JournalMetadata struct {
Language string `xml:"language,attr,omitempty"`
FullTitle string `xml:"full_title,omitempty"`
ISSN []ISSN `xml:"issn,omitempty"`
DOIData DOIData `xml:"doi_data,omitempty"`
DOIData *DOIData `xml:"doi_data,omitempty"`
}

type JournalVolume struct {
Expand Down Expand Up @@ -561,7 +559,7 @@ type Publisher struct {
type PublisherItem struct {
XMLName xml.Name `xml:"publisher_item"`
Text string `xml:",chardata"`
ItemNumber ItemNumber `xml:"item_number"`
ItemNumber ItemNumber `xml:"item_number,omitempty"`
Identifier struct {
Text string `xml:",chardata"`
IDType string `xml:"id_type,attr"`
Expand Down Expand Up @@ -859,11 +857,11 @@ func Read(query Query) (commonmeta.Data, error) {
journal := meta.Journal
containerTitle = journal.JournalMetadata.FullTitle
language = journal.JournalMetadata.Language
doiData = journal.JournalMetadata.DOIData
// doiData = journal.JournalMetadata.DOIData
case "JournalArticle":
journal := meta.Journal
abstract = journal.JournalArticle.Abstract
archiveLocations = journal.JournalArticle.ArchiveLocations
archiveLocations = *journal.JournalArticle.ArchiveLocations
citationList = journal.JournalArticle.CitationList
containerTitle = journal.JournalMetadata.FullTitle
contributors = journal.JournalArticle.Contributors
Expand All @@ -873,15 +871,15 @@ func Read(query Query) (commonmeta.Data, error) {
issue = journal.JournalIssue.Issue
itemNumber = journal.JournalArticle.PublisherItem.ItemNumber
language = journal.JournalMetadata.Language
pages = journal.JournalArticle.Pages
// pages = *journal.JournalArticle.Pages
program = append(program, journal.JournalArticle.Program...)
publicationDate = journal.JournalArticle.PublicationDate
titles = journal.JournalArticle.Titles
volume = journal.JournalIssue.JournalVolume.Volume
case "JournalIssue":
journal := meta.Journal
containerTitle = journal.JournalMetadata.FullTitle
doiData = journal.JournalIssue.DOIData
// doiData = journal.JournalIssue.DOIData
issn = journal.JournalMetadata.ISSN
language = journal.JournalMetadata.Language
case "JournalVolume":
Expand Down
68 changes: 67 additions & 1 deletion crossrefxml/writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -357,8 +357,74 @@ func Convert(data commonmeta.Data) (Body, error) {
DOIData: doiData,
CitationList: citationList,
})
case "Book":
c.Book = append(c.Book, Book{})
case "BookChapter":
c.Book = append(c.Book, Book{})
case "Component":
c.SAComponent = append(c.SAComponent, SAComponent{})
case "Dataset":
c.Database = append(c.Database, Database{})
case "Dissertation":
c.Dissertation = append(c.Dissertation, Dissertation{
Language: data.Language,
PublicationType: "thesis",
//PersonName: personName,
Titles: titles,
// ApprovalDate: ApprovalDate{
// Year: data.Date.Published.Year,
// Month: data.Date.Published.Month,
// Day: data.Date.Published.Day,
// },
DOIData: doiData,
CitationList: citationList,
})
case "JournalArticle":
c.Journal = append(c.Journal, Journal{})
// var issn string
// if len(data.Container.Identifier) > 0 {
// issn = data.Container.Identifier[0].Identifier
// }
c.Journal = append(c.Journal, Journal{
JournalArticle: JournalArticle{
PublicationType: "full_text",
Abstract: abstract,
// ArchiveLocations: ArchiveLocations{}
CitationList: citationList,
Contributors: Contributors{
PersonName: personName},
// Crossmark: Crossmark{
// CustomMetadata: customMetadata,
// },
DOIData: doiData,
// Pages:
// Program: program,
// PublicationDate: data.Date.Published,
// PublisherItem: PublisherItem{
// ItemNumber: itemNumber,
// },
Titles: titles,
},
JournalMetadata: JournalMetadata{
FullTitle: data.Container.Title,
//ISSN: []string{issn},
Language: data.Language,
},
JournalIssue: JournalIssue{
JournalVolume: JournalVolume{
Volume: data.Container.Volume,
},
Issue: data.Container.Issue,
},
// JournalVolume: JournalVolume{
// Volume: data.Container.Volume,
// },
})
case "PeerReview":
c.PeerReview = append(c.PeerReview, PeerReview{})
case "ProceedingsArticle":
c.Conference = append(c.Conference, Conference{})
case "Standard":
c.Standard = append(c.Standard, Standard{})
}

return c, nil
Expand Down

0 comments on commit 5b497b4

Please sign in to comment.