[ create a new paste ] login | about

Link: http://codepad.org/oXpOjRzK    [ raw code | output | fork | 1 comment ]

joshua_cheek - Ruby, pasted on Oct 31:
class Setting
  def self.all
    [ Setting.new( 'key1' , 'val1' , 'desc1' ) ,
      Setting.new( 'key2' , 'val2' , 'desc2' ) ,
      Setting.new( 'key3' , 'val3' , 'desc3' )]
  end

  attr_accessor :key , :value , :description
  def initialize( key , val , desc )
    @key = key 
    @value = val
    @description =desc
  end
  

  @@loaded_settings = Hash.new
  
  Setting.all.each do |setting|
    @@loaded_settings[ setting.key ] = { 
      :value => setting.value ,
      :description => setting.description
    }
  end
  
  def self.[]( key , key2=:value )
    @@loaded_settings[key][key2]
  end
  
  def self.[]=( key , value )
    @@loaded_settings[key][:value] = value
  end
  
end

p Setting['key1']
p Setting['key1',:description]
puts
p Setting['key1'] = 'new value'
p Setting['key1']
puts
p Setting['key1',:value]
p Setting['key1',:description]


Output:
1
2
3
4
5
6
7
8
"val1"
"desc1"

"new value"
"new value"

"new value"
"desc1"


Create a new paste based on this one


Comments:
posted by joshua_cheek on Nov 15
Setting class behaves as singleton object, gets its values dynamically, then can be read and written to directly with the setting (in this case 'key1' , 'key2' , and 'key3' ) but can still offer other attributes if desired, ie pass :description as the second param, and you get the description. Otherwise always behaves as value.
reply