briard 2.6.5 → 2.6.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15671322232d689001a5c0d663e85ef476e68f947fceb5dfc4364cbfcd1ac813
4
- data.tar.gz: aed48d881d2f47e786d7913feb58389638355c459b7a1812efbd119ef2736aec
3
+ metadata.gz: dc88de35682d2303ecacefc1de0d3a9f17317e88837a46e735ae802d13c27a59
4
+ data.tar.gz: 64cca2161dae986f704a24e2ea260ed1bee6e56209af39817d09a18b6849a2bf
5
5
  SHA512:
6
- metadata.gz: d38a67e567acbfbcaf3cdca79832f2507924908a05026f958768245d52d24a88de24f7b6373616100f603728b2a822309abc66a09670efaf94116f995693d5d4
7
- data.tar.gz: 4b8429cb263e34193292bd25d76dfca5f58dacb3ffbc7c575a9458667b9c02807f2ea30e49466708000accbe2efa1484e52053fac3b457faadb2fdfe407056f2
6
+ metadata.gz: e8a2ad0465b519ed445fca4a7cb0f87403ba6a0ad35d9528aee40715288462910cdb4ad8fc98e63d65d2b371bb85a7b387d14e03e601100f4e9c2e7f54cd642c
7
+ data.tar.gz: 141048f413c0b0d8d9b0fadf5f2c9851963e892fed00d64207e03d1f8d3c07ce565965180e6c9750074cc65df6a29bd59df435b550ddea2b3e34229e5fe4398f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [v2.6.5](https://github.com/front-matter/briard/tree/v2.6.5) (2022-10-04)
4
+
5
+ [Full Changelog](https://github.com/front-matter/briard/compare/v2.6.4...v2.6.5)
6
+
3
7
  ## [v2.6.4](https://github.com/front-matter/briard/tree/v2.6.4) (2022-10-04)
4
8
 
5
9
  [Full Changelog](https://github.com/front-matter/briard/compare/v2.6.3...v2.6.4)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- briard (2.6.5)
4
+ briard (2.6.7)
5
5
  activesupport (>= 4.2.5)
6
6
  base32-url (>= 0.5.0, < 1)
7
7
  benchmark_methods (~> 0.7)
@@ -105,7 +105,7 @@ GEM
105
105
  multi_json (~> 1.15)
106
106
  rack (~> 2.2)
107
107
  rdf (~> 3.2, >= 3.2.9)
108
- json-ld-preloaded (3.2.0)
108
+ json-ld-preloaded (3.2.2)
109
109
  json-ld (~> 3.2)
110
110
  rdf (~> 3.2)
111
111
  jsonlint (0.3.0)
@@ -133,10 +133,10 @@ GEM
133
133
  multi_json (1.15.0)
134
134
  multipart-post (2.2.3)
135
135
  namae (1.1.1)
136
- nokogiri (1.13.8)
136
+ nokogiri (1.13.9)
137
137
  mini_portile2 (~> 2.8.0)
138
138
  racc (~> 1.4)
139
- oj (3.13.21)
139
+ oj (3.13.22)
140
140
  oj_mimic_json (1.0.1)
141
141
  optimist (3.0.1)
142
142
  parallel (1.22.1)
@@ -172,47 +172,47 @@ GEM
172
172
  rdf-turtle (3.2.1)
173
173
  ebnf (~> 2.3)
174
174
  rdf (~> 3.2)
175
- rdf-vocab (3.2.1)
175
+ rdf-vocab (3.2.3)
176
176
  rdf (~> 3.2, >= 3.2.4)
177
177
  rdf-xsd (3.2.1)
178
178
  rdf (~> 3.2)
179
179
  rexml (~> 3.2)
180
180
  regexp_parser (2.6.0)
181
181
  rexml (3.2.5)
182
- rspec (3.11.0)
183
- rspec-core (~> 3.11.0)
184
- rspec-expectations (~> 3.11.0)
185
- rspec-mocks (~> 3.11.0)
186
- rspec-core (3.11.0)
187
- rspec-support (~> 3.11.0)
188
- rspec-expectations (3.11.1)
182
+ rspec (3.12.0)
183
+ rspec-core (~> 3.12.0)
184
+ rspec-expectations (~> 3.12.0)
185
+ rspec-mocks (~> 3.12.0)
186
+ rspec-core (3.12.0)
187
+ rspec-support (~> 3.12.0)
188
+ rspec-expectations (3.12.0)
189
189
  diff-lcs (>= 1.2.0, < 2.0)
190
- rspec-support (~> 3.11.0)
191
- rspec-mocks (3.11.1)
190
+ rspec-support (~> 3.12.0)
191
+ rspec-mocks (3.12.0)
192
192
  diff-lcs (>= 1.2.0, < 2.0)
193
- rspec-support (~> 3.11.0)
194
- rspec-support (3.11.1)
193
+ rspec-support (~> 3.12.0)
194
+ rspec-support (3.12.0)
195
195
  rspec-xsd (0.1.0)
196
196
  nokogiri (~> 1.6)
197
197
  rspec (~> 3)
198
- rubocop (1.36.0)
198
+ rubocop (1.38.0)
199
199
  json (~> 2.3)
200
200
  parallel (~> 1.10)
201
201
  parser (>= 3.1.2.1)
202
202
  rainbow (>= 2.2.2, < 4.0)
203
203
  regexp_parser (>= 1.8, < 3.0)
204
204
  rexml (>= 3.2.5, < 4.0)
205
- rubocop-ast (>= 1.20.1, < 2.0)
205
+ rubocop-ast (>= 1.23.0, < 2.0)
206
206
  ruby-progressbar (~> 1.7)
207
207
  unicode-display_width (>= 1.4.0, < 3.0)
208
- rubocop-ast (1.21.0)
208
+ rubocop-ast (1.23.0)
209
209
  parser (>= 3.1.1.0)
210
210
  rubocop-performance (1.15.0)
211
211
  rubocop (>= 1.7.0, < 2.0)
212
212
  rubocop-ast (>= 0.4.0)
213
213
  rubocop-rake (0.6.0)
214
214
  rubocop (~> 1.0)
215
- rubocop-rspec (2.13.2)
215
+ rubocop-rspec (2.15.0)
216
216
  rubocop (~> 1.33)
217
217
  ruby-progressbar (1.11.0)
218
218
  scanf (1.0.0)
@@ -222,10 +222,10 @@ GEM
222
222
  simplecov_json_formatter (~> 0.1)
223
223
  simplecov-html (0.12.3)
224
224
  simplecov_json_formatter (0.1.4)
225
- sxp (1.2.2)
226
- matrix
225
+ sxp (1.2.3)
226
+ matrix (~> 0.4)
227
227
  rdf (~> 3.2)
228
- temple (0.8.2)
228
+ temple (0.9.1)
229
229
  thor (1.2.1)
230
230
  tilt (2.0.11)
231
231
  tzinfo (2.0.5)
@@ -48,7 +48,7 @@ module Briard
48
48
  def insert_journal(xml)
49
49
  xml.journal do
50
50
  if language.present?
51
- xml.journal_metadata('language' => language) do
51
+ xml.journal_metadata('language' => language[0..1]) do
52
52
  xml.full_title(container['title'])
53
53
  end
54
54
  else
@@ -71,7 +71,7 @@ module Briard
71
71
  end
72
72
 
73
73
  def insert_posted_content(xml)
74
- posted_content = { 'type' => 'other', 'language' => language }.compact
74
+ posted_content = { 'type' => 'other', 'language' => language ? language[0..1] : nil }.compact
75
75
 
76
76
  xml.posted_content(posted_content) do
77
77
  insert_group_title(xml)
@@ -165,7 +165,7 @@ module Briard
165
165
 
166
166
  def insert_crossref_alternate_identifiers(xml)
167
167
  alternate_identifier = Array.wrap(identifiers).reject do |r|
168
- r['identifierType'] == 'DOI'
168
+ %w[DOI, URL].include?(r['identifierType'])
169
169
  end.first
170
170
  return xml if alternate_identifier.blank?
171
171
 
@@ -33,7 +33,7 @@ module Briard
33
33
  if response.body['data'].is_a?(Hash)
34
34
  string = response.body.dig('data', 'html', 'head', 'script', 1, '__content__')
35
35
  else
36
- doc = Nokogiri::XML(response.body.fetch('data', nil), nil, 'UTF-8')
36
+ doc = Nokogiri::HTML(response.body.fetch('data', nil), nil, 'UTF-8')
37
37
 
38
38
  # workaround for xhtml documents
39
39
  nodeset = doc.at("script[type='application/ld+json']")
@@ -50,7 +50,7 @@ module Briard
50
50
  # workaround for html language attribute if no language is set via schema.org
51
51
  lang = doc.at('html')['lang']
52
52
  hsh['inLanguage'] = lang if hsh['inLanguage'].blank?
53
-
53
+
54
54
  # workaround if issn not included with schema.org
55
55
  name = doc.at("meta[property='og:site_name']")
56
56
  issn = doc.at("meta[name='citation_issn']")
@@ -186,6 +186,8 @@ module Briard
186
186
  language = case meta.fetch('inLanguage', nil)
187
187
  when String
188
188
  meta.fetch('inLanguage')
189
+ when Array
190
+ meta.fetch('inLanguage').first
189
191
  when Object
190
192
  meta.dig('inLanguage', 'alternateName') || meta.dig('inLanguage', 'name')
191
193
  end
data/lib/briard/utils.rb CHANGED
@@ -939,6 +939,9 @@ module Briard
939
939
  scheme_uri = nil
940
940
  end
941
941
 
942
+ # alternatively find the nameIdentifier in the identifer attribute
943
+ c["@id"] = c["identifier"] if c["identifier"].present? && c["@id"].blank?
944
+
942
945
  # alternatively find the nameIdentifier in the sameAs attribute
943
946
  c["@id"] = c["sameAs"].first if Array(c["sameAs"]).find { |item| URI(item).host == "orcid.org" }
944
947
 
@@ -1167,6 +1170,8 @@ module Briard
1167
1170
  # strip milliseconds if there is a time, as it interferes with edtc parsing
1168
1171
  # keep dates unchanged
1169
1172
  def strip_milliseconds(iso8601_time)
1173
+ return iso8601_time.split(" ").first if iso8601_time.to_s.include? " "
1174
+
1170
1175
  return iso8601_time.split(".").first + "Z" if iso8601_time.to_s.include? "."
1171
1176
 
1172
1177
  return iso8601_time
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Briard
4
- VERSION = '2.6.5'
4
+ VERSION = '2.6.7'
5
5
  end
@@ -0,0 +1,93 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://donnywinston.com/posts/implementing-the-fair-principles-through-fair-enabling-artifacts-and-services
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.9.8; mailto:info@front-matter.io)
12
+ Accept:
13
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
14
+ Accept-Encoding:
15
+ - gzip,deflate
16
+ response:
17
+ status:
18
+ code: 301
19
+ message: Moved Permanently
20
+ headers:
21
+ Age:
22
+ - '348'
23
+ Cache-Control:
24
+ - public, max-age=0, must-revalidate
25
+ Content-Length:
26
+ - '4510'
27
+ Content-Type:
28
+ - text/html; charset=UTF-8
29
+ Date:
30
+ - Thu, 03 Nov 2022 18:32:01 GMT
31
+ Etag:
32
+ - '"09ec50922b882e8846b101682371bfa4-ssl-df"'
33
+ Location:
34
+ - "/posts/implementing-the-fair-principles-through-fair-enabling-artifacts-and-services/"
35
+ Server:
36
+ - Netlify
37
+ Strict-Transport-Security:
38
+ - max-age=31536000
39
+ X-Nf-Request-Id:
40
+ - 01GGZCHYW6KPN4B5Z8S0MQR47M
41
+ body:
42
+ encoding: ASCII-8BIT
43
+ string: !binary |-
44
+ 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
45
+ http_version:
46
+ recorded_at: Thu, 03 Nov 2022 18:37:49 GMT
47
+ - request:
48
+ method: get
49
+ uri: https://donnywinston.com/posts/implementing-the-fair-principles-through-fair-enabling-artifacts-and-services/
50
+ body:
51
+ encoding: US-ASCII
52
+ string: ''
53
+ headers:
54
+ User-Agent:
55
+ - Mozilla/5.0 (compatible; Maremma/4.9.8; mailto:info@front-matter.io)
56
+ Accept:
57
+ - text/html,application/json,application/xml;q=0.9, text/plain;q=0.8,image/png,*/*;q=0.5
58
+ Accept-Encoding:
59
+ - gzip,deflate
60
+ response:
61
+ status:
62
+ code: 200
63
+ message: OK
64
+ headers:
65
+ Age:
66
+ - '348'
67
+ Cache-Control:
68
+ - public, max-age=0, must-revalidate
69
+ Content-Encoding:
70
+ - gzip
71
+ Content-Length:
72
+ - '4510'
73
+ Content-Type:
74
+ - text/html; charset=UTF-8
75
+ Date:
76
+ - Thu, 03 Nov 2022 18:32:01 GMT
77
+ Etag:
78
+ - '"09ec50922b882e8846b101682371bfa4-ssl-df"'
79
+ Server:
80
+ - Netlify
81
+ Strict-Transport-Security:
82
+ - max-age=31536000
83
+ Vary:
84
+ - Accept-Encoding
85
+ X-Nf-Request-Id:
86
+ - 01GGZCHYZY06V7ZHB2E6VXPK59
87
+ body:
88
+ encoding: ASCII-8BIT
89
+ string: !binary |-
90
+ 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
91
+ http_version:
92
+ recorded_at: Thu, 03 Nov 2022 18:37:49 GMT
93
+ recorded_with: VCR 3.0.3
@@ -80,7 +80,7 @@ describe Briard::Metadata, vcr: true do
80
80
  'resourceTypeGeneral' => 'Preprint', 'ris' => 'GEN', 'schemaOrg' => 'Article')
81
81
  expect(subject.creators).to eq([{ 'affiliation' => [],
82
82
  'familyName' => 'Fenner', 'givenName' => 'Martin', 'name' => 'Fenner, Martin', 'nameIdentifiers' => [{ 'nameIdentifier' => 'https://orcid.org/0000-0003-1419-2405', 'nameIdentifierScheme' => 'ORCID', 'schemeUri' => 'https://orcid.org' }], 'nameType' => 'Personal' }])
83
- expect(subject.titles).to eq([{ 'title' => "A step forward for software citation: GitHub's enhanced software citation support" }])
83
+ expect(subject.titles).to eq([{ 'title' => "A step forward for software citation: GitHub&#x27;s enhanced software citation support" }])
84
84
  expect(subject.descriptions.first['description']).to start_with('On August 19, GitHub announced software citation')
85
85
  expect(subject.subjects).to eq([{ 'subject' => 'news' }])
86
86
  expect(subject.dates).to eq([{ 'date' => '2021-08-24T16:57:24Z', 'dateType' => 'Issued' },
@@ -119,5 +119,38 @@ describe Briard::Metadata, vcr: true do
119
119
  expect(crossref.dig('titles',
120
120
  'title')).to eq('Editorial by more than 200 health journals: Call for emergency action to limit global temperature increases, restore biodiversity, and protect health')
121
121
  end
122
+
123
+ it 'schema.org from another science blog' do
124
+ input = 'https://donnywinston.com/posts/implementing-the-fair-principles-through-fair-enabling-artifacts-and-services/'
125
+ subject = described_class.new(input: input, from: 'schema_org')
126
+ expect(subject.valid?).to be true
127
+ expect(subject.doi).to eq('10.57099/11h5yt3819')
128
+ expect(subject.url).to eq('https://donnywinston.com/posts/implementing-the-fair-principles-through-fair-enabling-artifacts-and-services')
129
+ expect(subject.types['schemaOrg']).to eq('BlogPosting')
130
+ expect(subject.types['resourceTypeGeneral']).to eq('Preprint')
131
+ expect(subject.types['ris']).to eq('GEN')
132
+ expect(subject.types['citeproc']).to eq('post-weblog')
133
+ expect(subject.titles).to eq([{"title"=>"Implementing the FAIR Principles Through FAIR-Enabling Artifacts and Services"}])
134
+ expect(subject.creators).to eq([{"affiliation"=>[],
135
+ "familyName"=>"Winston",
136
+ "givenName"=>"Donny",
137
+ "name"=>"Winston, Donny",
138
+ "nameIdentifiers"=>
139
+ [{"nameIdentifier"=>"https://orcid.org/0000-0002-8424-0604",
140
+ "nameIdentifierScheme"=>"ORCID",
141
+ "schemeUri"=>"https://orcid.org"}],
142
+ "nameType"=>"Personal"}])
143
+ expect(subject.subjects).to eq([])
144
+ expect(subject.container).to eq('type' => 'Blog')
145
+ expect(subject.language).to eq('en-US')
146
+ expect(subject.dates).to eq([{"date"=>"2022-10-21", "dateType"=>"Issued"},
147
+ {"date"=>"2022-10-21", "dateType"=>"Created"},
148
+ {"date"=>"2022-10-21", "dateType"=>"Updated"}])
149
+ expect(subject.rights_list).to eq([{
150
+ 'rights' => 'Creative Commons Attribution 4.0 International', 'rightsUri' => 'https://creativecommons.org/licenses/by/4.0/legalcode', 'rightsIdentifier' => 'cc-by-4.0', 'rightsIdentifierScheme' => 'SPDX', 'schemeUri' => 'https://spdx.org/licenses/'
151
+ }])
152
+ crossref = Maremma.from_xml(subject.crossref).dig('doi_batch', 'body', 'posted_content')
153
+ expect(crossref.dig('titles', 'title')).to eq('Implementing the FAIR Principles Through FAIR-Enabling Artifacts and Services')
154
+ end
122
155
  end
123
156
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: briard
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.5
4
+ version: 2.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-04 00:00:00.000000000 Z
11
+ date: 2022-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -1373,6 +1373,7 @@ files:
1373
1373
  - spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/another_schema_org_from_front-matter.yml
1374
1374
  - spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/journal_article_from_datacite.yml
1375
1375
  - spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/posted_content.yml
1376
+ - spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_another_science_blog.yml
1376
1377
  - spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_front_matter.yml
1377
1378
  - spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_crossref/schema_org_from_zenodo.yml
1378
1379
  - spec/fixtures/vcr_cassettes/Briard_Metadata/write_metadata_as_csv/climate_data.yml