Sha256: d65a57d1504c995c5da6713b020d3c2727b42c6ed625bf2e99484f8098d11c1a

Contents?: true

Size: 782 Bytes

Versions: 1

Compression:

Stored size: 782 Bytes

Contents

require "yaml"

module DataSet
  module DataAccessor
    def method_missing(*args, &block)
      load_data_source unless @data_source
      key = args.first
      value = @data_source[key.to_s]
      value = args[1] if value.nil?
      super if value.nil?
      value = DataSet::DataElement.new(value) unless type_known?(value)
      value
    end

    def respond_to_missing?; end

    def load_data_source
      @data_source = nil
      path = "#{data_path}/#{ENV['DATA_SET_FILE']}"
      @yml = YAML.load_file path if ENV['DATA_SET_FILE']
      DataSet.load('default.yml') if @data_set.nil?
    end

    private

    def type_known?(value)
      known_types = [String, Integer, TrueClass, FalseClass, Symbol]
      known_types.any? { |type| value.is_a?(type) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
data_set-1.0.0 lib/data_set/data_accessor.rb