2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/coerced_attr_writer/core_ext/class.rb', line 2
def coerced_attr_writer(*attributes)
setter_methods = _coerced_attr_writer_setters
attributes.each do |attribute|
java_setter_name = _coerced_setter_name(attribute)
camel_writer_name = _coerced_camel_writer_name(attribute)
coercion_type = "#{setter_methods[java_setter_name]}"
class_eval " def \#{attribute}=(val)\n unless val.is_a?(\#{coercion_type})\n val = val.to_java(\#{coercion_type})\n end\n\n set_\#{attribute}(val)\n end\n RUBY\n\n # Do not want to overwrite the first with the second\n # if this is a simple setter\n unless \"\#{attribute}\" == camel_writer_name\n class_eval <<-RUBY, __FILE__, __LINE__ + 1\n def \#{camel_writer_name}=(val)\n unless val.is_a?(\#{coercion_type})\n val = val.to_java(\#{coercion_type})\n end\n\n set_\#{attribute}(val)\n end\n RUBY\n end\n end\nend\n", __FILE__, __LINE__ + 1
|