Class: UncleKryon::BaseIsos

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/unclekryon/iso/base_iso.rb

Constant Summary collapse

DEFAULT_DIR =
'iso'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logging

#init_log, #log

Constructor Details

#initializeBaseIsos

Returns a new instance of BaseIsos.



67
68
69
70
71
72
# File 'lib/unclekryon/iso/base_iso.rb', line 67

def initialize
  super()

  @id = self.class.get_class_name(self)
  @values = {}
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



64
65
66
# File 'lib/unclekryon/iso/base_iso.rb', line 64

def id
  @id
end

#valuesObject (readonly)

Returns the value of attribute values.



65
66
67
# File 'lib/unclekryon/iso/base_iso.rb', line 65

def values
  @values
end

Class Method Details

.get_class_name(class_var) ⇒ Object



166
167
168
# File 'lib/unclekryon/iso/base_iso.rb', line 166

def self.get_class_name(class_var)
  return class_var.class.name.split('::').last
end

Instance Method Details

#[](code) ⇒ Object



158
159
160
# File 'lib/unclekryon/iso/base_iso.rb', line 158

def [](code)
  @values[code]
end

#[]=(code, value) ⇒ Object



162
163
164
# File 'lib/unclekryon/iso/base_iso.rb', line 162

def []=(code,value)
  @values[code] = value
end

#find(text) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/unclekryon/iso/base_iso.rb', line 74

def find(text)
  lang = find_by_name(text)
  return lang unless lang.nil?

  lang = find_by_code(text)
  return lang
end

#find_by_code(code) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/unclekryon/iso/base_iso.rb', line 82

def find_by_code(code)
  code = code.gsub(/[[:space:]]+/,'').downcase

  @values.each do |k,v|
    codes = nil

    if v.respond_to?(:codes)
      codes = v.codes()
    elsif v.respond_to?(:code)
      codes = [v.code]
    else
      raise "No codes()/code() method for class #{v.class.name}"
    end

    codes.each do |c|
      next if c.nil?
      c = c.gsub(/[[:space:]]+/,'').downcase
      return v if c == code
    end
  end

  return nil
end

#find_by_name(name) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/unclekryon/iso/base_iso.rb', line 106

def find_by_name(name)
  name = name.gsub(/[[:space:]]+/,'').downcase

  @values.each do |k,v|
    names = nil

    if v.respond_to?(:names)
      names = v.names()
    elsif v.respond_to?(:name)
      names = [v.name]
    else
      raise "No names()/name() method for class #{v.class.name}"
    end

    names.each do |n|
      next if n.nil?
      n = n.gsub(/[[:space:]]+/,'').downcase
      return v if n == name
    end
  end

  return nil
end

#key?(code) ⇒ Boolean

Returns:

  • (Boolean)


170
171
172
# File 'lib/unclekryon/iso/base_iso.rb', line 170

def key?(code)
  @values.key?(code)
end

#load_file(filepath) ⇒ Object



130
131
132
133
134
135
# File 'lib/unclekryon/iso/base_iso.rb', line 130

def load_file(filepath)
  y = YAML.load_file(filepath)
  @values.merge!(y[@id])

  return self
end

#save_to_file(filepath) ⇒ Object



137
138
139
140
141
142
143
# File 'lib/unclekryon/iso/base_iso.rb', line 137

def save_to_file(filepath)
  File.open(filepath,'w') do |f|
    v = {}
    v[@id] = @values
    YAML.dump(v,f)
  end
end

#sort_keys!Object



145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/unclekryon/iso/base_iso.rb', line 145

def sort_keys!
  # Old way: @values = @values.sort().to_h()

  new_values = {}

  @values.keys.sort.each do |code|
    new_values[code] = @values[code]
  end

  @values = new_values
  return self
end

#to_sObject



174
175
176
177
178
179
180
181
182
# File 'lib/unclekryon/iso/base_iso.rb', line 174

def to_s
  s = ''.dup

  @values.each do |code,value|
    s << "#{code}: #{value}\n"
  end

  return s
end