summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-03-17 00:34:47 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-03-17 00:34:47 +0900
commited2fe640767ca8852ebae91285d1b5091ecf2556 (patch)
tree434aec89aa37fc4af64dc13bb732a2fd3b838ca9
parent75a4f1ac962521a73d156ae270422435d9446ba6 (diff)
downloadmruby-ed2fe640767ca8852ebae91285d1b5091ecf2556.tar.gz
mruby-ed2fe640767ca8852ebae91285d1b5091ecf2556.zip
Enumerable#entries to support multiple values; close #1868
-rw-r--r--mrblib/array.rb12
-rw-r--r--mrblib/enum.rb5
2 files changed, 15 insertions, 2 deletions
diff --git a/mrblib/array.rb b/mrblib/array.rb
index aa50ac181..8c81d80f1 100644
--- a/mrblib/array.rb
+++ b/mrblib/array.rb
@@ -97,6 +97,18 @@ class Array
ret
end
end
+
+ # internal method to convert multi-value to single value
+ def __to_svalue
+ case self.size
+ when 0
+ return nil
+ when 1
+ self[0]
+ else
+ self
+ end
+ end
end
##
diff --git a/mrblib/enum.rb b/mrblib/enum.rb
index 53f2119b0..1e78e39cc 100644
--- a/mrblib/enum.rb
+++ b/mrblib/enum.rb
@@ -129,8 +129,9 @@ module Enumerable
# ISO 15.3.2.2.6
def entries
ary = []
- self.each{|val|
- ary.push val
+ self.each{|*val|
+ # __to_svalue is an internal method
+ ary.push val.__to_svalue
}
ary
end