Class: CocinaDisplay::Forms::Form

Inherits:
Object
  • Object
show all
Defined in:
lib/cocina_display/forms/form.rb

Overview

A form associated with part or all of a Cocina object.

Direct Known Subclasses

Genre, ResourceType

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cocina, delimiter: " > ") ⇒ Form

Create a Form object from Cocina structured data.

Parameters:

  • cocina (Hash)
  • delimiter (String) (defaults to: " > ")

    The delimiter to use when flattening for display



28
29
30
31
# File 'lib/cocina_display/forms/form.rb', line 28

def initialize(cocina, delimiter: " > ")
  @cocina = cocina
  @delimiter = delimiter
end

Instance Attribute Details

#cocinaObject (readonly)

Returns the value of attribute cocina.



8
9
10
# File 'lib/cocina_display/forms/form.rb', line 8

def cocina
  @cocina
end

#delimiterObject (readonly)

Returns the value of attribute delimiter.



8
9
10
# File 'lib/cocina_display/forms/form.rb', line 8

def delimiter
  @delimiter
end

Class Method Details

.from_cocina(cocina) ⇒ Form

Create a Form object from Cocina structured data. Delegates to subclasses for specific types.

Parameters:

  • cocina (Hash)

Returns:



14
15
16
17
18
19
20
21
22
23
# File 'lib/cocina_display/forms/form.rb', line 14

def self.from_cocina(cocina)
  case cocina["type"]
  when "genre"
    Genre.new(cocina)
  when "resource type"
    ResourceType.new(cocina)
  else
    new(cocina)
  end
end

Instance Method Details

#flat_valueString

Single concatenated string value for the form.

Returns:

  • (String)


41
42
43
# File 'lib/cocina_display/forms/form.rb', line 41

def flat_value
  Utils.compact_and_join(values, delimiter: delimiter)
end

#labelString

The label to use for display. Uses a displayLabel if available, otherwise looks up via type.

Returns:

  • (String)


54
55
56
# File 'lib/cocina_display/forms/form.rb', line 54

def label
  cocina["displayLabel"].presence || type_label
end

#to_sString

The value to use for display.

Returns:

  • (String)


35
36
37
# File 'lib/cocina_display/forms/form.rb', line 35

def to_s
  flat_value
end

#typeString?

The type of form, such as “genre”, “extent”, etc.

Returns:

  • (String, nil)


60
61
62
# File 'lib/cocina_display/forms/form.rb', line 60

def type
  cocina["type"]
end

#valuesString

The raw values from the Cocina data, flattened if nested.

Returns:

  • (String)


47
48
49
# File 'lib/cocina_display/forms/form.rb', line 47

def values
  Utils.flatten_nested_values(cocina).pluck("value").compact_blank
end