44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/string-mapper.rb', line 44
def self.add_mapper(name, mappings = {}, &def_val_block)
accessor = "#{name}_mappings"
cattr_accessor(accessor)
self.send accessor + '=', mappings
define_method "to_#{name}" do
mapping = nil
String.send(accessor).each do |key, value|
regexp = if key.is_a?(Regexp)
key
else
Regexp.new(key.to_s, Regexp::IGNORECASE)
end
if self =~ regexp
mapping = if value.is_a?(String)
eval('"'+value+'"')
elsif value.is_a?(Proc)
value.call
else
value
end
break
end
end
if mapping.nil?
(def_val_block && def_val_block.call(self))
else
mapping
end
end
end
|