Module: CocinaDisplay::Concerns::Forms
- Included in:
- CocinaDisplay::CocinaRecord, RelatedResource
- Defined in:
- lib/cocina_display/concerns/forms.rb
Overview
Methods for extracting format/genre information from a Cocina object
Instance Method Summary collapse
-
#archived_website? ⇒ Boolean
Is the object a web archive?.
-
#cartographic? ⇒ Boolean
Is the object a cartographic resource?.
-
#dataset? ⇒ Boolean
Is the object a dataset?.
-
#extents ⇒ Array<String>
Extent of the object, such as “1 audiotape” or “1 map”.
-
#form_display_data ⇒ Array<DisplayData>
All form-related data to be rendered for display.
-
#form_note_display_data ⇒ Array<DisplayData>
All form notes to be rendered for display.
-
#forms ⇒ Array<String>
Physical or digital forms of the object.
-
#genre_display_data ⇒ Array<DisplayData>
All genre-related data to be rendered for display.
-
#genres ⇒ Array<String>
Genres of the object, capitalized for display.
-
#genres_search ⇒ Array<String>
Genres of the object, with additional values added for search/faceting.
-
#map_display_data ⇒ Array<DisplayData>
All map-related data to be rendered for display.
-
#mods_resource_types ⇒ Array<String>
Resource types of the object, expressed in SearchWorks controlled vocabulary.
-
#periodical? ⇒ Boolean
Is the object a periodical or serial?.
-
#searchworks_resource_types ⇒ Array<String>
Resource types of the object, expressed in SearchWorks controlled vocabulary.
Instance Method Details
#archived_website? ⇒ Boolean
Is the object a web archive?
98 99 100 |
# File 'lib/cocina_display/concerns/forms.rb', line 98 def archived_website? genres.include?("Archived website") end |
#cartographic? ⇒ Boolean
Is the object a cartographic resource?
92 93 94 |
# File 'lib/cocina_display/concerns/forms.rb', line 92 def cartographic? resource_type_values.include?("cartographic") end |
#dataset? ⇒ Boolean
Is the object a dataset?
104 105 106 |
# File 'lib/cocina_display/concerns/forms.rb', line 104 def dataset? genres.include?("Dataset") end |
#extents ⇒ Array<String>
Extent of the object, such as “1 audiotape” or “1 map”.
33 34 35 |
# File 'lib/cocina_display/concerns/forms.rb', line 33 def extents extent_forms.map(&:to_s).compact_blank.uniq end |
#form_display_data ⇒ Array<DisplayData>
All form-related data to be rendered for display. Includes form, extent, resource type, etc. (but not self-deposit resource types).
59 60 61 |
# File 'lib/cocina_display/concerns/forms.rb', line 59 def form_display_data CocinaDisplay::DisplayData.from_objects(all_forms - genre_forms - map_forms - media_forms - self_deposit_resource_types) end |
#form_note_display_data ⇒ Array<DisplayData>
All form notes to be rendered for display.
79 80 81 82 |
# File 'lib/cocina_display/concerns/forms.rb', line 79 def form_note_display_data CocinaDisplay::DisplayData.from_cocina(path("$.description.form[*].note[*]"), label: I18n.t("cocina_display.field_label.form.note")) end |
#forms ⇒ Array<String>
Physical or digital forms of the object.
25 26 27 |
# File 'lib/cocina_display/concerns/forms.rb', line 25 def forms form_forms.map(&:to_s).compact_blank.uniq end |
#genre_display_data ⇒ Array<DisplayData>
All genre-related data to be rendered for display. Includes both form genres, subject genres, and self-deposit resource types.
66 67 68 |
# File 'lib/cocina_display/concerns/forms.rb', line 66 def genre_display_data CocinaDisplay::DisplayData.from_objects(genre_forms + genre_subjects + self_deposit_resource_types) end |
#genres ⇒ Array<String>
Genres of the object, capitalized for display.
41 42 43 |
# File 'lib/cocina_display/concerns/forms.rb', line 41 def genres genre_forms.map(&:to_s).compact_blank.uniq end |
#genres_search ⇒ Array<String>
These values are added for discovery in SearchWorks but not for display.
Genres of the object, with additional values added for search/faceting.
48 49 50 51 52 53 54 |
# File 'lib/cocina_display/concerns/forms.rb', line 48 def genres_search genres.tap do |values| values << "Thesis/Dissertation" if values.include?("Thesis") values << "Conference proceedings" if values.include?("Conference publication") values << "Government document" if values.include?("Government publication") end.uniq end |
#map_display_data ⇒ Array<DisplayData>
All map-related data to be rendered for display. Includes map scale, projection info, and geographic coordinate subjects.
73 74 75 |
# File 'lib/cocina_display/concerns/forms.rb', line 73 def map_display_data CocinaDisplay::DisplayData.from_objects(map_forms + coordinate_subjects) end |
#mods_resource_types ⇒ Array<String>
Resource types of the object, expressed in SearchWorks controlled vocabulary.
17 18 19 |
# File 'lib/cocina_display/concerns/forms.rb', line 17 def mods_resource_types all_resource_types.select { |type| type.mods? }.map(&:to_s) end |
#periodical? ⇒ Boolean
Is the object a periodical or serial?
86 87 88 |
# File 'lib/cocina_display/concerns/forms.rb', line 86 def periodical? issuance_terms.include?("periodical") || issuance_terms.include?("serial") || frequency.any? end |
#searchworks_resource_types ⇒ Array<String>
Resource types of the object, expressed in SearchWorks controlled vocabulary.
9 10 11 12 13 |
# File 'lib/cocina_display/concerns/forms.rb', line 9 def searchworks_resource_types mapped_values = resource_type_values.flat_map { |resource_type| searchworks_resource_type(resource_type) } mapped_values << "Dataset" if dataset? mapped_values.uniq end |