summaryrefslogtreecommitdiffhomepage
path: root/mrblib
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2013-06-15 03:53:50 +0800
committerDaniel Bovensiepen <[email protected]>2013-06-15 03:53:50 +0800
commit373122a299ebec890cfaa95ee41fde221ac6a543 (patch)
tree346e79bb8a30a4e0b4102babf7dd9407beb36979 /mrblib
parentad07d41bd1b42fe7d23e04361839f511c5f9cd7f (diff)
parent961cd408a86580c4d428f56153da00fd46738e35 (diff)
downloadmruby-373122a299ebec890cfaa95ee41fde221ac6a543.tar.gz
mruby-373122a299ebec890cfaa95ee41fde221ac6a543.zip
Merge upstream
Diffstat (limited to 'mrblib')
-rw-r--r--mrblib/class.rb24
-rw-r--r--mrblib/string.rb12
2 files changed, 27 insertions, 9 deletions
diff --git a/mrblib/class.rb b/mrblib/class.rb
index 4f268b6c8..6d624ee83 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
- define_method(name){self.instance_variable_get(name2)}
- }
+ 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
end
# 15.2.2.4.14
def attr_writer(*names)
- names.each{|name|
- name2 = ('@'+name.to_s).intern
- name = (name.to_s+"=").intern
- define_method(name){|v|self.instance_variable_set(name2,v)}
- }
+ 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)}
+ end
end
# 15.2.2.4.12
def attr_accessor(*names)
diff --git a/mrblib/string.rb b/mrblib/string.rb
index 131d30446..49f87be8b 100644
--- a/mrblib/string.rb
+++ b/mrblib/string.rb
@@ -133,6 +133,18 @@ class String
a = self[pos+1..-1]
self.replace([b, value, a].join(''))
end
+
+ ##
+ # ISO 15.2.10.5.5
+ def =~(re)
+ re =~ self
+ end
+
+ ##
+ # ISO 15.2.10.5.27
+ def match(re, &block)
+ re.match(self, &block)
+ end
end
##