relaton-doi 2.1.4 → 2.2.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CLAUDE.md +0 -16
- data/Gemfile +8 -0
- data/lib/relaton/doi/parser.rb +12 -31
- data/lib/relaton/doi/version.rb +1 -1
- data/relaton-doi.gemspec +7 -10
- metadata +33 -20
- data/.rubocop.yml +0 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f3a69874f7f4df76b5cc2faa78b5da5b4e79a77bbb034397c16261ff16f0590c
|
|
4
|
+
data.tar.gz: 28a5b689f98eceaa74e01aa484c7b68ec5f0e168c25eacd6fa4eade2901ae7df
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 954396ddd54eccb508bdd88f2bc80f0518172845ffd56537072edc14a8afc8e7fcf5d33281414a317b0166c0f9a04598b5082baf90677cc78b7614d33485df92
|
|
7
|
+
data.tar.gz: 29a36d33e70f319be13af8897bac3c9739e1d546ac67ed6522fb73cb617285989493e2b7e58a207d79ee53bacd652e2e983435ff5be21df5b5593a2fd13dd3ee
|
data/CLAUDE.md
CHANGED
|
@@ -43,19 +43,3 @@ Key classes in `lib/relaton/doi/`:
|
|
|
43
43
|
- `TYPES` — maps 23 Crossref document types to Relaton types (e.g., `"book-chapter"` → `"inbook"`)
|
|
44
44
|
- `REALATION_TYPES` — maps 37 Crossref relation types to Relaton relation types
|
|
45
45
|
- `COUNTRIES` — `%w[USA]`, used by `parse_place` to distinguish country vs region
|
|
46
|
-
|
|
47
|
-
## Crossref Markup Handling
|
|
48
|
-
|
|
49
|
-
`Parser#normalize_markup` decodes the HTML entities of raw Crossref content. Crossref
|
|
50
|
-
sometimes returns the JATS markup entity-encoded, and the relaton-bib sanitizer detects a
|
|
51
|
-
tag by a real `<`, so it would treat the encoded form as plain text.
|
|
52
|
-
|
|
53
|
-
`Bib::Title` and `Bib::Abstract` are `LocalizedMarkedUpString` subclasses, so their
|
|
54
|
-
`content=` setter runs `Relaton::Bib::Sanitizer` on assignment. Since relaton-bib 2.1.9 that
|
|
55
|
-
sanitizer also removes the `jats:` and `xlink:` namespace prefixes. Relaton never declares
|
|
56
|
-
those prefixes, so leaving them in place made the output fail every namespace-aware parser
|
|
57
|
-
downstream, including relaton-render (metanorma-pdfa#99). relaton-doi carried its own prefix
|
|
58
|
-
stripping until 2.1.9 shipped that fix, which is why the gemspec pins `~> 2.1.9`.
|
|
59
|
-
|
|
60
|
-
The sanitizer removes only the prefixes it could not resolve. A namespace that the content
|
|
61
|
-
declares itself survives, such as the MathML `xmlns` inside a `<stem>`.
|
data/Gemfile
CHANGED
|
@@ -5,6 +5,14 @@ source "https://rubygems.org"
|
|
|
5
5
|
# Specify your gem's dependencies in relaton-doi.gemspec
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
+
# Use local monorepo sibling gems where available.
|
|
9
|
+
Dir["../*/"].each do |dir|
|
|
10
|
+
name = File.basename(dir)
|
|
11
|
+
next if name == File.basename(__dir__)
|
|
12
|
+
next unless File.exist?(File.join(dir, "#{name}.gemspec"))
|
|
13
|
+
gem name, path: dir
|
|
14
|
+
end
|
|
15
|
+
|
|
8
16
|
|
|
9
17
|
gem "debug"
|
|
10
18
|
gem "equivalent-xml", "~> 0.6"
|
data/lib/relaton/doi/parser.rb
CHANGED
|
@@ -209,29 +209,10 @@ module Relaton
|
|
|
209
209
|
# @return [Bib::Title] The title.
|
|
210
210
|
#
|
|
211
211
|
def create_title(title, type = "main")
|
|
212
|
-
cnt = str_cleanup
|
|
212
|
+
cnt = str_cleanup CGI.unescapeHTML(title)
|
|
213
213
|
Bib::Title.new type: type, content: cnt, script: "Latn"
|
|
214
214
|
end
|
|
215
215
|
|
|
216
|
-
#
|
|
217
|
-
# Decode the HTML entities of raw Crossref content.
|
|
218
|
-
#
|
|
219
|
-
# Crossref sometimes returns the JATS markup as HTML entities. The
|
|
220
|
-
# relaton-bib sanitizer detects a tag by a real `<`, so it treats the
|
|
221
|
-
# encoded form as plain text and leaves it alone. Decode the entities
|
|
222
|
-
# here, and the sanitizer maps the markup to the basicdoc set.
|
|
223
|
-
#
|
|
224
|
-
# The sanitizer removes the `jats:` and `xlink:` namespace prefixes
|
|
225
|
-
# itself since relaton-bib 2.1.9, so this method no longer does.
|
|
226
|
-
#
|
|
227
|
-
# @param [String] str The raw Crossref content.
|
|
228
|
-
#
|
|
229
|
-
# @return [String] The content without HTML entities.
|
|
230
|
-
#
|
|
231
|
-
def normalize_markup(str)
|
|
232
|
-
CGI.unescapeHTML(str)
|
|
233
|
-
end
|
|
234
|
-
|
|
235
216
|
#
|
|
236
217
|
# Parse a docidentifier from the source hash.
|
|
237
218
|
#
|
|
@@ -322,10 +303,9 @@ module Relaton
|
|
|
322
303
|
def parse_abstract
|
|
323
304
|
return [] unless @src["abstract"]
|
|
324
305
|
|
|
306
|
+
content = @src["abstract"]
|
|
325
307
|
abstract = Bib::Abstract.new(
|
|
326
|
-
content:
|
|
327
|
-
language: "en",
|
|
328
|
-
script: "Latn",
|
|
308
|
+
content: content, language: "en", script: "Latn",
|
|
329
309
|
)
|
|
330
310
|
[abstract]
|
|
331
311
|
end
|
|
@@ -468,10 +448,8 @@ module Relaton
|
|
|
468
448
|
# @return [Bib::Organization] The organization.
|
|
469
449
|
#
|
|
470
450
|
def create_org(name, abbreviation = nil)
|
|
471
|
-
n = [Bib::TypedLocalizedString.new(content:
|
|
472
|
-
a =
|
|
473
|
-
Bib::LocalizedString.new(content: CGI.unescapeHTML(abbreviation))
|
|
474
|
-
end
|
|
451
|
+
n = [Bib::TypedLocalizedString.new(content: name)]
|
|
452
|
+
a = abbreviation ? Bib::LocalizedString.new(content: abbreviation) : nil
|
|
475
453
|
Bib::Organization.new name: n, abbreviation: a
|
|
476
454
|
end
|
|
477
455
|
|
|
@@ -484,7 +462,11 @@ module Relaton
|
|
|
484
462
|
return [] unless @src["standards-body"]
|
|
485
463
|
|
|
486
464
|
name, acronym = @src["standards-body"].values_at("name", "acronym")
|
|
487
|
-
|
|
465
|
+
org = create_org(
|
|
466
|
+
CGI.unescapeHTML(name),
|
|
467
|
+
acronym && CGI.unescapeHTML(acronym),
|
|
468
|
+
)
|
|
469
|
+
[contributor(org, "authorizer")]
|
|
488
470
|
end
|
|
489
471
|
|
|
490
472
|
#
|
|
@@ -746,8 +728,7 @@ module Relaton
|
|
|
746
728
|
|
|
747
729
|
@src["container-title"].map do |ct|
|
|
748
730
|
contrib = create_authors_editors false, "editor"
|
|
749
|
-
|
|
750
|
-
bib = Bib::ItemBase.new(title: [title], contributor: contrib)
|
|
731
|
+
bib = Bib::ItemBase.new(title: [Bib::Title.new(content: ct)], contributor: contrib)
|
|
751
732
|
Bib::Relation.new(type: "includedIn", bibitem: bib)
|
|
752
733
|
end
|
|
753
734
|
end
|
|
@@ -796,7 +777,7 @@ module Relaton
|
|
|
796
777
|
else []
|
|
797
778
|
end
|
|
798
779
|
con_ttl.map do |ct|
|
|
799
|
-
title = Bib::Title.new content:
|
|
780
|
+
title = Bib::Title.new content: ct
|
|
800
781
|
Bib::Series.new title: [title], abbreviation: abbrev
|
|
801
782
|
end
|
|
802
783
|
end
|
data/lib/relaton/doi/version.rb
CHANGED
data/relaton-doi.gemspec
CHANGED
|
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
|
|
|
14
14
|
"using DOI through Crossrefand provide Relaton object."
|
|
15
15
|
spec.homepage = "https://github.com/relaton/relaton-doi"
|
|
16
16
|
spec.license = "BSD-2-Clause"
|
|
17
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 3.
|
|
17
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 3.3.0")
|
|
18
18
|
|
|
19
19
|
# spec.metadata["allowed_push_host"] = "TODO: Set to 'https://mygemserver.com'"
|
|
20
20
|
|
|
@@ -31,16 +31,13 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
32
32
|
spec.require_paths = ["lib"]
|
|
33
33
|
|
|
34
|
-
# Uncomment to register a new dependency of your gem
|
|
35
|
-
# spec.add_dependency "example-gem", "~> 1.0"
|
|
36
|
-
|
|
37
|
-
spec.add_dependency "relaton-bib", "~> 2.1.9"
|
|
38
|
-
spec.add_dependency "relaton-bipm", "~> 2.1.0"
|
|
39
|
-
spec.add_dependency "relaton-ieee", "~> 2.1.0"
|
|
40
|
-
spec.add_dependency "relaton-ietf", "~> 2.1.0"
|
|
41
|
-
spec.add_dependency "relaton-nist", "~> 2.1.0"
|
|
42
|
-
# spec.add_dependency "relaton-w3c", "~> 1.10.0"
|
|
43
34
|
spec.add_dependency "mechanize", "~> 2.0"
|
|
35
|
+
spec.add_dependency "relaton-bib", "~> 2.2.0.pre.alpha.1"
|
|
36
|
+
spec.add_dependency "relaton-bipm", "~> 2.2.0.pre.alpha.1"
|
|
37
|
+
spec.add_dependency "relaton-core", "~> 2.2.0.pre.alpha.1"
|
|
38
|
+
spec.add_dependency "relaton-ieee", "~> 2.2.0.pre.alpha.1"
|
|
39
|
+
spec.add_dependency "relaton-ietf", "~> 2.2.0.pre.alpha.1"
|
|
40
|
+
spec.add_dependency "relaton-nist", "~> 2.2.0.pre.alpha.1"
|
|
44
41
|
|
|
45
42
|
# For more information and examples about making a new gem, checkout our
|
|
46
43
|
# guide at: https://bundler.io/guides/creating_gem.html
|
metadata
CHANGED
|
@@ -1,99 +1,113 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: relaton-doi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1
|
|
4
|
+
version: 2.2.0.pre.alpha.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-06-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: mechanize
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '2.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '2.0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: relaton-bib
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
16
30
|
requirements:
|
|
17
31
|
- - "~>"
|
|
18
32
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 2.1
|
|
33
|
+
version: 2.2.0.pre.alpha.1
|
|
20
34
|
type: :runtime
|
|
21
35
|
prerelease: false
|
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
37
|
requirements:
|
|
24
38
|
- - "~>"
|
|
25
39
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 2.1
|
|
40
|
+
version: 2.2.0.pre.alpha.1
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: relaton-bipm
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
30
44
|
requirements:
|
|
31
45
|
- - "~>"
|
|
32
46
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 2.
|
|
47
|
+
version: 2.2.0.pre.alpha.1
|
|
34
48
|
type: :runtime
|
|
35
49
|
prerelease: false
|
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
51
|
requirements:
|
|
38
52
|
- - "~>"
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 2.
|
|
54
|
+
version: 2.2.0.pre.alpha.1
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: relaton-
|
|
56
|
+
name: relaton-core
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
59
|
- - "~>"
|
|
46
60
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 2.
|
|
61
|
+
version: 2.2.0.pre.alpha.1
|
|
48
62
|
type: :runtime
|
|
49
63
|
prerelease: false
|
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
65
|
requirements:
|
|
52
66
|
- - "~>"
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 2.
|
|
68
|
+
version: 2.2.0.pre.alpha.1
|
|
55
69
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: relaton-
|
|
70
|
+
name: relaton-ieee
|
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
|
58
72
|
requirements:
|
|
59
73
|
- - "~>"
|
|
60
74
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 2.
|
|
75
|
+
version: 2.2.0.pre.alpha.1
|
|
62
76
|
type: :runtime
|
|
63
77
|
prerelease: false
|
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
79
|
requirements:
|
|
66
80
|
- - "~>"
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 2.
|
|
82
|
+
version: 2.2.0.pre.alpha.1
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: relaton-
|
|
84
|
+
name: relaton-ietf
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
87
|
- - "~>"
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 2.
|
|
89
|
+
version: 2.2.0.pre.alpha.1
|
|
76
90
|
type: :runtime
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
94
|
- - "~>"
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 2.
|
|
96
|
+
version: 2.2.0.pre.alpha.1
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
98
|
+
name: relaton-nist
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
86
100
|
requirements:
|
|
87
101
|
- - "~>"
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
103
|
+
version: 2.2.0.pre.alpha.1
|
|
90
104
|
type: :runtime
|
|
91
105
|
prerelease: false
|
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
107
|
requirements:
|
|
94
108
|
- - "~>"
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
|
-
version:
|
|
110
|
+
version: 2.2.0.pre.alpha.1
|
|
97
111
|
description: 'RelatonDOI: retrieve Standards for bibliographic using DOI through Crossrefand
|
|
98
112
|
provide Relaton object.'
|
|
99
113
|
email:
|
|
@@ -106,7 +120,6 @@ files:
|
|
|
106
120
|
- ".github/workflows/release.yml"
|
|
107
121
|
- ".gitignore"
|
|
108
122
|
- ".rspec"
|
|
109
|
-
- ".rubocop.yml"
|
|
110
123
|
- CLAUDE.md
|
|
111
124
|
- Gemfile
|
|
112
125
|
- LICENSE.txt
|
|
@@ -135,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
135
148
|
requirements:
|
|
136
149
|
- - ">="
|
|
137
150
|
- !ruby/object:Gem::Version
|
|
138
|
-
version: 3.
|
|
151
|
+
version: 3.3.0
|
|
139
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
153
|
requirements:
|
|
141
154
|
- - ">="
|
data/.rubocop.yml
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# This project follows the Ribose OSS style guide.
|
|
2
|
-
# https://github.com/riboseinc/oss-guides
|
|
3
|
-
# All project-specific additions and overrides should be specified in this file.
|
|
4
|
-
|
|
5
|
-
require: rubocop-rails
|
|
6
|
-
|
|
7
|
-
inherit_from:
|
|
8
|
-
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
|
9
|
-
AllCops:
|
|
10
|
-
TargetRubyVersion: 3.2
|
|
11
|
-
Rails:
|
|
12
|
-
Enabled: false
|