mods_display 1.3.1 → 1.3.2
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/.rubocop.yml +1 -28
- data/.rubocop_todo.yml +45 -42
- data/Gemfile +1 -1
- data/README.md +0 -2
- data/Rakefile +1 -5
- data/app/helpers/mods_display/record_helper.rb +14 -36
- data/lib/mods_display/country_codes.rb +3 -380
- data/lib/mods_display/fields/collection.rb +2 -2
- data/lib/mods_display/fields/identifier.rb +1 -3
- data/lib/mods_display/fields/location.rb +2 -1
- data/lib/mods_display/fields/name.rb +19 -4
- data/lib/mods_display/fields/note.rb +3 -4
- data/lib/mods_display/relator_codes.rb +2 -2
- data/lib/mods_display/version.rb +1 -1
- data/mods_display.gemspec +2 -1
- metadata +23 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a10b1a255b452e15abe4bb8efefa442a09e17722689eeada14c2e5b210f80f8
|
4
|
+
data.tar.gz: 6cb1fb4fa43419a3820e303cec2da27c9c03d2bd3d4e2db32d3d4189071207e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 221cf2e30ffc91d3c11afdc2c200552577d7bd2b7975b022bf897668b1342edd7d9a3d21c0cc2724d48ad30b0d1a0be2af46cbab15cc398072aeb5761387d80c
|
7
|
+
data.tar.gz: 6f945ced7697570d76661f72e6a16d81fd03a32225f669e133c4e8428f03c1d816b282a2c40c9217d23af23a5f5ff6f49fe807917fbbfbafc34ac1f414f911d6
|
data/.rubocop.yml
CHANGED
@@ -12,11 +12,6 @@ AllCops:
|
|
12
12
|
TargetRubyVersion: 2.7
|
13
13
|
NewCops: enable
|
14
14
|
|
15
|
-
# Warn only for long lines
|
16
|
-
Layout/LineLength:
|
17
|
-
Max: 120
|
18
|
-
Severity: warning
|
19
|
-
|
20
15
|
# Use single-quoted strings where possible
|
21
16
|
Style/StringLiterals:
|
22
17
|
Enabled: true
|
@@ -34,26 +29,4 @@ RSpec/MultipleExpectations:
|
|
34
29
|
Enabled: false
|
35
30
|
|
36
31
|
RSpec/ExampleLength:
|
37
|
-
Enabled: false
|
38
|
-
|
39
|
-
# Warn only for complexity-related metrics
|
40
|
-
Metrics/MethodLength:
|
41
|
-
Severity: warning
|
42
|
-
|
43
|
-
Metrics/ClassLength:
|
44
|
-
Severity: warning
|
45
|
-
|
46
|
-
Metrics/BlockLength:
|
47
|
-
Severity: warning
|
48
|
-
|
49
|
-
Metrics/ModuleLength:
|
50
|
-
Severity: warning
|
51
|
-
|
52
|
-
Metrics/PerceivedComplexity:
|
53
|
-
Severity: warning
|
54
|
-
|
55
|
-
Metrics/CyclomaticComplexity:
|
56
|
-
Severity: warning
|
57
|
-
|
58
|
-
Metrics/AbcSize:
|
59
|
-
Severity: warning
|
32
|
+
Enabled: false
|
data/.rubocop_todo.yml
CHANGED
@@ -1,17 +1,15 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2023-10-25 22:18:52 UTC using RuboCop version 1.57.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
Layout/LineLength:
|
14
|
-
Max: 255
|
9
|
+
# Offense count: 1
|
10
|
+
Capybara/SpecificMatcher:
|
11
|
+
Exclude:
|
12
|
+
- 'spec/helpers/record_helper_spec.rb'
|
15
13
|
|
16
14
|
# Offense count: 2
|
17
15
|
# Configuration parameters: IgnoreLiteralBranches, IgnoreConstantBranches.
|
@@ -24,43 +22,39 @@ Lint/ShadowingOuterLocalVariable:
|
|
24
22
|
Exclude:
|
25
23
|
- 'spec/helpers/record_helper_spec.rb'
|
26
24
|
|
27
|
-
# Offense count:
|
28
|
-
# Configuration parameters:
|
25
|
+
# Offense count: 16
|
26
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes.
|
29
27
|
Metrics/AbcSize:
|
30
|
-
Max:
|
31
|
-
|
32
|
-
# Offense count: 37
|
33
|
-
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
34
|
-
# IgnoredMethods: refine
|
35
|
-
Metrics/BlockLength:
|
36
|
-
Max: 257
|
28
|
+
Max: 44
|
37
29
|
|
38
30
|
# Offense count: 3
|
39
31
|
# Configuration parameters: CountComments, CountAsOne.
|
40
32
|
Metrics/ClassLength:
|
41
|
-
Max:
|
33
|
+
Max: 146
|
34
|
+
|
35
|
+
# Offense count: 1
|
36
|
+
# Configuration parameters: LengthThreshold.
|
37
|
+
Metrics/CollectionLiteralLength:
|
38
|
+
Exclude:
|
39
|
+
- 'lib/mods_display/relator_codes.rb'
|
42
40
|
|
43
|
-
# Offense count:
|
44
|
-
# Configuration parameters:
|
41
|
+
# Offense count: 10
|
42
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
45
43
|
Metrics/CyclomaticComplexity:
|
46
44
|
Max: 18
|
47
45
|
|
48
|
-
# Offense count:
|
49
|
-
# Configuration parameters: CountComments, CountAsOne,
|
46
|
+
# Offense count: 16
|
47
|
+
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
|
50
48
|
Metrics/MethodLength:
|
51
|
-
Max:
|
52
|
-
|
53
|
-
# Offense count: 2
|
54
|
-
# Configuration parameters: CountComments, CountAsOne.
|
55
|
-
Metrics/ModuleLength:
|
56
|
-
Max: 380
|
49
|
+
Max: 29
|
57
50
|
|
58
51
|
# Offense count: 8
|
59
|
-
# Configuration parameters:
|
52
|
+
# Configuration parameters: AllowedMethods, AllowedPatterns.
|
60
53
|
Metrics/PerceivedComplexity:
|
61
54
|
Max: 20
|
62
55
|
|
63
56
|
# Offense count: 1
|
57
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
64
58
|
# Configuration parameters: EnforcedStyleForLeadingUnderscores.
|
65
59
|
# SupportedStylesForLeadingUnderscores: disallowed, required, optional
|
66
60
|
Naming/MemoizedInstanceVariableName:
|
@@ -68,7 +62,7 @@ Naming/MemoizedInstanceVariableName:
|
|
68
62
|
- 'lib/mods_display/fields/geo.rb'
|
69
63
|
|
70
64
|
# Offense count: 7
|
71
|
-
# Configuration parameters: EnforcedStyle,
|
65
|
+
# Configuration parameters: EnforcedStyle, AllowedPatterns.
|
72
66
|
# SupportedStyles: snake_case, camelCase
|
73
67
|
Naming/MethodName:
|
74
68
|
Exclude:
|
@@ -80,12 +74,12 @@ Naming/MethodName:
|
|
80
74
|
- 'lib/mods_display/fields/resource_type.rb'
|
81
75
|
- 'lib/mods_display/fields/subject.rb'
|
82
76
|
|
83
|
-
# Offense count:
|
77
|
+
# Offense count: 18
|
84
78
|
RSpec/BeforeAfterAll:
|
85
79
|
Enabled: false
|
86
80
|
|
87
81
|
# Offense count: 2
|
88
|
-
# Configuration parameters: Prefixes.
|
82
|
+
# Configuration parameters: Prefixes, AllowedPatterns.
|
89
83
|
# Prefixes: when, with, without
|
90
84
|
RSpec/ContextWording:
|
91
85
|
Exclude:
|
@@ -104,10 +98,10 @@ RSpec/DescribeClass:
|
|
104
98
|
- 'spec/integration/html_spec.rb'
|
105
99
|
|
106
100
|
# Offense count: 1
|
107
|
-
#
|
101
|
+
# This cop supports safe autocorrection (--autocorrect).
|
108
102
|
RSpec/ExpectActual:
|
109
103
|
Exclude:
|
110
|
-
- 'spec/routing/**/*'
|
104
|
+
- '**/spec/routing/**/*'
|
111
105
|
- 'spec/fields/name_spec.rb'
|
112
106
|
|
113
107
|
# Offense count: 25
|
@@ -116,7 +110,7 @@ RSpec/ExpectActual:
|
|
116
110
|
RSpec/FilePath:
|
117
111
|
Enabled: false
|
118
112
|
|
119
|
-
# Offense count:
|
113
|
+
# Offense count: 99
|
120
114
|
# Configuration parameters: AssignmentOnly.
|
121
115
|
RSpec/InstanceVariable:
|
122
116
|
Enabled: false
|
@@ -139,13 +133,22 @@ RSpec/MultipleMemoizedHelpers:
|
|
139
133
|
Max: 6
|
140
134
|
|
141
135
|
# Offense count: 2
|
136
|
+
# Configuration parameters: AllowedGroups.
|
142
137
|
RSpec/NestedGroups:
|
143
138
|
Max: 4
|
144
139
|
|
145
|
-
# Offense count:
|
146
|
-
|
140
|
+
# Offense count: 1
|
141
|
+
# This cop supports unsafe autocorrection (--autocorrect-all).
|
142
|
+
# Configuration parameters: Inferences.
|
143
|
+
RSpec/Rails/InferredSpecType:
|
147
144
|
Exclude:
|
148
|
-
- 'spec/
|
145
|
+
- 'spec/helpers/record_helper_spec.rb'
|
146
|
+
|
147
|
+
# Offense count: 25
|
148
|
+
# Configuration parameters: Include, CustomTransform, IgnoreMethods, IgnoreMetadata.
|
149
|
+
# Include: **/*_spec.rb
|
150
|
+
RSpec/SpecFilePathFormat:
|
151
|
+
Enabled: false
|
149
152
|
|
150
153
|
# Offense count: 1
|
151
154
|
# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
|
@@ -153,7 +156,7 @@ RSpec/VerifiedDoubles:
|
|
153
156
|
Exclude:
|
154
157
|
- 'spec/helpers/record_helper_spec.rb'
|
155
158
|
|
156
|
-
# Offense count:
|
159
|
+
# Offense count: 36
|
157
160
|
# Configuration parameters: AllowedConstants.
|
158
161
|
Style/Documentation:
|
159
162
|
Enabled: false
|
@@ -176,9 +179,9 @@ Style/OpenStructUse:
|
|
176
179
|
Exclude:
|
177
180
|
- 'spec/helpers/record_helper_spec.rb'
|
178
181
|
|
179
|
-
# Offense count:
|
180
|
-
#
|
181
|
-
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives,
|
182
|
+
# Offense count: 33
|
183
|
+
# This cop supports safe autocorrection (--autocorrect).
|
184
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
|
182
185
|
# URISchemes: http, https
|
183
186
|
Layout/LineLength:
|
184
|
-
Max:
|
187
|
+
Max: 273
|
data/Gemfile
CHANGED
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -4,11 +4,7 @@ require 'bundler/gem_tasks'
|
|
4
4
|
require 'rspec/core/rake_task'
|
5
5
|
require 'rubocop/rake_task'
|
6
6
|
|
7
|
-
RuboCop::RakeTask.new
|
8
|
-
task.requires << 'rubocop-rspec'
|
9
|
-
task.options = ['--fail-level', 'error']
|
10
|
-
end
|
11
|
-
|
7
|
+
RuboCop::RakeTask.new(:rubocop)
|
12
8
|
RSpec::Core::RakeTask.new(:spec)
|
13
9
|
|
14
10
|
task :ci do
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'rails_autolink/helpers'
|
4
|
+
|
3
5
|
module ModsDisplay
|
4
6
|
module RecordHelper
|
5
7
|
def mods_display_label(label)
|
@@ -69,43 +71,21 @@ module ModsDisplay
|
|
69
71
|
link
|
70
72
|
end
|
71
73
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
else
|
78
|
-
"<#{possible_tag[1..]}"
|
79
|
-
end
|
74
|
+
class MetadataScrubber < Rails::Html::PermitScrubber
|
75
|
+
# Override the superclass to escape the non-permitted nodes
|
76
|
+
def scrub_node(node)
|
77
|
+
node.add_next_sibling Nokogiri::XML::Text.new(node.to_s, node.document)
|
78
|
+
node.remove
|
80
79
|
end
|
80
|
+
end
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
possible_tag
|
86
|
-
else
|
87
|
-
"<#{possible_tag[1..]}"
|
88
|
-
end
|
89
|
-
end
|
82
|
+
def format_mods_html(val, tags: %w[a dl dd dt i b em strong cite br], field: nil)
|
83
|
+
scrubber = MetadataScrubber.new
|
84
|
+
scrubber.tags = tags
|
90
85
|
|
91
|
-
|
92
|
-
url = %r{(?i)\b(?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\([^\s()<>]+|\([^\s()<>]+\)*\))+(?:\([^\s()<>]+|\([^\s()<>]+\)*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’])}i
|
93
|
-
# http://www.regular-expressions.info/email.html
|
94
|
-
email = %r{[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)\b}i
|
95
|
-
matches = [val.scan(url), val.scan(email)].flatten.uniq
|
96
|
-
unless val =~ /<a/ # we'll assume that linking has alraedy occured and we don't want to double link
|
97
|
-
matches.each do |match|
|
98
|
-
if match =~ email
|
99
|
-
val.gsub!(match, "<a href='mailto:#{match}'>#{match}</a>")
|
100
|
-
else
|
101
|
-
match = match.delete_suffix('>')
|
102
|
-
|
103
|
-
val.gsub!(match, "<a href='#{match}'>#{match}</a>")
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
86
|
+
formatted_val = Loofah.fragment(val).scrub!(scrubber).to_s
|
107
87
|
|
108
|
-
formatted_val =
|
88
|
+
formatted_val = auto_link(formatted_val) unless formatted_val =~ /<a/ # we'll assume that linking has alraedy occured and we don't want to double link
|
109
89
|
|
110
90
|
# Martin Wong data has significant linebreaks in abstracts and notes that we want
|
111
91
|
# to preserve and display in HTML.
|
@@ -115,15 +95,13 @@ module ModsDisplay
|
|
115
95
|
if simple_formatted_fields.any? { |klass| field&.field.is_a? klass } && formatted_val.include?("\n")
|
116
96
|
simple_format(formatted_val, {}, sanitize: false)
|
117
97
|
else
|
118
|
-
formatted_val
|
98
|
+
formatted_val.html_safe
|
119
99
|
end
|
120
100
|
end
|
121
101
|
|
122
|
-
# rubocop:disable Layout/LineLength
|
123
102
|
# @private, but used in PURL currently
|
124
103
|
def link_urls_and_email(val, tags: %w[a dl dd dt i b em strong cite br])
|
125
104
|
format_mods_html(val, tags: tags)
|
126
105
|
end
|
127
|
-
# rubocop:enable Layout/LineLength
|
128
106
|
end
|
129
107
|
end
|
@@ -1,388 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'mods/marc_country_codes'
|
4
|
+
|
3
5
|
module ModsDisplay
|
4
6
|
module CountryCodes
|
5
7
|
def country_codes
|
6
|
-
|
7
|
-
'abc' => 'Alberta',
|
8
|
-
'ac' => 'Ashmore and Cartier Islands',
|
9
|
-
'aca' => 'Australian Capital Territory',
|
10
|
-
'ae' => 'Algeria',
|
11
|
-
'af' => 'Afghanistan',
|
12
|
-
'ag' => 'Argentina',
|
13
|
-
'ai' => 'Armenia (Republic)',
|
14
|
-
'air' => 'Armenian S.S.R.',
|
15
|
-
'aj' => 'Azerbaijan',
|
16
|
-
'ajr' => 'Azerbaijan S.S.R.',
|
17
|
-
'aku' => 'Alaska',
|
18
|
-
'alu' => 'Alabama',
|
19
|
-
'am' => 'Anguilla',
|
20
|
-
'an' => 'Andorra',
|
21
|
-
'ao' => 'Angola',
|
22
|
-
'aq' => 'Antigua and Barbuda',
|
23
|
-
'aru' => 'Arkansas',
|
24
|
-
'as' => 'American Samoa',
|
25
|
-
'at' => 'Australia',
|
26
|
-
'au' => 'Austria',
|
27
|
-
'aw' => 'Aruba',
|
28
|
-
'ay' => 'Antarctica',
|
29
|
-
'azu' => 'Arizona',
|
30
|
-
'ba' => 'Bahrain',
|
31
|
-
'bb' => 'Barbados',
|
32
|
-
'bcc' => 'British Columbia',
|
33
|
-
'bd' => 'Burundi',
|
34
|
-
'be' => 'Belgium',
|
35
|
-
'bf' => 'Bahamas',
|
36
|
-
'bg' => 'Bangladesh',
|
37
|
-
'bh' => 'Belize',
|
38
|
-
'bi' => 'British Indian Ocean Territory',
|
39
|
-
'bl' => 'Brazil',
|
40
|
-
'bm' => 'Bermuda Islands',
|
41
|
-
'bn' => 'Bosnia and Hercegovina',
|
42
|
-
'bo' => 'Bolivia',
|
43
|
-
'bp' => 'Solomon Islands',
|
44
|
-
'br' => 'Burma',
|
45
|
-
'bs' => 'Botswana',
|
46
|
-
'bt' => 'Bhutan',
|
47
|
-
'bu' => 'Bulgaria',
|
48
|
-
'bv' => 'Bouvet Island',
|
49
|
-
'bw' => 'Belarus',
|
50
|
-
'bwr' => 'Byelorussian S.S.R.',
|
51
|
-
'bx' => 'Brunei',
|
52
|
-
'ca' => 'Caribbean Netherlands',
|
53
|
-
'cau' => 'California',
|
54
|
-
'cb' => 'Cambodia',
|
55
|
-
'cc' => 'China',
|
56
|
-
'cd' => 'Chad',
|
57
|
-
'ce' => 'Sri Lanka',
|
58
|
-
'cf' => 'Congo (Brazzaville)',
|
59
|
-
'cg' => 'Congo (Democratic Republic)',
|
60
|
-
'ch' => 'China (Republic : 1949- )',
|
61
|
-
'ci' => 'Croatia',
|
62
|
-
'cj' => 'Cayman Islands',
|
63
|
-
'ck' => 'Colombia',
|
64
|
-
'cl' => 'Chile',
|
65
|
-
'cm' => 'Cameroon',
|
66
|
-
'cn' => 'Canada',
|
67
|
-
'co' => 'Curaçao',
|
68
|
-
'cou' => 'Colorado',
|
69
|
-
'cp' => 'Canton and Enderbury Islands',
|
70
|
-
'cq' => 'Comoros',
|
71
|
-
'cr' => 'Costa Rica',
|
72
|
-
'cs' => 'Czechoslovakia',
|
73
|
-
'ctu' => 'Connecticut',
|
74
|
-
'cu' => 'Cuba',
|
75
|
-
'cv' => 'Cape Verde',
|
76
|
-
'cw' => 'Cook Islands',
|
77
|
-
'cx' => 'Central African Republic',
|
78
|
-
'cy' => 'Cyprus',
|
79
|
-
'cz' => 'Canal Zone',
|
80
|
-
'dcu' => 'District of Columbia',
|
81
|
-
'deu' => 'Delaware',
|
82
|
-
'dk' => 'Denmark',
|
83
|
-
'dm' => 'Benin',
|
84
|
-
'dq' => 'Dominica',
|
85
|
-
'dr' => 'Dominican Republic',
|
86
|
-
'ea' => 'Eritrea',
|
87
|
-
'ec' => 'Ecuador',
|
88
|
-
'eg' => 'Equatorial Guinea',
|
89
|
-
'em' => 'Timor-Leste',
|
90
|
-
'enk' => 'England',
|
91
|
-
'er' => 'Estonia',
|
92
|
-
'err' => 'Estonia',
|
93
|
-
'es' => 'El Salvador',
|
94
|
-
'et' => 'Ethiopia',
|
95
|
-
'fa' => 'Faroe Islands',
|
96
|
-
'fg' => 'French Guiana',
|
97
|
-
'fi' => 'Finland',
|
98
|
-
'fj' => 'Fiji',
|
99
|
-
'fk' => 'Falkland Islands',
|
100
|
-
'flu' => 'Florida',
|
101
|
-
'fm' => 'Micronesia (Federated States)',
|
102
|
-
'fp' => 'French Polynesia',
|
103
|
-
'fr' => 'France',
|
104
|
-
'fs' => 'Terres australes et antarctiques françaises',
|
105
|
-
'ft' => 'Djibouti',
|
106
|
-
'gau' => 'Georgia',
|
107
|
-
'gb' => 'Kiribati',
|
108
|
-
'gd' => 'Grenada',
|
109
|
-
'ge' => 'Germany (East)',
|
110
|
-
'gh' => 'Ghana',
|
111
|
-
'gi' => 'Gibraltar',
|
112
|
-
'gl' => 'Greenland',
|
113
|
-
'gm' => 'Gambia',
|
114
|
-
'gn' => 'Gilbert and Ellice Islands',
|
115
|
-
'go' => 'Gabon',
|
116
|
-
'gp' => 'Guadeloupe',
|
117
|
-
'gr' => 'Greece',
|
118
|
-
'gs' => 'Georgia (Republic)',
|
119
|
-
'gsr' => 'Georgian S.S.R.',
|
120
|
-
'gt' => 'Guatemala',
|
121
|
-
'gu' => 'Guam',
|
122
|
-
'gv' => 'Guinea',
|
123
|
-
'gw' => 'Germany',
|
124
|
-
'gy' => 'Guyana',
|
125
|
-
'gz' => 'Gaza Strip',
|
126
|
-
'hiu' => 'Hawaii',
|
127
|
-
'hk' => 'Hong Kong',
|
128
|
-
'hm' => 'Heard and McDonald Islands',
|
129
|
-
'ho' => 'Honduras',
|
130
|
-
'ht' => 'Haiti',
|
131
|
-
'hu' => 'Hungary',
|
132
|
-
'iau' => 'Iowa',
|
133
|
-
'ic' => 'Iceland',
|
134
|
-
'idu' => 'Idaho',
|
135
|
-
'ie' => 'Ireland',
|
136
|
-
'ii' => 'India',
|
137
|
-
'ilu' => 'Illinois',
|
138
|
-
'inu' => 'Indiana',
|
139
|
-
'io' => 'Indonesia',
|
140
|
-
'iq' => 'Iraq',
|
141
|
-
'ir' => 'Iran',
|
142
|
-
'is' => 'Israel',
|
143
|
-
'it' => 'Italy',
|
144
|
-
'iu' => 'Israel-Syria Demilitarized Zones',
|
145
|
-
'iv' => "Côte d'Ivoire",
|
146
|
-
'iw' => 'Israel-Jordan Demilitarized Zones',
|
147
|
-
'iy' => 'Iraq-Saudi Arabia Neutral Zone',
|
148
|
-
'ja' => 'Japan',
|
149
|
-
'ji' => 'Johnston Atoll',
|
150
|
-
'jm' => 'Jamaica',
|
151
|
-
'jn' => 'Jan Mayen',
|
152
|
-
'jo' => 'Jordan',
|
153
|
-
'ke' => 'Kenya',
|
154
|
-
'kg' => 'Kyrgyzstan',
|
155
|
-
'kgr' => 'Kirghiz S.S.R.',
|
156
|
-
'kn' => 'Korea (North)',
|
157
|
-
'ko' => 'Korea (South)',
|
158
|
-
'ksu' => 'Kansas',
|
159
|
-
'ku' => 'Kuwait',
|
160
|
-
'kv' => 'Kosovo',
|
161
|
-
'kyu' => 'Kentucky',
|
162
|
-
'kz' => 'Kazakhstan',
|
163
|
-
'kzr' => 'Kazakh S.S.R.',
|
164
|
-
'lau' => 'Louisiana',
|
165
|
-
'lb' => 'Liberia',
|
166
|
-
'le' => 'Lebanon',
|
167
|
-
'lh' => 'Liechtenstein',
|
168
|
-
'li' => 'Lithuania',
|
169
|
-
'lir' => 'Lithuania',
|
170
|
-
'ln' => 'Central and Southern Line Islands',
|
171
|
-
'lo' => 'Lesotho',
|
172
|
-
'ls' => 'Laos',
|
173
|
-
'lu' => 'Luxembourg',
|
174
|
-
'lv' => 'Latvia',
|
175
|
-
'lvr' => 'Latvia',
|
176
|
-
'ly' => 'Libya',
|
177
|
-
'mau' => 'Massachusetts',
|
178
|
-
'mbc' => 'Manitoba',
|
179
|
-
'mc' => 'Monaco',
|
180
|
-
'mdu' => 'Maryland',
|
181
|
-
'meu' => 'Maine',
|
182
|
-
'mf' => 'Mauritius',
|
183
|
-
'mg' => 'Madagascar',
|
184
|
-
'mh' => 'Macao',
|
185
|
-
'miu' => 'Michigan',
|
186
|
-
'mj' => 'Montserrat',
|
187
|
-
'mk' => 'Oman',
|
188
|
-
'ml' => 'Mali',
|
189
|
-
'mm' => 'Malta',
|
190
|
-
'mnu' => 'Minnesota',
|
191
|
-
'mo' => 'Montenegro',
|
192
|
-
'mou' => 'Missouri',
|
193
|
-
'mp' => 'Mongolia',
|
194
|
-
'mq' => 'Martinique',
|
195
|
-
'mr' => 'Morocco',
|
196
|
-
'msu' => 'Mississippi',
|
197
|
-
'mtu' => 'Montana',
|
198
|
-
'mu' => 'Mauritania',
|
199
|
-
'mv' => 'Moldova',
|
200
|
-
'mvr' => 'Moldavian S.S.R.',
|
201
|
-
'mw' => 'Malawi',
|
202
|
-
'mx' => 'Mexico',
|
203
|
-
'my' => 'Malaysia',
|
204
|
-
'mz' => 'Mozambique',
|
205
|
-
'na' => 'Netherlands Antilles',
|
206
|
-
'nbu' => 'Nebraska',
|
207
|
-
'ncu' => 'North Carolina',
|
208
|
-
'ndu' => 'North Dakota',
|
209
|
-
'ne' => 'Netherlands',
|
210
|
-
'nfc' => 'Newfoundland and Labrador',
|
211
|
-
'ng' => 'Niger',
|
212
|
-
'nhu' => 'New Hampshire',
|
213
|
-
'nik' => 'Northern Ireland',
|
214
|
-
'nju' => 'New Jersey',
|
215
|
-
'nkc' => 'New Brunswick',
|
216
|
-
'nl' => 'New Caledonia',
|
217
|
-
'nm' => 'Northern Mariana Islands',
|
218
|
-
'nmu' => 'New Mexico',
|
219
|
-
'nn' => 'Vanuatu',
|
220
|
-
'no' => 'Norway',
|
221
|
-
'np' => 'Nepal',
|
222
|
-
'nq' => 'Nicaragua',
|
223
|
-
'nr' => 'Nigeria',
|
224
|
-
'nsc' => 'Nova Scotia',
|
225
|
-
'ntc' => 'Northwest Territories',
|
226
|
-
'nu' => 'Nauru',
|
227
|
-
'nuc' => 'Nunavut',
|
228
|
-
'nvu' => 'Nevada',
|
229
|
-
'nw' => 'Northern Mariana Islands',
|
230
|
-
'nx' => 'Norfolk Island',
|
231
|
-
'nyu' => 'New York (State)',
|
232
|
-
'nz' => 'New Zealand',
|
233
|
-
'ohu' => 'Ohio',
|
234
|
-
'oku' => 'Oklahoma',
|
235
|
-
'onc' => 'Ontario',
|
236
|
-
'oru' => 'Oregon',
|
237
|
-
'ot' => 'Mayotte',
|
238
|
-
'pau' => 'Pennsylvania',
|
239
|
-
'pc' => 'Pitcairn Island',
|
240
|
-
'pe' => 'Peru',
|
241
|
-
'pf' => 'Paracel Islands',
|
242
|
-
'pg' => 'Guinea-Bissau',
|
243
|
-
'ph' => 'Philippines',
|
244
|
-
'pic' => 'Prince Edward Island',
|
245
|
-
'pk' => 'Pakistan',
|
246
|
-
'pl' => 'Poland',
|
247
|
-
'pn' => 'Panama',
|
248
|
-
'po' => 'Portugal',
|
249
|
-
'pp' => 'Papua New Guinea',
|
250
|
-
'pr' => 'Puerto Rico',
|
251
|
-
'pt' => 'Portuguese Timor',
|
252
|
-
'pw' => 'Palau',
|
253
|
-
'py' => 'Paraguay',
|
254
|
-
'qa' => 'Qatar',
|
255
|
-
'qea' => 'Queensland',
|
256
|
-
'quc' => 'Québec (Province)',
|
257
|
-
'rb' => 'Serbia',
|
258
|
-
're' => 'Réunion',
|
259
|
-
'rh' => 'Zimbabwe',
|
260
|
-
'riu' => 'Rhode Island',
|
261
|
-
'rm' => 'Romania',
|
262
|
-
'ru' => 'Russia (Federation)',
|
263
|
-
'rur' => 'Russian S.F.S.R.',
|
264
|
-
'rw' => 'Rwanda',
|
265
|
-
'ry' => 'Ryukyu Islands, Southern',
|
266
|
-
'sa' => 'South Africa',
|
267
|
-
'sb' => 'Svalbard',
|
268
|
-
'sc' => 'Saint-Barthélemy',
|
269
|
-
'scu' => 'South Carolina',
|
270
|
-
'sd' => 'South Sudan',
|
271
|
-
'sdu' => 'South Dakota',
|
272
|
-
'se' => 'Seychelles',
|
273
|
-
'sf' => 'Sao Tome and Principe',
|
274
|
-
'sg' => 'Senegal',
|
275
|
-
'sh' => 'Spanish North Africa',
|
276
|
-
'si' => 'Singapore',
|
277
|
-
'sj' => 'Sudan',
|
278
|
-
'sk' => 'Sikkim',
|
279
|
-
'sl' => 'Sierra Leone',
|
280
|
-
'sm' => 'San Marino',
|
281
|
-
'sn' => 'Sint Maarten',
|
282
|
-
'snc' => 'Saskatchewan',
|
283
|
-
'so' => 'Somalia',
|
284
|
-
'sp' => 'Spain',
|
285
|
-
'sq' => 'Swaziland',
|
286
|
-
'sr' => 'Surinam',
|
287
|
-
'ss' => 'Western Sahara',
|
288
|
-
'st' => 'Saint-Martin',
|
289
|
-
'stk' => 'Scotland',
|
290
|
-
'su' => 'Saudi Arabia',
|
291
|
-
'sv' => 'Swan Islands',
|
292
|
-
'sw' => 'Sweden',
|
293
|
-
'sx' => 'Namibia',
|
294
|
-
'sy' => 'Syria',
|
295
|
-
'sz' => 'Switzerland',
|
296
|
-
'ta' => 'Tajikistan',
|
297
|
-
'tar' => 'Tajik S.S.R.',
|
298
|
-
'tc' => 'Turks and Caicos Islands',
|
299
|
-
'tg' => 'Togo',
|
300
|
-
'th' => 'Thailand',
|
301
|
-
'ti' => 'Tunisia',
|
302
|
-
'tk' => 'Turkmenistan',
|
303
|
-
'tkr' => ' Turkmen S.S.R.',
|
304
|
-
'tl' => 'Tokelau',
|
305
|
-
'tma' => 'Tasmania',
|
306
|
-
'tnu' => 'Tennessee',
|
307
|
-
'to' => 'Tonga',
|
308
|
-
'tr' => 'Trinidad and Tobago',
|
309
|
-
'ts' => 'United Arab Emirates',
|
310
|
-
'tt' => 'Trust Territory of the Pacific Islands',
|
311
|
-
'tu' => 'Turkey',
|
312
|
-
'tv' => 'Tuvalu',
|
313
|
-
'txu' => 'Texas',
|
314
|
-
'tz' => 'Tanzania',
|
315
|
-
'ua' => 'Egypt',
|
316
|
-
'uc' => 'United States Misc. Caribbean Islands',
|
317
|
-
'ug' => 'Uganda',
|
318
|
-
'ui' => 'United Kingdom Misc. Islands',
|
319
|
-
'uik' => 'United Kingdom Misc. Islands',
|
320
|
-
'uk' => 'United Kingdom',
|
321
|
-
'un' => 'Ukraine',
|
322
|
-
'unr' => 'Ukraine',
|
323
|
-
'up' => 'United States Misc. Pacific Islands',
|
324
|
-
'ur' => 'Soviet Union',
|
325
|
-
'us' => 'United States',
|
326
|
-
'utu' => 'Utah',
|
327
|
-
'uv' => 'Burkina Faso',
|
328
|
-
'uy' => 'Uruguay',
|
329
|
-
'uz' => 'Uzbekistan',
|
330
|
-
'uzr' => 'Uzbek S.S.R.',
|
331
|
-
'vau' => 'Virginia',
|
332
|
-
'vb' => 'British Virgin Islands',
|
333
|
-
'vc' => 'Vatican City',
|
334
|
-
've' => 'Venezuela',
|
335
|
-
'vi' => 'Virgin Islands of the United States',
|
336
|
-
'vm' => 'Vietnam',
|
337
|
-
'vn' => 'Vietnam, North',
|
338
|
-
'vp' => 'Various places',
|
339
|
-
'vra' => 'Victoria',
|
340
|
-
'vs' => 'Vietnam, South',
|
341
|
-
'vtu' => 'Vermont',
|
342
|
-
'wau' => 'Washington (State)',
|
343
|
-
'wb' => 'West Berlin',
|
344
|
-
'wea' => 'Western Australia',
|
345
|
-
'wf' => 'Wallis and Futuna',
|
346
|
-
'wiu' => 'Wisconsin',
|
347
|
-
'wj' => 'West Bank of the Jordan River',
|
348
|
-
'wk' => 'Wake Island',
|
349
|
-
'wlk' => 'Wales',
|
350
|
-
'ws' => 'Samoa',
|
351
|
-
'wvu' => 'West Virginia',
|
352
|
-
'wyu' => 'Wyoming',
|
353
|
-
'xa' => 'Christmas Island (Indian Ocean)',
|
354
|
-
'xb' => 'Cocos (Keeling) Islands',
|
355
|
-
'xc' => 'Maldives',
|
356
|
-
'xd' => 'Saint Kitts-Nevis',
|
357
|
-
'xe' => 'Marshall Islands',
|
358
|
-
'xf' => 'Midway Islands',
|
359
|
-
'xga' => 'Coral Sea Islands Territory',
|
360
|
-
'xh' => 'Niue',
|
361
|
-
'xi' => 'Saint Kitts-Nevis-Anguilla',
|
362
|
-
'xj' => 'Saint Helena',
|
363
|
-
'xk' => 'Saint Lucia',
|
364
|
-
'xl' => 'Saint Pierre and Miquelon',
|
365
|
-
'xm' => 'Saint Vincent and the Grenadines',
|
366
|
-
'xn' => 'Macedonia',
|
367
|
-
'xna' => 'New South Wales',
|
368
|
-
'xo' => 'Slovakia',
|
369
|
-
'xoa' => 'Northern Territory',
|
370
|
-
'xp' => 'Spratly Island',
|
371
|
-
'xr' => 'Czech Republic',
|
372
|
-
'xra' => 'South Australia',
|
373
|
-
'xs' => 'South Georgia and the South Sandwich Islands',
|
374
|
-
'xv' => 'Slovenia',
|
375
|
-
# Removing per METADOR-32
|
376
|
-
# "xx" => "No place, unknown, or undetermined",
|
377
|
-
'xxc' => 'Canada',
|
378
|
-
'xxk' => 'United Kingdom',
|
379
|
-
'xxr' => 'Soviet Union',
|
380
|
-
'xxu' => 'United States',
|
381
|
-
'ye' => 'Yemen',
|
382
|
-
'ykc' => 'Yukon Territory',
|
383
|
-
'ys' => "Yemen (People's Democratic Republic)",
|
384
|
-
'yu' => 'Serbia and Montenegro',
|
385
|
-
'za' => 'Zambia' }
|
8
|
+
@country_codes ||= MARC_COUNTRY.except('xx') # Removing per METADOR-32
|
386
9
|
end
|
387
10
|
end
|
388
11
|
end
|
@@ -29,8 +29,8 @@ module ModsDisplay
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def resource_type_is_collection?(value)
|
32
|
-
return unless value.respond_to?(:typeOfResource)
|
33
|
-
return unless value.typeOfResource.attributes.length.positive?
|
32
|
+
return false unless value.respond_to?(:typeOfResource)
|
33
|
+
return false unless value.typeOfResource.attributes.length.positive?
|
34
34
|
|
35
35
|
value.typeOfResource.attributes.length.positive? &&
|
36
36
|
value.typeOfResource.attributes.first.key?('collection') &&
|
@@ -12,9 +12,7 @@ module ModsDisplay
|
|
12
12
|
private
|
13
13
|
|
14
14
|
def identifier_label(element)
|
15
|
-
if element.attributes['type'].respond_to?(:value)
|
16
|
-
return identifier_labels[element.attributes['type'].value] || "#{element.attributes['type'].value}:"
|
17
|
-
end
|
15
|
+
return identifier_labels[element.attributes['type'].value] || "#{element.attributes['type'].value}:" if element.attributes['type'].respond_to?(:value)
|
18
16
|
|
19
17
|
I18n.t('mods_display.identifier')
|
20
18
|
end
|
@@ -10,7 +10,8 @@ module ModsDisplay
|
|
10
10
|
|
11
11
|
if child.name.to_sym == :url
|
12
12
|
loc_label = displayLabel(location) || I18n.t('mods_display.location')
|
13
|
-
value = "<a href='#{element_text(child)}'>#{(displayLabel(child) || element_text(child)).gsub(/:$/,
|
13
|
+
value = "<a href='#{element_text(child)}'>#{(displayLabel(child) || element_text(child)).gsub(/:$/,
|
14
|
+
'')}</a>"
|
14
15
|
else
|
15
16
|
loc_label = location_label(child) || displayLabel(location) || I18n.t('mods_display.location')
|
16
17
|
value = element_text(child)
|
@@ -5,10 +5,11 @@ module ModsDisplay
|
|
5
5
|
include ModsDisplay::RelatorCodes
|
6
6
|
def fields
|
7
7
|
return_fields = @values.map do |value|
|
8
|
+
name_identifiers = value.element_children.select { |child| child.name == 'nameIdentifier' }
|
8
9
|
person = if value.displayForm.length.positive?
|
9
|
-
ModsDisplay::Name::Person.new(name: element_text(value.displayForm))
|
10
|
+
ModsDisplay::Name::Person.new(name: element_text(value.displayForm), name_identifiers: name_identifiers)
|
10
11
|
elsif !name_parts(value).empty?
|
11
|
-
ModsDisplay::Name::Person.new(name: name_parts(value))
|
12
|
+
ModsDisplay::Name::Person.new(name: name_parts(value), name_identifiers: name_identifiers)
|
12
13
|
end
|
13
14
|
# The person may have multiple roles, so we have to divide them up into an array
|
14
15
|
role_labels(value).collect do |role_label|
|
@@ -163,7 +164,7 @@ module ModsDisplay
|
|
163
164
|
# Build the new fields data, stripping out the roles within the Person classes
|
164
165
|
label_keys.uniq.map do |k|
|
165
166
|
values = results[k].map do |person|
|
166
|
-
ModsDisplay::Name::Person.new(name: person.name)
|
167
|
+
ModsDisplay::Name::Person.new(name: person.name, orcid: person.orcid)
|
167
168
|
end
|
168
169
|
|
169
170
|
ModsDisplay::Values.new(label: k, values: values)
|
@@ -171,15 +172,29 @@ module ModsDisplay
|
|
171
172
|
end
|
172
173
|
|
173
174
|
class Person
|
174
|
-
attr_accessor :name
|
175
|
+
attr_accessor :name, :orcid
|
175
176
|
|
176
177
|
def initialize(data)
|
177
178
|
@name = data[:name]
|
179
|
+
@orcid = if data[:orcid].present?
|
180
|
+
data[:orcid]
|
181
|
+
elsif data[:name_identifiers].present?
|
182
|
+
orcid_identifier(data[:name_identifiers])
|
183
|
+
end
|
178
184
|
end
|
179
185
|
|
180
186
|
def to_s
|
181
187
|
@name
|
182
188
|
end
|
189
|
+
|
190
|
+
private
|
191
|
+
|
192
|
+
def orcid_identifier(name_identifiers)
|
193
|
+
orcid = name_identifiers.select do |name_identifier|
|
194
|
+
name_identifier.attribute('type')&.value == 'orcid'
|
195
|
+
end
|
196
|
+
orcid.first&.text
|
197
|
+
end
|
183
198
|
end
|
184
199
|
end
|
185
200
|
end
|
@@ -4,7 +4,8 @@ module ModsDisplay
|
|
4
4
|
class Note < Field
|
5
5
|
def fields
|
6
6
|
return_fields = note_fields.map do |value|
|
7
|
-
ModsDisplay::Values.new(label: displayLabel(value) || note_label(value), values: [element_text(value)],
|
7
|
+
ModsDisplay::Values.new(label: displayLabel(value) || note_label(value), values: [element_text(value)],
|
8
|
+
field: self)
|
8
9
|
end
|
9
10
|
collapse_fields(return_fields)
|
10
11
|
end
|
@@ -24,9 +25,7 @@ module ModsDisplay
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def note_label(element)
|
27
|
-
if element.attributes['type'].respond_to?(:value)
|
28
|
-
return note_labels[element.attributes['type'].value] || "#{element.attributes['type'].value.capitalize}:"
|
29
|
-
end
|
28
|
+
return note_labels[element.attributes['type'].value] || "#{element.attributes['type'].value.capitalize}:" if element.attributes['type'].respond_to?(:value)
|
30
29
|
|
31
30
|
I18n.t('mods_display.note')
|
32
31
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ModsDisplay
|
4
|
-
module RelatorCodes
|
5
|
-
def relator_codes
|
4
|
+
module RelatorCodes # rubocop:disable Metrics/ModuleLength
|
5
|
+
def relator_codes # rubocop:disable Metrics/MethodLength
|
6
6
|
{ 'abr' => 'Abridger',
|
7
7
|
'acp' => 'Art copyist',
|
8
8
|
'act' => 'Actor',
|
data/lib/mods_display/version.rb
CHANGED
data/mods_display.gemspec
CHANGED
@@ -21,9 +21,10 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.executables = gem.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
22
22
|
gem.require_paths = ["lib"]
|
23
23
|
|
24
|
-
gem.add_dependency 'stanford-mods', '~> 3.3'
|
24
|
+
gem.add_dependency 'stanford-mods', '~> 3.3', '>=3.3.7' # require stanford-mods 3.3.7 for orcid support
|
25
25
|
gem.add_dependency 'i18n'
|
26
26
|
gem.add_dependency 'view_component'
|
27
|
+
gem.add_dependency 'rails_autolink'
|
27
28
|
|
28
29
|
gem.add_development_dependency 'rake'
|
29
30
|
gem.add_development_dependency 'rspec', '~> 3.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mods_display
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jessie Keck
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: stanford-mods
|
@@ -17,6 +17,9 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.3'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.3.7
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -24,6 +27,9 @@ dependencies:
|
|
24
27
|
- - "~>"
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '3.3'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.3.7
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: i18n
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +58,20 @@ dependencies:
|
|
52
58
|
- - ">="
|
53
59
|
- !ruby/object:Gem::Version
|
54
60
|
version: '0'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rails_autolink
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
55
75
|
- !ruby/object:Gem::Dependency
|
56
76
|
name: rake
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -225,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
225
245
|
- !ruby/object:Gem::Version
|
226
246
|
version: '0'
|
227
247
|
requirements: []
|
228
|
-
rubygems_version: 3.4.
|
248
|
+
rubygems_version: 3.4.13
|
229
249
|
signing_key:
|
230
250
|
specification_version: 4
|
231
251
|
summary: The MODS Display gem allows implementers to configure a customized display
|