def value=(new_value)
case (@data_type)
when 'string'
if (new_value && new_value.empty? && ! @nonnil) then
@value.call(nil)
else
@value.call(new_value)
end
when 'integer'
CheckUtil.check_integer(new_value)
@value.call(new_value.to_i)
when 'float'
CheckUtil.check_float(new_value)
@value.call(new_value.to_f)
when 'bool'
case (new_value)
when 'true'
@value.call(true)
when 'false'
@value.call(false)
else
raise "not a boolean: #{new_value.inspect}"
end
else
raise "internal error: #{@data_type.inspect}"
end
end