summaryrefslogtreecommitdiffhomepage
path: root/mrblib/class.rb
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-08-13 16:55:06 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-08-13 16:55:06 +0900
commit6b015ec775571b2cbe96ae1545dd97991fbaf34a (patch)
tree50cb903834f528d7d655a3011d26b6573b191d8d /mrblib/class.rb
parent779738b597f445ed32b85be60a4f390a37ec139a (diff)
downloadmruby-6b015ec775571b2cbe96ae1545dd97991fbaf34a.tar.gz
mruby-6b015ec775571b2cbe96ae1545dd97991fbaf34a.zip
define Class#new in ruby to call #initialize
Diffstat (limited to 'mrblib/class.rb')
-rw-r--r--mrblib/class.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/mrblib/class.rb b/mrblib/class.rb
index 6d624ee83..57aac2f93 100644
--- a/mrblib/class.rb
+++ b/mrblib/class.rb
@@ -1,10 +1,23 @@
+class Class
+ def new(*args,&b)
+ obj = self.alloc
+ obj.initialize(*args,&b)
+ obj
+ end
+ def self.new(*args)
+ obj = super
+ obj.inerited
+ obj
+ end
+end
+
class Module
# 15.2.2.4.13
def attr_reader(*names)
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?('$')
-
+
attr_name = '@'+name
define_method(name){self.instance_variable_get(attr_name)}
end
@@ -14,7 +27,7 @@ class Module
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?('$')
-
+
attr_name = '@'+name
name = (name+"=").intern
define_method(name){|v|self.instance_variable_set(attr_name,v)}