Module: CocinaDisplay::Concerns::Subjects

Included in:
CocinaDisplay::CocinaRecord
Defined in:
lib/cocina_display/concerns/subjects.rb

Overview

Methods for extracting and formatting subject information.

Instance Method Summary collapse

Instance Method Details

#subject_allArray<String>

Combination of all subject values for searching.



57
58
59
# File 'lib/cocina_display/concerns/subjects.rb', line 57

def subject_all
  subject_topics_other + subject_temporal_genre + subject_places
end

#subject_all_displayArray<String>

Combination of all subjects with nested values concatenated for display.

Returns:

  • (Array<String>)

See Also:

  • Subject#display_str


89
90
91
# File 'lib/cocina_display/concerns/subjects.rb', line 89

def subject_all_display
  subjects.map(&:display_str).uniq
end

#subject_genresArray<String>

All unique subject values that are genres.

Returns:

  • (Array<String>)


16
17
18
# File 'lib/cocina_display/concerns/subjects.rb', line 16

def subject_genres
  subject_values.filter { |s| s.type == "genre" }.map(&:display_str).uniq
end

#subject_namesArray<String>

Note:

Multiple types are handled: person, family, organization, conference, etc.

All unique subject values that are names of entities.

Returns:

  • (Array<String>)

See Also:

  • NameSubjectValue


48
49
50
# File 'lib/cocina_display/concerns/subjects.rb', line 48

def subject_names
  subject_values.filter { |s| s.is_a? CocinaDisplay::Subjects::NameSubjectValue }.map(&:display_str).uniq
end

#subject_occupationsArray<String>

All unique subject values that are occupations.

Returns:

  • (Array<String>)


34
35
36
# File 'lib/cocina_display/concerns/subjects.rb', line 34

def subject_occupations
  subject_values.filter { |s| s.type == "occupation" }.map(&:display_str).uniq
end

#subject_otherArray<String>

Combination of occupation, name, and title subject values for searching.

Returns:

  • (Array<String>)

See Also:



74
75
76
# File 'lib/cocina_display/concerns/subjects.rb', line 74

def subject_other
  subject_occupations + subject_names + subject_titles
end

#subject_placesArray<String>

All unique subject values that describe geographic places.

Returns:

  • (Array<String>)


40
41
42
# File 'lib/cocina_display/concerns/subjects.rb', line 40

def subject_places
  subject_values.filter(&:place?).map(&:display_str).uniq
end

#subject_temporalArray<String>

All unique subject values that are date/time info.

Returns:

  • (Array<String>)


28
29
30
# File 'lib/cocina_display/concerns/subjects.rb', line 28

def subject_temporal
  subject_values.filter { |s| s.type == "time" }.map(&:display_str).uniq
end

#subject_temporal_genreArray<String>

Combination of temporal and genre subject values for searching.

Returns:

  • (Array<String>)

See Also:



82
83
84
# File 'lib/cocina_display/concerns/subjects.rb', line 82

def subject_temporal_genre
  subject_temporal + subject_genres
end

#subject_titlesArray<String>

All unique subject values that are titles.

Returns:

  • (Array<String>)


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

def subject_titles
  subject_values.filter { |s| s.type == "title" }.map(&:display_str).uniq
end

#subject_topicsArray<String>

All unique subject values that are topics.

Returns:

  • (Array<String>)


10
11
12
# File 'lib/cocina_display/concerns/subjects.rb', line 10

def subject_topics
  subject_values.filter { |s| s.type == "topic" }.map(&:display_str).uniq
end

#subject_topics_otherArray<String>

Combination of topic, occupation, name, and title subject values for searching.

Returns:

  • (Array<String>)

See Also:



65
66
67
# File 'lib/cocina_display/concerns/subjects.rb', line 65

def subject_topics_other
  subject_topics + subject_other
end