lib/data_miner/dictionary.rb in data_miner-0.5.7 vs lib/data_miner/dictionary.rb in data_miner-1.0.0

- old
+ new

@@ -1,32 +1,45 @@ -module DataMiner +class DataMiner class Dictionary - attr_accessor :key_name, :value_name, :sprintf, :table - + attr_reader :options def initialize(options = {}) - @key_name = options[:input] - @value_name = options[:output] - @sprintf = options[:sprintf] || '%s' - @table = RemoteTable.new(:url => options[:url]) + @options = options.dup + @options.stringify_keys! end + + def key_name + options['input'] + end + + def value_name + options['output'] + end + + def sprintf + options['sprintf'] || '%s' + end + + def table + @table ||= ::RemoteTable.new options['url'] + end def lookup(key) - find(self.key_name, key, self.value_name, :sprintf => self.sprintf) + find key_name, key, value_name, 'sprintf' => sprintf end def find(key_name, key, value_name, options = {}) - if match = table.rows.detect { |row| normalize_for_comparison(key, options) == normalize_for_comparison(row[key_name], options) } + if match = table.detect { |row| normalize_for_comparison(key, options) == normalize_for_comparison(row[key_name], options) } match[value_name].to_s end end private def normalize_for_comparison(string, options = {}) - if options[:sprintf] - if /\%[0-9\.]*f/.match(options[:sprintf]) + if options['sprintf'] + if /\%[0-9\.]*f/.match options['sprintf'] string = string.to_f - elsif /\%[0-9\.]*d/.match(options[:sprintf]) + elsif /\%[0-9\.]*d/.match options['sprintf'] string = string.to_i end string = sprintf % string end string.to_s.strip