Class: Archimate::DataModel::LangString

Inherits:
Object
  • Object
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.

Direct Known Subclasses

PreservedLangString

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.

Parameters:

  • attributes (Hash{Symbol => Object}, LangString, String)

Raises:

  • (Struct::Error)

    if the given attributes don’t conform #schema with given # constructor_type



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_langString, NilClass (readonly)

Returns:

  • (String, NilClass)


20
# File 'lib/archimate/data_model/lang_string.rb', line 20

model_attr :default_lang

#default_textString (readonly)

Returns:

  • (String)


23
# File 'lib/archimate/data_model/lang_string.rb', line 23

model_attr :default_text

#lang_hashHash (readonly)

Returns:

  • (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

def self.default_lang

Archimate::Config.instance.default_lang

end



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

#langObject



100
101
102
# File 'lib/archimate/data_model/lang_string.rb', line 100

def lang
  default_lang
end

#langsObject



78
79
80
# File 'lib/archimate/data_model/lang_string.rb', line 78

def langs
  @lang_hash.keys
end

#textObject



96
97
98
# File 'lib/archimate/data_model/lang_string.rb', line 96

def text
  to_s
end

#to_sObject



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_strObject



82
83
84
# File 'lib/archimate/data_model/lang_string.rb', line 82

def to_str
  to_s
end