Sha256: f0384c9681016d212ea8fd2a73f3fdbf956287ebb2b57b2400504add1c995b81

Contents?: true

Size: 945 Bytes

Versions: 7

Compression:

Stored size: 945 Bytes

Contents

require 'observer'

module OpenVZ

    class ConfigHash

        include Observable

        def initialize(data={})
          @data = {}
          update!(data)
        end
        
        def update!(data)
          data.each do |key, value|
            self[key] = value
          end
        end
        
        def [](key)
          @data[key.to_sym]
        end
        
        def []=(key, value)
            if @data[key] != value
                if value.class == Hash
                  @data[key.to_sym] = Config.new(value)
                else
                  @data[key.to_sym] = value
                end
                # Notify observers
                changed
                notify_observers(key, value)
            end
        end
        
        def method_missing(sym, *args)
          if sym.to_s =~ /(.+)=$/
            self[$1] = args.first
          else
            self[sym]
          end
        end
    end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
openvz-1.5.5 lib/openvz/confighash.rb
openvz-1.5.4 lib/openvz/confighash.rb
openvz-1.5.3 lib/openvz/confighash.rb
openvz-1.5 lib/openvz/confighash.rb
openvz-1.4 lib/openvz/confighash.rb
openvz-1.2 lib/openvz/confighash.rb
openvz-1.1 lib/openvz/confighash.rb