Sha256: 216e14447c70e009fecac7ca41a211e9507f60c6f6d3f32ba205590af387d8f5
Contents?: true
Size: 1.09 KB
Versions: 7
Compression:
Stored size: 1.09 KB
Contents
require 'remote_table' class DataMiner class Dictionary attr_reader :options def initialize(options = {}) @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 key_name, key, value_name, 'sprintf' => sprintf end def find(key_name, key, value_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'] string = string.to_f elsif /\%[0-9\.]*d/.match options['sprintf'] string = string.to_i end string = sprintf % string end string.to_s.strip end end end
Version data entries
7 entries across 7 versions & 1 rubygems