227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
|
# File 'lib/named_arguments.rb', line 227
def type_converter field, new_klass
alias_name = ('attribute_setter_for_' + field.to_s).to_sym
setter_method_name = (field.to_s + '=').to_sym
alias_method alias_name, setter_method_name
send :define_method, setter_method_name do |rhs|
if Integer === new_klass
v = rhs.to_i
elsif new_klass == String
v = rhs.to_s
elsif new_klass == Symbol
v = rhs.to_sym
elsif new_klass == :boolean
v = !!rhs
elsif Proc === new_klass
v = new_klass.call v
else
v = new_klass.new rhs
end
self.send alias_name, v
end
end
|