diff options
Diffstat (limited to 'guides/source/active_support_core_extensions.md')
-rw-r--r-- | guides/source/active_support_core_extensions.md | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/guides/source/active_support_core_extensions.md b/guides/source/active_support_core_extensions.md index 2a84242b9c..f990b4f79f 100644 --- a/guides/source/active_support_core_extensions.md +++ b/guides/source/active_support_core_extensions.md @@ -2867,8 +2867,16 @@ The method `extract!` removes and returns the key/value pairs matching the given ```ruby hash = {:a => 1, :b => 2} -rest = hash.extract!(:a) # => {:a => 1} -hash # => {:b => 2} +rest = hash.extract!(:a, :x) # => {:a => 1} # non-existing keys are ignored +hash # => {:b => 2} +``` + +The method `extract!` returns the same subclass of Hash, that the receiver is. + +```ruby +hash = {:a => 1, :b => 2}.with_indifferent_access +rest = hash.extract!(:a).class +# => ActiveSupport::HashWithIndifferentAccess ``` NOTE: Defined in `active_support/core_ext/hash/slice.rb`. @@ -3097,7 +3105,8 @@ Time.local(2000, 11, 31).next_quarter # => Wed, 28 Feb 2001 The methods `beginning_of_week` and `end_of_week` return the dates for the beginning and end of the week, respectively. Weeks are assumed to start on -Monday, but that can be changed passing an argument. +Monday, but that can be changed passing an argument, setting thread local +`Date.beginning_of_week` or `config.beginning_of_week`. ```ruby d = Date.new(2010, 5, 8) # => Sat, 08 May 2010 @@ -3111,18 +3120,24 @@ d.end_of_week(:sunday) # => Sat, 08 May 2010 ##### `monday`, `sunday` -The methods `monday` and `sunday` return the dates for the beginning and -end of the week, respectively. Weeks are assumed to start on Monday. +The methods `monday` and `sunday` return the dates for the previous Monday and +next Sunday, respectively. ```ruby d = Date.new(2010, 5, 8) # => Sat, 08 May 2010 d.monday # => Mon, 03 May 2010 d.sunday # => Sun, 09 May 2010 + +d = Date.new(2012, 9, 10) # => Mon, 10 Sep 2012 +d.monday # => Mon, 10 Sep 2012 + +d = Date.new(2012, 9, 16) # => Sun, 16 Sep 2012 +d.sunday # => Sun, 16 Sep 2012 ``` ##### `prev_week`, `next_week` -The method `next_week` receives a symbol with a day name in English (in lowercase, default is `:monday`) and it returns the date corresponding to that day: +The method `next_week` receives a symbol with a day name in English (default is the thread local `Date.beginning_of_week`, or `config.beginning_of_week`, or `:monday`) and it returns the date corresponding to that day. ```ruby d = Date.new(2010, 5, 9) # => Sun, 09 May 2010 @@ -3140,6 +3155,8 @@ d.prev_week(:friday) # => Fri, 30 Apr 2010 `prev_week` is aliased to `last_week`. +Both `next_week` and `prev_week` work as expected when `Date.beginning_of_week` or `config.beginning_of_week` are set. + ##### `beginning_of_month`, `end_of_month` The methods `beginning_of_month` and `end_of_month` return the dates for the beginning and end of the month: @@ -3617,6 +3634,8 @@ now = Time.current # => Mon, 09 Aug 2010 23:20:05 UTC +00:00 now.all_week # => Mon, 09 Aug 2010 00:00:00 UTC +00:00..Sun, 15 Aug 2010 23:59:59 UTC +00:00 +now.all_week(:sunday) +# => Sun, 16 Sep 2012 00:00:00 UTC +00:00..Sat, 22 Sep 2012 23:59:59 UTC +00:00 now.all_month # => Sat, 01 Aug 2010 00:00:00 UTC +00:00..Tue, 31 Aug 2010 23:59:59 UTC +00:00 now.all_quarter |