jonas-lantto/table_transform

View on GitHub
lib/table_transform/properties.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'forwardable'

module TableTransform

  class Properties
    extend Forwardable
    def_delegators :@props, :delete, :each, :[]

    def initialize(init_properties = {})
      validate(init_properties)
      @props = init_properties.clone
    end

    def validate(properties)
      raise 'Default properties must be a hash' unless properties.is_a? Hash
    end

    def to_h
      @props.clone
    end

    def update(properties)
      validate(properties)
      @props.merge! properties
    end

    def reset(properties)
      validate(properties)
      @props = properties
    end

  end

end