month.rb 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/Array/extract_optionsX.rb +14 -0
- data/lib/Date/to_month.rb +12 -0
- data/lib/Month/Constants.rb +31 -0
- data/lib/Month/VERSION.rb +6 -0
- data/lib/Month/_comparator.rb +18 -0
- data/lib/Month/begin_date.rb +13 -0
- data/lib/Month/beginning.rb +13 -0
- data/lib/Month/beginning_of_month.rb +13 -0
- data/lib/Month/beginning_of_the_month.rb +13 -0
- data/lib/Month/cdate.rb +13 -0
- data/lib/Month/cdates.rb +13 -0
- data/lib/Month/date.rb +13 -0
- data/lib/Month/dates.rb +13 -0
- data/lib/Month/day.rb +12 -0
- data/lib/Month/day_long.rb +12 -0
- data/lib/Month/day_short.rb +12 -0
- data/lib/Month/day_shortest.rb +12 -0
- data/lib/Month/days.rb +13 -0
- data/lib/Month/days_in_month.rb +10 -0
- data/lib/Month/days_in_the_month.rb +10 -0
- data/lib/Month/each_day.rb +13 -0
- data/lib/Month/end.rb +13 -0
- data/lib/Month/end_date.rb +13 -0
- data/lib/Month/end_of_month.rb +13 -0
- data/lib/Month/end_of_the_month.rb +13 -0
- data/lib/Month/eqlQ.rb +11 -0
- data/lib/Month/finish.rb +13 -0
- data/lib/Month/finish_date.rb +13 -0
- data/lib/Month/finish_of_month.rb +13 -0
- data/lib/Month/finish_of_the_month.rb +13 -0
- data/lib/Month/hash.rb +12 -0
- data/lib/Month/initialize.rb +27 -0
- data/lib/Month/last.rb +13 -0
- data/lib/Month/last_month.rb +13 -0
- data/lib/Month/last_year.rb +13 -0
- data/lib/Month/method_missing.rb +21 -0
- data/lib/Month/minus.rb +20 -0
- data/lib/Month/next.rb +13 -0
- data/lib/Month/next_month.rb +13 -0
- data/lib/Month/next_year.rb +13 -0
- data/lib/Month/plus.rb +16 -0
- data/lib/Month/prev.rb +13 -0
- data/lib/Month/prev_month.rb +13 -0
- data/lib/Month/previous.rb +13 -0
- data/lib/Month/previous_month.rb +13 -0
- data/lib/Month/prior.rb +12 -0
- data/lib/Month/prior_month.rb +13 -0
- data/lib/Month/self.begin_date.rb +23 -0
- data/lib/Month/self.beginning.rb +12 -0
- data/lib/Month/self.beginning_of_month.rb +12 -0
- data/lib/Month/self.beginning_of_the_month.rb +12 -0
- data/lib/Month/self.cdate.rb +36 -0
- data/lib/Month/self.cdates.rb +54 -0
- data/lib/Month/self.date.rb +36 -0
- data/lib/Month/self.dates.rb +54 -0
- data/lib/Month/self.day.rb +20 -0
- data/lib/Month/self.day_long.rb +12 -0
- data/lib/Month/self.day_short.rb +20 -0
- data/lib/Month/self.day_shortest.rb +20 -0
- data/lib/Month/self.days.rb +31 -0
- data/lib/Month/self.days_in_month.rb +12 -0
- data/lib/Month/self.days_in_the_month.rb +12 -0
- data/lib/Month/self.end.rb +12 -0
- data/lib/Month/self.end_date.rb +24 -0
- data/lib/Month/self.end_of_month.rb +12 -0
- data/lib/Month/self.end_of_the_month.rb +12 -0
- data/lib/Month/self.finish.rb +12 -0
- data/lib/Month/self.finish_date.rb +12 -0
- data/lib/Month/self.finish_of_month.rb +12 -0
- data/lib/Month/self.finish_of_the_month.rb +12 -0
- data/lib/Month/self.from_date.rb +14 -0
- data/lib/Month/self.last.rb +12 -0
- data/lib/Month/self.last_month.rb +12 -0
- data/lib/Month/self.last_year.rb +14 -0
- data/lib/Month/self.method_missing.rb +20 -0
- data/lib/Month/self.next.rb +28 -0
- data/lib/Month/self.next_month.rb +12 -0
- data/lib/Month/self.next_year.rb +14 -0
- data/lib/Month/self.now.rb +12 -0
- data/lib/Month/self.of.rb +37 -0
- data/lib/Month/self.prev.rb +28 -0
- data/lib/Month/self.prev_month.rb +12 -0
- data/lib/Month/self.previous.rb +12 -0
- data/lib/Month/self.previous_month.rb +12 -0
- data/lib/Month/self.prior.rb +12 -0
- data/lib/Month/self.prior_month.rb +12 -0
- data/lib/Month/self.start.rb +12 -0
- data/lib/Month/self.start_date.rb +12 -0
- data/lib/Month/self.start_of_month.rb +12 -0
- data/lib/Month/self.start_of_the_month.rb +12 -0
- data/lib/Month/self.succ.rb +12 -0
- data/lib/Month/self.succ_month.rb +12 -0
- data/lib/Month/self.successor.rb +12 -0
- data/lib/Month/self.successor_month.rb +12 -0
- data/lib/Month/self.this.rb +15 -0
- data/lib/Month/self.to_i.rb +13 -0
- data/lib/Month/self.to_long.rb +20 -0
- data/lib/Month/self.to_num.rb +20 -0
- data/lib/Month/self.to_number.rb +12 -0
- data/lib/Month/self.to_short.rb +20 -0
- data/lib/Month/self.today.rb +12 -0
- data/lib/Month/self.wday.rb +20 -0
- data/lib/Month/start.rb +13 -0
- data/lib/Month/start_date.rb +13 -0
- data/lib/Month/start_of_month.rb +13 -0
- data/lib/Month/start_of_the_month.rb +13 -0
- data/lib/Month/succ.rb +13 -0
- data/lib/Month/succ_month.rb +13 -0
- data/lib/Month/successor.rb +13 -0
- data/lib/Month/successor_month.rb +13 -0
- data/lib/Month/to_date.rb +13 -0
- data/lib/Month/to_i.rb +13 -0
- data/lib/Month/to_long.rb +13 -0
- data/lib/Month/to_num.rb +13 -0
- data/lib/Month/to_number.rb +13 -0
- data/lib/Month/to_s.rb +18 -0
- data/lib/Month/to_short.rb +13 -0
- data/lib/Month.rb +11 -0
- metadata +178 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ce3ea0d18a09b473fd683d198aa9fd6f6659cf481b4b8675794d28a486c68443
|
4
|
+
data.tar.gz: c5d6a37c5b8e13e7982aa39d2722264adc03cb1eda1fe8bb3f36c783f154fd14
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ce09f0feae95b3d85e5a35ffcf56d3f2ddb4c96a91d822aeed0d43150ae525ee5a89ab16ae248c6a720e3fd0ff9c93887257850e178ec143f106d9bff203fe82
|
7
|
+
data.tar.gz: '083f31fbbbfe7301bce3985d09409ce56a0857650c0d2ed96974b08d5226e855f80b4690b7da2b4daca0f0fa1d3cc67d06bd76ef3d9e25555a83211fee824bf2'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Month/Constants.rb
|
2
|
+
# Month::Constants
|
3
|
+
|
4
|
+
require 'date'
|
5
|
+
|
6
|
+
class Month
|
7
|
+
module Constants
|
8
|
+
MONTH_NAMES_LONG = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] unless defined?(MONTH_NAMES_LONG)
|
9
|
+
MONTH_NAMES_SHORT = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] unless defined?(MONTH_NAMES_SHORT)
|
10
|
+
MONTH_NUMBERS = 1..12 unless defined?(MONTH_NUMBERS)
|
11
|
+
MONTH_NUMBERS_AS_STRINGS = '1'..'12' unless defined?(MONTH_NUMBERS_AS_STRINGS)
|
12
|
+
|
13
|
+
MONTH_DAYS = [31, Proc.new{|year| Date.leap?(year) ? 29 : 28}, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] unless defined?(MONTH_DAYS)
|
14
|
+
|
15
|
+
MONTH_DAY_NUMBERS = 1..31 unless defined?(MONTH_DAY_NUMBERS)
|
16
|
+
|
17
|
+
ISO_8601_WEEK_DAY_NAMES_LONG = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] unless defined?(ISO_8601_WEEK_DAY_NAMES_LONG)
|
18
|
+
ISO_8601_WEEK_DAY_NAMES_SHORT = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] unless defined?(ISO_8601_WEEK_DAY_NAMES_SHORT)
|
19
|
+
ISO_8601_WEEK_DAY_NAMES_SHORTEST = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'] unless defined?(ISO_8601_WEEK_DAY_NAMES_SHORTEST)
|
20
|
+
ISO_8601_WEEK_DAY_NUMBERS = 1..7 unless defined?(ISO_8601_WEEK_DAY_NUMBERS)
|
21
|
+
ISO_8601_WEEK_DAY_NUMBERS_AS_STRINGS = '1'..'7' unless defined?(ISO_8601_WEEK_DAY_NUMBERS_AS_STRINGS)
|
22
|
+
|
23
|
+
WEEK_DAY_NAMES_LONG = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'] unless defined?(WEEK_DAY_NAMES_LONG)
|
24
|
+
WEEK_DAY_NAMES_SHORT = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] unless defined?(WEEK_DAY_NAMES_SHORT)
|
25
|
+
WEEK_DAY_NAMES_SHORTEST = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] unless defined?(WEEK_DAY_NAMES_SHORTEST)
|
26
|
+
WEEK_DAY_NUMBERS = 0..6 unless defined?(WEEK_DAY_NUMBERS)
|
27
|
+
WEEK_DAY_NUMBERS_AS_STRINGS = '0'..'6' unless defined?(WEEK_DAY_NUMBERS_AS_STRINGS)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Month.extend(Month::Constants)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Month/_comparator.rb
|
2
|
+
# Month#<=>
|
3
|
+
|
4
|
+
require 'Month/initialize'
|
5
|
+
|
6
|
+
class Month
|
7
|
+
|
8
|
+
include Comparable
|
9
|
+
|
10
|
+
def <=>(other_month)
|
11
|
+
if year == other_month.year
|
12
|
+
month <=> other_month.month
|
13
|
+
else
|
14
|
+
year <=> other_month.year
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
data/lib/Month/cdate.rb
ADDED
data/lib/Month/cdates.rb
ADDED
data/lib/Month/date.rb
ADDED
data/lib/Month/dates.rb
ADDED
data/lib/Month/day.rb
ADDED
data/lib/Month/days.rb
ADDED
data/lib/Month/end.rb
ADDED
data/lib/Month/eqlQ.rb
ADDED
data/lib/Month/finish.rb
ADDED
data/lib/Month/hash.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Month/initialize.rb
|
2
|
+
# Month#initialize
|
3
|
+
|
4
|
+
# Notes:
|
5
|
+
# 1. With a view to compatibility with Francis Hwang's version of a Month class, and as a nod to Ruby's Date class, I have made it possible to supply the year optionally, but first, rather than second if there are two arguments.
|
6
|
+
# 2. It might actually be nice if the Date class worked the same way.
|
7
|
+
# 3. Generally I find it the Ruby way to assume that which can be assumed, and to only require explicitness when necessary. In this instance that means that if I instantiate an object with a month only, then I should be able to assume the year.
|
8
|
+
|
9
|
+
require 'date'
|
10
|
+
|
11
|
+
class Month
|
12
|
+
|
13
|
+
attr_reader :month, :year
|
14
|
+
|
15
|
+
def initialize(*args)
|
16
|
+
@year, @month = (
|
17
|
+
case args.size
|
18
|
+
when 0; [Date.today.year, Date.today.month]
|
19
|
+
when 1; [Date.today.year, args[0]]
|
20
|
+
when 2; [args[0], args[1]]
|
21
|
+
else; raise ArgumentError, "too many arguments (#{args.size} for 0, 1, or 2)"
|
22
|
+
end
|
23
|
+
)
|
24
|
+
fail unless (1..12).include?(@month)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/lib/Month/last.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# Month/method_missing.rb
|
2
|
+
# Month#method_missing
|
3
|
+
|
4
|
+
require 'Month/self.dates'
|
5
|
+
|
6
|
+
class Month
|
7
|
+
|
8
|
+
def method_missing(method_name, *args, &block)
|
9
|
+
case method_name.to_s
|
10
|
+
when /^((m|M)o)|((m|M)on)(day|days)*$/; Month.dates(year, month, :day => 'Monday')
|
11
|
+
when /^((t|T)u)|((t|T)ue)(sday|sdays)*$/; Month.dates(year, month, :day => 'Tuesday')
|
12
|
+
when /^((w|W)e)|((w|W)ed)(nesday|nesdays)*$/; Month.dates(year, month, :day => 'Wednesday')
|
13
|
+
when /^((t|T)h)|((t|T)hu)(rsday|rsdays)*$/; Month.dates(year, month, :day => 'Thursday')
|
14
|
+
when /^((f|F)r)|((f|F)ri)(day|days)*$/; Month.dates(year, month, :day => 'Friday')
|
15
|
+
when /^((s|S)a)|((s|S)at)(urday|urdays)*$/; Month.dates(year, month, :day => 'Saturday')
|
16
|
+
when /^((s|S)u)|((s|S)un)(day|days)*$/; Month.dates(year, month, :day => 'Sunday')
|
17
|
+
else; super(method_name, *args, &block)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/lib/Month/minus.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Month/minus.rb
|
2
|
+
# Month#minus
|
3
|
+
|
4
|
+
require 'Month/initialize'
|
5
|
+
|
6
|
+
class Month
|
7
|
+
|
8
|
+
def minus(subtracted_months)
|
9
|
+
subtracted_years, remaining_months = subtracted_months.divmod(12)
|
10
|
+
preliminary_year = self.year - subtracted_years
|
11
|
+
if self.month > remaining_months
|
12
|
+
year, month = preliminary_year, self.month - remaining_months
|
13
|
+
else
|
14
|
+
year, month = preliminary_year - 1, 12 - (remaining_months - self.month)
|
15
|
+
end
|
16
|
+
Month.new(year, month)
|
17
|
+
end
|
18
|
+
alias_method :-, :minus
|
19
|
+
|
20
|
+
end
|
data/lib/Month/next.rb
ADDED
data/lib/Month/plus.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Month/plus.rb
|
2
|
+
# Month#plus
|
3
|
+
|
4
|
+
require 'Month/initialize'
|
5
|
+
|
6
|
+
class Month
|
7
|
+
|
8
|
+
def plus(added_months)
|
9
|
+
added_years, remaining_months = added_months.divmod(12)
|
10
|
+
overflow_year, month = (self.month + remaining_months).divmod(12)
|
11
|
+
year = self.year + added_years + overflow_year
|
12
|
+
Month.new(year, month)
|
13
|
+
end
|
14
|
+
alias_method :+, :plus
|
15
|
+
|
16
|
+
end
|
data/lib/Month/prev.rb
ADDED