24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/maruku/structures.rb', line 24
def safe_attr_accessor1(symbol, klass)
attr_reader symbol
code = "def \#{symbol}=(val) \n if not val.kind_of? \#{klass}\n s = \"\\nCould not assign an object of type \\\#{val.class} to \#{symbol}.\\n\\n\"\n s += \"Tried to assign object of class \\\#{val.class}:\\n\"+\n \"\\\#{val.inspect}\\n\"+\n \"to \\\#{self.class}::\#{symbol} constrained to be of class \#{klass}.\\n\"\n raise s\n end\n @\#{symbol} = val\nend\n\n"
module_eval code
end
|