Module: CocinaDisplay::Concerns::Structural
- Included in:
- CocinaDisplay::CocinaRecord
- Defined in:
- lib/cocina_display/concerns/structural.rb
Overview
Methods for inspecting structural metadata (e.g. file hierarchy)
Instance Method Summary collapse
-
#containing_collections ⇒ Array<String>
DRUIDs of collections this object is a member of.
-
#file_mime_types ⇒ Array<String>
All unique MIME types of files in this object.
-
#files ⇒ Array<Hash>
Structured data for all individual files in the object.
-
#total_file_size_int ⇒ Integer
Summed size of all files in bytes.
-
#total_file_size_str ⇒ String
Human-readable string representation of #total_file_size_int.
- #virtual_object? ⇒ Boolean
- #virtual_object_members ⇒ Object
Instance Method Details
#containing_collections ⇒ Array<String>
DRUIDs of collections this object is a member of.
43 44 45 |
# File 'lib/cocina_display/concerns/structural.rb', line 43 def containing_collections path("$.structural.isMemberOf.*").map { |druid| druid.delete_prefix("druid:") } end |
#file_mime_types ⇒ Array<String>
All unique MIME types of files in this object.
22 23 24 |
# File 'lib/cocina_display/concerns/structural.rb', line 22 def file_mime_types files.pluck("hasMimeType").uniq end |
#files ⇒ Array<Hash>
Structured data for all individual files in the object. Traverses nested FileSet structure to return a flattened array.
15 16 17 |
# File 'lib/cocina_display/concerns/structural.rb', line 15 def files @files ||= path("$.structural.contains.*.structural.contains.*").search end |
#total_file_size_int ⇒ Integer
Summed size of all files in bytes.
36 37 38 |
# File 'lib/cocina_display/concerns/structural.rb', line 36 def total_file_size_int files.pluck("size").sum end |
#total_file_size_str ⇒ String
Human-readable string representation of #total_file_size_int.
29 30 31 |
# File 'lib/cocina_display/concerns/structural.rb', line 29 def total_file_size_str ActiveSupport::NumberHelper.number_to_human_size(total_file_size_int) end |
#virtual_object? ⇒ Boolean
47 48 49 50 51 |
# File 'lib/cocina_display/concerns/structural.rb', line 47 def virtual_object? return false if path("$.structural.contains.*").any? path("$.structural.hasMemberOrders.*.members.*").any? end |
#virtual_object_members ⇒ Object
53 54 55 56 57 |
# File 'lib/cocina_display/concerns/structural.rb', line 53 def virtual_object_members return [] unless virtual_object? path("$.structural.hasMemberOrders.*.members.*").map { |druid| druid.delete_prefix("druid:") } end |