class SanUltari::Config::Store

SanUltari::Config의 설정값들을 실제로 저장하기 위한 객체 method 기반으로 동작하므로, method 이름을 격리하기 위하여 상속받은 동적 타입을 생성하여 사용한다.

@author Jeong, Jiung @see SanUltari::Config

Public Instance Methods

[](name) click to toggle source

기본 인덱서

@param [String] name 실제로 저장된 값에 접근하기 위한 접근자

# File lib/sanultari/config/store.rb, line 13
def [] name
  @values ||= {}

  @values[name] = SanUltari::Config.new name if @values[name] == nil
  @values[name]
end
[]=(name, value) click to toggle source

기본 인덱서 세터

@param [String] name 값을 저장할 이름. 메서드 이름으로 변경된다. @param [Object] value 저장될 값. 현재 테스트된 타입은 Primary types과 List, Hash에 한한다.

# File lib/sanultari/config/store.rb, line 24
def []= name, value
  @values ||= {}

  @values[name] = value
end
keys() click to toggle source

현재 저장되어 있는 설정의 Key값 컬렉션을 반환한다.

# File lib/sanultari/config/store.rb, line 31
def keys
  return [] if @values == nil
  @values.keys
end
method_missing(method_name, *args, &block) click to toggle source

설정값에 대해서 Getter와 Setter를 동적으로 생성하기 위한 Handler.

# File lib/sanultari/config/store.rb, line 37
def method_missing(method_name, *args, &block)
  name = method_name.to_s
  name.chomp!('=')

  self.class.instance_eval do
    define_method(name.to_sym) do |&blk|
      blk.call self[name] if blk != nil
      self[name]
    end if not public_methods.include? name.to_sym

    define_method("#{name}=".to_sym) do |value|
      self[name] = value
    end
  end

  send method_name, *args, &block
end