@@ -167,11 +167,19 @@ func getWorksFunding(work *crossrefapi.Works) []*simplified.Funder {
167167 ok bool
168168 )
169169 for _ , funder := range work .Message .Funder {
170- agency := & simplified.FunderIdentifier {
171- Name : funder .Name ,
170+ agency := & simplified.FunderIdentifier {}
171+ if funder .Name != "" {
172+ agency .Name = funder .Name
172173 }
173174 ror = ""
174- if funder .DOI != "" && funder .DoiAssertedBy == "publisher" {
175+ if funder .Identifiers != nil && len (funder .Identifiers ) > 0 {
176+ for _ , identifier := range funder .Identifiers {
177+ if identifier .IdType == "ROR" && identifier .AssertedBy == "publisher" {
178+ ror = strings .TrimPrefix (identifier .Id , "https://ror.org/" )
179+ }
180+ }
181+ }
182+ if ror == "" && funder .DOI != "" && funder .DoiAssertedBy == "publisher" {
175183 parts := strings .SplitN (funder .DOI , "/" , 2 )
176184 if len (parts ) == 2 {
177185 suffix = strings .TrimSpace (parts [1 ])
@@ -189,12 +197,15 @@ func getWorksFunding(work *crossrefapi.Works) []*simplified.Funder {
189197 }
190198 if len (funder .Award ) > 0 {
191199 for _ , award := range funder .Award {
192- funding = append (funding , & simplified.Funder {
193- Funder : agency ,
200+ grant := & simplified.Funder {
194201 Award : & simplified.AwardIdentifier {
195202 Number : award ,
196203 },
197- })
204+ }
205+ if agency .Name != "" || agency .Identifier != "" {
206+ grant .Funder = agency
207+ }
208+ funding = append (funding , grant )
198209 }
199210 } else {
200211 funding = append (funding , & simplified.Funder {
0 commit comments