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