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