month.rb 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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