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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f985958ac631dbcb90d8d435d4cd8d771ef1eb661096bd62d0aa05ea0739291
4
- data.tar.gz: f0e7a7392db7ff8e082682c92afa15eabdad7230d35cb96335068f5ddaebd14f
3
+ metadata.gz: f3a69874f7f4df76b5cc2faa78b5da5b4e79a77bbb034397c16261ff16f0590c
4
+ data.tar.gz: 28a5b689f98eceaa74e01aa484c7b68ec5f0e168c25eacd6fa4eade2901ae7df
5
5
  SHA512:
6
- metadata.gz: e1474c8687f0772f77aa5a29cd5394722c12700a041bdb70cfab7fd2f84cb36d16f4cee676de366d262a2344075197b2fd6b18ea615c373495fc83f94756591d
7
- data.tar.gz: fd1d94c456aed217671bd968d60815f5e06ed5d87bad05efd950f04fe43e6e1a46cbb1c8f8c28f8a57f90520894c384de29a29da7fd1a051533342ea5eac6fb8
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"
@@ -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 normalize_markup(title)
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: normalize_markup(@src["abstract"]),
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: CGI.unescapeHTML(name))]
472
- a = if abbreviation
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
- [contributor(create_org(name, acronym), "authorizer")]
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
- title = Bib::Title.new content: normalize_markup(ct)
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: normalize_markup(ct)
780
+ title = Bib::Title.new content: ct
800
781
  Bib::Series.new title: [title], abbreviation: abbrev
801
782
  end
802
783
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Relaton
4
4
  module Doi
5
- VERSION = "2.1.4"
5
+ VERSION = "2.2.0.pre.alpha.1"
6
6
  end
7
7
  end
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.2.0")
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
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-09-06 00:00:00.000000000 Z
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.9
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.9
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.1.0
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.1.0
54
+ version: 2.2.0.pre.alpha.1
41
55
  - !ruby/object:Gem::Dependency
42
- name: relaton-ieee
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.1.0
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.1.0
68
+ version: 2.2.0.pre.alpha.1
55
69
  - !ruby/object:Gem::Dependency
56
- name: relaton-ietf
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.1.0
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.1.0
82
+ version: 2.2.0.pre.alpha.1
69
83
  - !ruby/object:Gem::Dependency
70
- name: relaton-nist
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.1.0
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.1.0
96
+ version: 2.2.0.pre.alpha.1
83
97
  - !ruby/object:Gem::Dependency
84
- name: mechanize
98
+ name: relaton-nist
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '2.0'
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: '2.0'
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.2.0
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