Class: CocinaDisplay::Languages::Language
- Inherits:
-
Object
- Object
- CocinaDisplay::Languages::Language
- Defined in:
- lib/cocina_display/languages/language.rb
Overview
A language associated with part or all of a Cocina object.
Constant Summary collapse
- SEARCHWORKS_LANGUAGES_FILE_PATH =
CocinaDisplay.root / "config" / "searchworks_languages.yml"
Instance Attribute Summary collapse
-
#cocina ⇒ Object
readonly
Returns the value of attribute cocina.
Class Method Summary collapse
-
.searchworks_languages ⇒ Hash{String => String}
A hash of language codes to language names recognized by Searchworks.
Instance Method Summary collapse
-
#code ⇒ String?
The language code, e.g.
-
#decoded_value ⇒ String?
Decoded name of the language based on the code, if present.
-
#english? ⇒ Boolean
True if the language is English.
-
#ietf_tag ⇒ String?
The IETF tag describing this language and script, if available.
-
#initialize(cocina) ⇒ Language
constructor
Create a Language object from Cocina structured data.
-
#label ⇒ String
Display label for this field.
-
#script ⇒ CocinaDisplay::Languages::Script?
The script of the language, if specified.
-
#searchworks_language? ⇒ Boolean
True if the language is recognized by Searchworks.
-
#to_s ⇒ String?
The language name for display.
-
#transliterated? ⇒ Boolean
True if the value is transliterated, i.e.
Constructor Details
#initialize(cocina) ⇒ Language
Create a Language object from Cocina structured data.
19 20 21 |
# File 'lib/cocina_display/languages/language.rb', line 19 def initialize(cocina) @cocina = cocina end |
Instance Attribute Details
#cocina ⇒ Object (readonly)
Returns the value of attribute cocina.
9 10 11 |
# File 'lib/cocina_display/languages/language.rb', line 9 def cocina @cocina end |
Class Method Details
.searchworks_languages ⇒ Hash{String => String}
A hash of language codes to language names recognized by Searchworks.
13 14 15 |
# File 'lib/cocina_display/languages/language.rb', line 13 def self.searchworks_languages @searchworks_languages ||= YAML.safe_load_file(SEARCHWORKS_LANGUAGES_FILE_PATH) end |
Instance Method Details
#code ⇒ String?
The language code, e.g. an ISO 639 code like “eng” or “spa”.
31 32 33 |
# File 'lib/cocina_display/languages/language.rb', line 31 def code cocina["code"] end |
#decoded_value ⇒ String?
Decoded name of the language based on the code, if present.
59 60 61 |
# File 'lib/cocina_display/languages/language.rb', line 59 def decoded_value Language.searchworks_languages[code] if searchworks_language? end |
#english? ⇒ Boolean
True if the language is English.
53 54 55 |
# File 'lib/cocina_display/languages/language.rb', line 53 def english? to_s == "English" end |
#ietf_tag ⇒ String?
The IETF tag describing this language and script, if available.
39 40 41 42 43 |
# File 'lib/cocina_display/languages/language.rb', line 39 def ietf_tag return code unless transliterated? "#{code}-#{script.code}" end |
#label ⇒ String
Display label for this field.
65 66 67 |
# File 'lib/cocina_display/languages/language.rb', line 65 def label cocina["displayLabel"].presence || I18n.t("cocina_display.field_label.language") end |
#script ⇒ CocinaDisplay::Languages::Script?
The script of the language, if specified.
78 79 80 |
# File 'lib/cocina_display/languages/language.rb', line 78 def script CocinaDisplay::Languages::Script.new(script_cocina) if script_cocina.present? end |
#searchworks_language? ⇒ Boolean
True if the language is recognized by Searchworks.
72 73 74 |
# File 'lib/cocina_display/languages/language.rb', line 72 def searchworks_language? Language.searchworks_languages.value?(cocina["value"]) || Language.searchworks_languages.key?(code) end |
#to_s ⇒ String?
The language name for display.
25 26 27 |
# File 'lib/cocina_display/languages/language.rb', line 25 def to_s cocina["value"] || decoded_value end |
#transliterated? ⇒ Boolean
True if the value is transliterated, i.e. non-English written in Latin script.
47 48 49 |
# File 'lib/cocina_display/languages/language.rb', line 47 def transliterated? !english? && script&.latin? end |