We should strive to implement the 1.8.7 improvements
----------------------------------------------------
Key: JRUBY-2398
URL: http://jira.codehaus.org/browse/JRUBY-2398
Project: JRuby
Issue Type: Improvement
Components: Core Classes/Modules
Reporter: Ola Bini
Priority: Minor
There is some very nice stuff in Ruby 1.8.7. We should try to implement most of
it as quickly as possible. Among the things that I felt was extra nice are
these (most of them concern Enumerator, but there are some other things too):
* object.c (rb_obj_tap): new method Object#tap; backported from
1.9. bug#19008
* numeric.c (int_odd_p): new method Integer#odd?.
(int_even_p): new method Integer#even?.
(int_pred): new method Integer#pred.
(fix_odd_p): new method Fixnum#odd?.
(fix_even_p): new method Fixnum#even?.
* enumerator.c, inits.c (rb_call_inits), ruby.h, intern.h,
ext/enumerator, common.mk (OBJS, enumerator.$(OBJEXT)): Make the
enumerator module built-in.
* enumerator.c: New method: Enumerable::Enumerator#with_index.
* enum.c (enum_each_with_index): Enumerable#each_with_index now
returns an enumerator instead of raising an exception if no
block is given. Enumerable#enum_with_index, formerly defined in
the enumerator module, is kept as an alias to each_with_index
for backward compatibility.
* array.c (rb_ary_each, rb_ary_each_index, rb_ary_reverse_each,
rb_ary_reject, rb_ary_reject_bang): Array#each, #each_index,
#reverse_each, #reject, #reject! and #delete_if return an
enumerator if no block is given; backported from 1.9.
* enumerator.c (rb_eStopIteration), eval.c (rb_f_loop), ruby.h:
Add a new exception class StopIteration, which breaks Kernel#loop
iteration when raised; backported from 1.9.
* enum.c (enum_first, enum_group_by): New methods:
Enumerable#first and #group_by; backported from 1.9.
* range.c (range_each, range_step): Return an enumerator if no
block is given; backported from 1.9.
* enum.c (enum_count, enum_find_index): New methods:
Enumerable#count and #find_index; backported from 1.9.
* array.c (rb_ary_collect_bang, rb_ary_select): Return an
enumerator if no block is given; backported from 1.9.
* dir.c (dir_each, dir_foreach): Ditto.
* enum.c (enum_partition, enum_sort_by): Ditto.
* gc.c (os_each_obj): Ditto.
* hash.c (rb_hash_delete_if, rb_hash_reject_bang, rb_hash_select,
rb_hash_each_value, rb_hash_each_key, rb_hash_each_pair,
env_each_key, env_each_value, env_each, env_each_pair,
env_reject_bang, env_delete_if, env_select): Ditto.
* numeric.c (num_step, int_upto, int_downto, int_dotimes): Ditto.
* enum.c (enum_find, enum_reject): Return an enumerator if no
block is given; backported from 1.9.
* io.c (rb_io_each_line, rb_io_each_byte, rb_io_s_foreach,
argf_each_line, argf_each_byte): Ditto.
* string.c (str_gsub): Ditto.
* enum.c: New methods: Enumerable#one?, #none?, #minmax, #min_by,
#max_by, #minmax_by and #cycle; backported from 1.9.
* enum.c (enum_find_index): Add support for find_index(obj);
[ruby-dev:34313]; backported from 1.9.
* enum.c (enum_inject): Add support for Enumerable#inject(:binop);
backported from 1.9.
* enum.c: Alias Enumerable#reject to #inject; backported from 1.9.
* enum.c New methods: Enumerable#take, #take_while, #drop and
#drop_while; backported from 1.9.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email