summaryrefslogtreecommitdiffhomepage
path: root/mrblib/kernel.rb
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-03-14 02:41:22 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-03-14 02:41:22 +0900
commit113ab607846e63c0348758d3e13017e0ea3a45a3 (patch)
tree379aa985de0a4c1a148bc693b2207eaf66d44bc3 /mrblib/kernel.rb
parent463c5f83c3e5f379d4dd59deb17179915fbaf93b (diff)
downloadmruby-113ab607846e63c0348758d3e13017e0ea3a45a3.tar.gz
mruby-113ab607846e63c0348758d3e13017e0ea3a45a3.zip
mruby-enumerator: move definitions in core_mod.rb to mrblib core
Diffstat (limited to 'mrblib/kernel.rb')
-rw-r--r--mrblib/kernel.rb21
1 files changed, 15 insertions, 6 deletions
diff --git a/mrblib/kernel.rb b/mrblib/kernel.rb
index 0277a1b83..fd4dc04ac 100644
--- a/mrblib/kernel.rb
+++ b/mrblib/kernel.rb
@@ -18,11 +18,12 @@ module Kernel
# Calls the given block repetitively.
#
# ISO 15.3.1.2.8
- def self.loop #(&block)
- while(true)
- yield
- end
- end
+ # provided by Kernel#loop
+ # def self.loop #(&block)
+ # while(true)
+ # yield
+ # end
+ # end
# 15.3.1.2.3
def self.eval(s)
@@ -38,14 +39,22 @@ module Kernel
# Alias for +Kernel.loop+.
#
# ISO 15.3.1.3.29
- def loop #(&block)
+ def loop
+ return to_enum :loop unless block_given?
+
while(true)
yield
end
+ rescue => StopIteration
+ nil
end
# 11.4.4 Step c)
def !~(y)
!(self =~ y)
end
+
+ def to_enum(*a)
+ raise NotImplementedError.new("fiber required for enumerator")
+ end
end