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

Instance Method Details

#file_mime_typesArray<String>

All unique MIME types of files in this object.

Examples:

“image/jpeg”, “application/pdf”

Returns:

  • (Array<String>)


22
23
24
# File 'lib/cocina_display/concerns/structural.rb', line 22

def file_mime_types
  files.pluck("hasMimeType").uniq
end

#filesArray<Hash>

Structured data for all individual files in the object. Traverses nested FileSet structure to return a flattened array.

Examples:

record.files.each do |file|
 puts file["filename"] #=> "image1.jpg"
 puts file["size"] #=> 123456
end

Returns:

  • (Array<Hash>)


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_intInteger

Summed size of all files in bytes.

Examples:

2621440

Returns:

  • (Integer)


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_strString

Human-readable string representation of #total_file_size_int.

Examples:

“2.5 MB”

Returns:

  • (String)


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