Class: Termtter::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/termtter/config.rb

Instance Method Summary collapse

Constructor Details

#initializeConfig

Returns a new instance of Config.



5
6
7
# File 'lib/termtter/config.rb', line 5

def initialize
  @store = Hash.new(:undefined)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/termtter/config.rb', line 31

def method_missing(name, *args)
  case name.to_s
  when /(.*)=$/
    __assign__($1.to_sym, args.first)
  else
    __refer__(name.to_sym)
  end
end

Instance Method Details

#__assign__(name, value) ⇒ Object

__assign__

Symbol -> a -> IO ()



41
42
43
# File 'lib/termtter/config.rb', line 41

def __assign__(name, value)
  @store[name] = value
end

#__refer__(name) ⇒ Object

__refer__

Symbol -> IO a



46
47
48
# File 'lib/termtter/config.rb', line 46

def __refer__(name)
  @store[name] == :undefined ? @store[name] = Termtter::Config.new : @store[name]
end

#__values__Object



50
51
52
# File 'lib/termtter/config.rb', line 50

def __values__
  @store.dup
end

#empty?Boolean

empty?

Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/termtter/config.rb', line 27

def empty?
  @store.empty?
end

#inspectObject



9
10
11
# File 'lib/termtter/config.rb', line 9

def inspect
  @store.inspect
end

#set_default(name, value) ⇒ Object

set_default

(Symbol | String) -> a -> IO ()



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/termtter/config.rb', line 14

def set_default(name, value)
  match_p, init, last = *name.to_s.match(/^(.+)\.([^\.]+)$/)
  if match_p
    tmp = eval(init)
    if tmp.__refer__(last.to_sym).empty?
      tmp.__assign__(last.to_sym, value)
    end
  else
    __assign__(name.to_sym, value) if __refer__(name.to_sym).empty?
  end
end