Class: Archimate::DataModel::LangString
- Inherits:
-
Object
- Object
- Archimate::DataModel::LangString
show all
- Extended by:
- Forwardable
- Includes:
- Comparison
- Defined in:
- lib/archimate/data_model/lang_string.rb
Overview
A base string type for multi-language strings.
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Comparison
#==, #[], #dig, #each, #hash, included, #pretty_print, #to_h
Constructor Details
#initialize(str = nil, lang_hash: {}, default_lang: nil, default_text: nil) ⇒ LangString
Returns a new instance of LangString.
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/archimate/data_model/lang_string.rb', line 62
def initialize(str = nil, lang_hash: {}, default_lang: nil, default_text: nil)
@lang_hash = lang_hash
@default_lang = default_lang
@default_text = default_text
case str
when String
@lang_hash[@default_lang] = @default_text = str.strip
when LangString
@lang_hash = str.lang_hash
@default_lang = str.default_lang
@default_text = str.default_text
else
@lang_hash[default_lang] = default_text if default_text
end
end
|
Instance Attribute Details
#default_lang ⇒ String, NilClass
20
|
# File 'lib/archimate/data_model/lang_string.rb', line 20
model_attr :default_lang
|
#default_text ⇒ String
23
|
# File 'lib/archimate/data_model/lang_string.rb', line 23
model_attr :default_text
|
#lang_hash ⇒ Hash
17
|
# File 'lib/archimate/data_model/lang_string.rb', line 17
model_attr :lang_hash
|
Class Method Details
.create(copy) ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/archimate/data_model/lang_string.rb', line 40
def self.create(copy)
case copy
when String
string(copy)
when LangString
copy
when Hash
lang_hash = copy.fetch(:lang_hash, {})
default_lang = copy.fetch(:default_lang, "")
default_text = copy.fetch(:default_text, "")
return nil if [lang_hash, default_lang, default_text].any? { |i| i && i.empty? }
new(
lang_hash: lang_hash,
default_lang: default_lang,
default_text: default_text
)
end
end
|
.string(str, lang = nil) ⇒ Object
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/archimate/data_model/lang_string.rb', line 29
def self.string(str, lang = nil)
return nil if !str || str.strip.empty?
str = str.strip
lang = nil if !lang || lang.empty?
new(
lang_hash: { lang => str },
default_lang: lang,
default_text: str
)
end
|
Instance Method Details
#=~(other) ⇒ Object
104
105
106
107
108
109
110
111
|
# File 'lib/archimate/data_model/lang_string.rb', line 104
def =~(other)
str = to_s
if other.is_a?(Regexp)
other =~ str
else
Regexp.new(Regexp.escape(str)) =~ other
end
end
|
#by_lang(lang) ⇒ Object
92
93
94
|
# File 'lib/archimate/data_model/lang_string.rb', line 92
def by_lang(lang)
lang_hash.fetch(lang, nil)
end
|
#lang ⇒ Object
100
101
102
|
# File 'lib/archimate/data_model/lang_string.rb', line 100
def lang
default_lang
end
|
#langs ⇒ Object
78
79
80
|
# File 'lib/archimate/data_model/lang_string.rb', line 78
def langs
@lang_hash.keys
end
|
#text ⇒ Object
96
97
98
|
# File 'lib/archimate/data_model/lang_string.rb', line 96
def text
to_s
end
|
#to_s ⇒ Object
86
87
88
89
90
|
# File 'lib/archimate/data_model/lang_string.rb', line 86
def to_s
@default_text ||= @lang_hash.fetch(default_lang) do |key|
@lang_hash.fetch(nil, nil) if key
end
end
|
#to_str ⇒ Object
82
83
84
|
# File 'lib/archimate/data_model/lang_string.rb', line 82
def to_str
to_s
end
|