cocina_display 1.4.0 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 319ba499a1ae1ce8f20511b28de441b55e364e2d51ab7ae34d3c1abaaceff04f
4
- data.tar.gz: 4a1a263d1d89f7295fd14bb407736e0a995b48d29d635b864d91ce26f52ac14e
3
+ metadata.gz: 87a645130e6859646e6da4e6467e2b147b94875426fd572af77fd0c759d27585
4
+ data.tar.gz: 88be964265cff6adaa48dbfbd733b01d22f66e08c05c91fa7b7d161ca3c6a1af
5
5
  SHA512:
6
- metadata.gz: 3e585e286c4477a970b0cfb880b171b1bc1cb7d4d694ec5d238e5fb536df635dfa3a0d53df842fa87471edf7f537baede39fa392797e6112b08c6d98d632818d
7
- data.tar.gz: 0a32bb97d75abdb367f324ff0c9b71cc28ad82d61f8226adb7b0b1c8adc7d8cb729a956d590296bda5b81fd2db6512389f5965d9f2825b1e556574ad7505ae3a
6
+ metadata.gz: 98614bc273ceb47c5b91d77fe2ae65749eb118ae4ac0318053e399be53040333b8063d40567be9c641109bb65a57367df72c74db407df9c81d65fb663bdb27e4
7
+ data.tar.gz: db732b08d482cc956624508c28564598fd47cb9ad734ca2e5acbffbf9c43dc5e79f34ce2e70066a99903a16d51829da643ef625ec97190cb6d5faf5e65a557ad
@@ -9,21 +9,22 @@ module CocinaDisplay
9
9
  # @return [Date, nil]
10
10
  # @see https://github.com/inukshuk/edtf-ruby
11
11
  def pub_date_edtf(ignore_qualified: false)
12
- date = pub_date(ignore_qualified: ignore_qualified)
13
- return unless date
12
+ return unless (date = pub_date(ignore_qualified: ignore_qualified))
14
13
 
15
14
  if date.is_a? CocinaDisplay::Dates::DateRange
16
- date = date.start || date.stop
15
+ if !date.start.date.is_a? EDTF::Unknown
16
+ edtf_date = date.start.date
17
+ elsif !date.stop.date.is_a? EDTF::Unknown
18
+ edtf_date = date.stop.date
19
+ end
20
+ else
21
+ edtf_date = date.date
17
22
  end
18
23
 
19
- edtf_date = date.date
20
- return unless edtf_date
24
+ return if edtf_date.is_a? EDTF::Unknown
25
+ return edtf_date.from if edtf_date.is_a?(EDTF::Interval)
21
26
 
22
- if edtf_date.is_a? EDTF::Interval
23
- edtf_date.from
24
- else
25
- edtf_date
26
- end
27
+ edtf_date
27
28
  end
28
29
 
29
30
  # The earliest preferred publication year as an integer.
@@ -105,8 +105,6 @@ module CocinaDisplay
105
105
  genres.include?("Dataset")
106
106
  end
107
107
 
108
- private
109
-
110
108
  # Collapses all nested form values into an array of {Form} objects.
111
109
  # Preserves resource type without flattening, since it can be structured.
112
110
  # @return [Array<Form>]
@@ -147,6 +145,38 @@ module CocinaDisplay
147
145
  all_forms.filter { |form| ["reformatting quality", "media type"].include?(form.type) }
148
146
  end
149
147
 
148
+ # All resource types forms, as {ResourceType}s.
149
+ # @return [Array<ResourceType>]
150
+ def all_resource_types
151
+ all_forms.filter { |form| form.is_a?(CocinaDisplay::Forms::ResourceType) }
152
+ end
153
+
154
+ # {ResourceType} objects that are Stanford self-deposit resource types.
155
+ # @return [Array<ResourceType>]
156
+ def self_deposit_resource_types
157
+ all_resource_types.filter { |resource_type| resource_type.stanford_self_deposit? }
158
+ end
159
+
160
+ # Display values of all resource types.
161
+ # @return [Array<String>]
162
+ def resource_type_values
163
+ all_resource_types.map(&:to_s).uniq
164
+ end
165
+
166
+ # Issuance terms for a work, drawn from the event notes.
167
+ # @return [Array<String>]
168
+ def issuance_terms
169
+ events.flat_map(&:notes).filter { |note| note.type == "issuance" }.map { |note| note.to_s.downcase }.uniq
170
+ end
171
+
172
+ # Frequency terms for a periodical, drawn from the event notes.
173
+ # @return [Array<String>]
174
+ def frequency
175
+ events.flat_map(&:notes).filter { |note| note.type == "frequency" }.map { |note| note.to_s.downcase }.uniq
176
+ end
177
+
178
+ private
179
+
150
180
  # Map a resource type to SearchWorks format value(s).
151
181
  # @param resource_type [String] The resource type to map.
152
182
  # @return [Array<String>]
@@ -186,36 +216,6 @@ module CocinaDisplay
186
216
 
187
217
  values.compact_blank
188
218
  end
189
-
190
- # All resource types forms, as {ResourceType}s.
191
- # @return [Array<ResourceType>]
192
- def all_resource_types
193
- all_forms.filter { |form| form.is_a?(CocinaDisplay::Forms::ResourceType) }
194
- end
195
-
196
- # {ResourceType} objects that are Stanford self-deposit resource types.
197
- # @return [Array<ResourceType>]
198
- def self_deposit_resource_types
199
- all_resource_types.filter { |resource_type| resource_type.stanford_self_deposit? }
200
- end
201
-
202
- # Display values of all resource types.
203
- # @return [Array<String>]
204
- def resource_type_values
205
- all_resource_types.map(&:to_s).uniq
206
- end
207
-
208
- # Issuance terms for a work, drawn from the event notes.
209
- # @return [Array<String>]
210
- def issuance_terms
211
- events.flat_map(&:notes).filter { |note| note.type == "issuance" }.map { |note| note.to_s.downcase }.uniq
212
- end
213
-
214
- # Frequency terms for a periodical, drawn from the event notes.
215
- # @return [Array<String>]
216
- def frequency
217
- events.flat_map(&:notes).filter { |note| note.type == "frequency" }.map { |note| note.to_s.downcase }.uniq
218
- end
219
219
  end
220
220
  end
221
221
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # :nodoc:
4
4
  module CocinaDisplay
5
- VERSION = "1.4.0" # :nodoc:
5
+ VERSION = "1.4.2" # :nodoc:
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocina_display
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Budak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-10-29 00:00:00.000000000 Z
11
+ date: 2025-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: janeway-jsonpath