diff options
| author | Ryan Scott <[email protected]> | 2013-07-19 22:39:54 +1000 |
|---|---|---|
| committer | Ryan Scott <[email protected]> | 2013-07-19 22:39:54 +1000 |
| commit | fe5324bd17d1716592b244762173e7478ebf7853 (patch) | |
| tree | d29947383258a6215c5eb1bf7617e11ddd8f1f27 /mrblib | |
| parent | 958d5b763df9cbfbf0173d35ba0ba27934f16394 (diff) | |
| download | mruby-fe5324bd17d1716592b244762173e7478ebf7853.tar.gz mruby-fe5324bd17d1716592b244762173e7478ebf7853.zip | |
Wrote tests around attr, attr_reader, attr_writer, attr_accessor
Diffstat (limited to 'mrblib')
| -rw-r--r-- | mrblib/class.rb | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/mrblib/class.rb b/mrblib/class.rb index 4f268b6c8..0678d943d 100644 --- a/mrblib/class.rb +++ b/mrblib/class.rb @@ -1,18 +1,24 @@ class Module # 15.2.2.4.13 def attr_reader(*names) - names.each{|name| - name2 = ('@'+name.to_s).intern + names.each do |name| + name = name.to_s + raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$') + + name2 = ('@'+name).intern define_method(name){self.instance_variable_get(name2)} - } + end end # 15.2.2.4.14 def attr_writer(*names) - names.each{|name| - name2 = ('@'+name.to_s).intern - name = (name.to_s+"=").intern + names.each do |name| + name = name.to_s + raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$') + + name2 = ('@'+name).intern + name = (name+"=").intern define_method(name){|v|self.instance_variable_set(name2,v)} - } + end end # 15.2.2.4.12 def attr_accessor(*names) |
