ttilley-time_crisis 0.0.1 → 0.0.2
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.
- data/.gitignore +1 -0
- data/README.markdown +57 -0
- data/VERSION.yml +2 -2
- data/lib/time_crisis/date_range.rb +88 -40
- data/lib/time_crisis/meteorological_seasons.rb +18 -18
- data/lib/time_crisis/named_months.rb +1 -1
- data/lib/time_crisis/support/advance.rb +2 -2
- data/lib/time_crisis/support/change.rb +14 -14
- data/lib/time_crisis/support/conversions.rb +13 -13
- data/lib/time_crisis/support/current.rb +2 -2
- data/lib/time_crisis/support/days_in_month.rb +1 -1
- data/lib/time_crisis/support/readable_inspect.rb +7 -7
- data/time_crisis.gemspec +4 -4
- metadata +4 -4
- data/README.rdoc +0 -7
data/.gitignore
CHANGED
data/README.markdown
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
Arbitrary Date Ranges
|
2
|
+
=====================
|
3
|
+
|
4
|
+
You can create a Range with a beginning and end Date using the convenience methods 'for' and 'from'. 'for' will create a range into the future while 'from' creates a range into the past.
|
5
|
+
|
6
|
+
Date.today.for(2, 'years')
|
7
|
+
=> Fri, 18 Sep 2009..Sat, 17 Sep 2011
|
8
|
+
|
9
|
+
Date.today.from(2, 'years')
|
10
|
+
=> Wed, 19 Sep 2007..Fri, 18 Sep 2009
|
11
|
+
|
12
|
+
If you want to be more literal in your syntax, you can use the range method directly:
|
13
|
+
|
14
|
+
Date.today.range(2, 'months', 'future')
|
15
|
+
=> Fri, 18 Sep 2009..Tue, 17 Nov 2009
|
16
|
+
|
17
|
+
Date.today.range(2, 'months', 'past')
|
18
|
+
=> Sun, 19 Jul 2009..Fri, 18 Sep 2009
|
19
|
+
|
20
|
+
There is also a class method for defining ranges that allows you to specify a beginning and end for the range, or just one of beginning or end and then the scale (months, years) and unit (number of scale).
|
21
|
+
|
22
|
+
Date.range(:begin => Date.today, :scale => 'months', :unit => 3)
|
23
|
+
=> Fri, 18 Sep 2009..Thu, 17 Dec 2009
|
24
|
+
|
25
|
+
Date.range(:begin => Date.civil(2008, 3, 1), :end => Date.civil(2008, 12, 31))
|
26
|
+
=> Sat, 01 Mar 2008..Wed, 31 Dec 2008
|
27
|
+
|
28
|
+
Named Months
|
29
|
+
============
|
30
|
+
|
31
|
+
A range of dates for a month can be created using that month's name, optionally passing in a year.
|
32
|
+
|
33
|
+
Date.february # 28 days in feb 2009
|
34
|
+
=> Sun, 01 Feb 2009..Sat, 28 Feb 2009
|
35
|
+
|
36
|
+
Date.february(2008) # 29 days in feb 2008
|
37
|
+
=> Fri, 01 Feb 2008..Fri, 29 Feb 2008
|
38
|
+
|
39
|
+
|
40
|
+
Meteorological Season Calculations
|
41
|
+
==================================
|
42
|
+
|
43
|
+
Date.civil(2009, 4, 1).meteorological_spring?
|
44
|
+
=> true
|
45
|
+
|
46
|
+
Date.civil(2009, 4, 1).meteorological_winter?
|
47
|
+
=> false
|
48
|
+
|
49
|
+
Date.civil(2009, 10, 1).meteorological_season
|
50
|
+
=> "fall"
|
51
|
+
|
52
|
+
Date.today.beginning_of_meteorological_summer
|
53
|
+
=> Mon, 01 Jun 2009
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
Copyright (c) 2009 Travis Tilley. See LICENSE for details.
|
data/VERSION.yml
CHANGED
@@ -1,54 +1,102 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
class TimeCrisis::DateRange < Range
|
2
|
+
def initialize(*args)
|
3
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
4
|
+
|
5
|
+
# make compatibile with Range's normal arguments
|
6
|
+
options[:begin] = args.shift unless args.empty?
|
7
|
+
options[:end] = args.shift unless args.empty?
|
8
|
+
options[:exclude_end] = args.shift unless args.empty?
|
9
|
+
|
10
|
+
start = options[:begin].nil? ? false : options[:begin].to_date
|
11
|
+
stop = options[:end].nil? ? false : options[:end].to_date
|
12
|
+
|
13
|
+
unit = options[:unit] || 1
|
14
|
+
scale = options[:scale] || 'years'
|
15
|
+
scale = scale.pluralize if scale.respond_to?(:pluralize)
|
16
|
+
|
17
|
+
if start && !stop
|
18
|
+
stop = start.advance({scale.to_sym => unit, :days => -1})
|
19
|
+
elsif !start && stop
|
20
|
+
start = stop.advance({scale.to_sym => -unit, :days => 1})
|
5
21
|
end
|
6
22
|
|
7
|
-
|
8
|
-
|
23
|
+
super(start, stop, options[:exclude_end] || false)
|
24
|
+
end
|
25
|
+
|
26
|
+
def include?(datelike)
|
27
|
+
super(datelike.to_date)
|
28
|
+
end
|
29
|
+
|
30
|
+
def each_slice_by_date(*args, &block)
|
31
|
+
dates = args.map! do |datelike|
|
32
|
+
date = datelike.to_date
|
33
|
+
raise ArgumentError, "Date not within range: #{date}" unless self.include?(date)
|
34
|
+
date
|
9
35
|
end
|
36
|
+
dates.sort!
|
10
37
|
|
11
|
-
|
12
|
-
direction ||= 'past'
|
13
|
-
unit ||= 1
|
14
|
-
scale ||= 'years'
|
38
|
+
start = self.begin
|
15
39
|
|
16
|
-
|
40
|
+
dates.each do |date|
|
41
|
+
yield self.class.new(start, date, true)
|
42
|
+
start = date
|
43
|
+
end
|
44
|
+
|
45
|
+
yield self.class.new(start, self.end, self.exclude_end?)
|
46
|
+
end
|
17
47
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
})
|
48
|
+
def each_slice_by_period(period, unit=1, &block)
|
49
|
+
start = self.begin
|
50
|
+
nstart = start.advance(period.to_sym => unit)
|
22
51
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
52
|
+
raise ArgumentError, "Period exceeds range" if nstart >= self.real_end
|
53
|
+
|
54
|
+
while nstart < self.real_end
|
55
|
+
yield self.class.new(start, nstart, true)
|
56
|
+
start = nstart
|
57
|
+
nstart = start.advance(period.to_sym => unit)
|
29
58
|
end
|
59
|
+
|
60
|
+
yield self.class.new(start, self.end, self.exclude_end?)
|
61
|
+
end
|
62
|
+
|
63
|
+
def each_month(&block)
|
64
|
+
each_slice_by_period(:months, 1, &block)
|
30
65
|
end
|
31
|
-
|
66
|
+
|
67
|
+
def each_year(&block)
|
68
|
+
each_slice_by_period(:years, 1, &block)
|
69
|
+
end
|
70
|
+
|
71
|
+
protected
|
72
|
+
|
73
|
+
def real_end
|
74
|
+
@real_end ||= self.exclude_end? ? self.end.advance({:days => -1}) : self.end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
module TimeCrisis::DateRange::Date
|
79
|
+
module InstanceMethods
|
80
|
+
def from(unit, scale)
|
81
|
+
self.range(unit, scale, 'past')
|
82
|
+
end
|
83
|
+
|
84
|
+
def for(unit, scale)
|
85
|
+
self.range(unit, scale, 'future')
|
86
|
+
end
|
87
|
+
|
88
|
+
def range(unit=1, scale='years', direction='past')
|
89
|
+
selfkey = direction == 'past' ? :end : :begin
|
90
|
+
self.class.range({selfkey => self, :unit => unit, :scale => scale})
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
32
94
|
module ClassMethods
|
33
|
-
def range(
|
34
|
-
|
35
|
-
stop = options[:end].nil? ? false : options[:end].to_date
|
36
|
-
|
37
|
-
scale = options[:scale] || 'years'
|
38
|
-
unit = options[:unit] || 1
|
39
|
-
|
40
|
-
if start && !stop
|
41
|
-
start.for(unit, scale)
|
42
|
-
elsif !start && stop
|
43
|
-
stop.from(unit, scale)
|
44
|
-
elsif start && stop
|
45
|
-
(start..stop)
|
46
|
-
else
|
47
|
-
raise ArgumentError, "Cannot create a range with neither start nor end..."
|
48
|
-
end
|
95
|
+
def range(*args)
|
96
|
+
TimeCrisis::DateRange.new(*args)
|
49
97
|
end
|
50
98
|
end
|
51
99
|
end
|
52
100
|
|
53
|
-
Date.send(:include, TimeCrisis::DateRange::InstanceMethods)
|
54
|
-
Date.extend(TimeCrisis::DateRange::ClassMethods)
|
101
|
+
Date.send(:include, TimeCrisis::DateRange::Date::InstanceMethods)
|
102
|
+
Date.extend(TimeCrisis::DateRange::Date::ClassMethods)
|
@@ -1,50 +1,50 @@
|
|
1
1
|
module TimeCrisis
|
2
|
-
# Meteorological seasons are reckoned by temperature, with summer being
|
3
|
-
# the hottest quarter of the year and winter the coldest quarter of the
|
4
|
-
# year. Using this reckoning, the Roman calendar began the year and the
|
5
|
-
# spring season on the first of March, with each season occupying three
|
6
|
-
# months. In 1780 the Societas Meteorologica Palatina, an early
|
7
|
-
# international organization for meteorology, defined seasons as groupings
|
8
|
-
# of three whole months. Ever since, professional meteorologists
|
9
|
-
# everywhere have used this definition. So, in meteorology for the
|
10
|
-
# Northern hemisphere: spring begins on 1 March, summer on 1 June, autumn
|
2
|
+
# Meteorological seasons are reckoned by temperature, with summer being
|
3
|
+
# the hottest quarter of the year and winter the coldest quarter of the
|
4
|
+
# year. Using this reckoning, the Roman calendar began the year and the
|
5
|
+
# spring season on the first of March, with each season occupying three
|
6
|
+
# months. In 1780 the Societas Meteorologica Palatina, an early
|
7
|
+
# international organization for meteorology, defined seasons as groupings
|
8
|
+
# of three whole months. Ever since, professional meteorologists
|
9
|
+
# everywhere have used this definition. So, in meteorology for the
|
10
|
+
# Northern hemisphere: spring begins on 1 March, summer on 1 June, autumn
|
11
11
|
# on 1 September, and winter on 1 December.
|
12
12
|
# - http://en.wikipedia.org/wiki/Season
|
13
13
|
module MeteorologicalSeasons
|
14
14
|
def beginning_of_meteorological_spring
|
15
15
|
::Date.civil(self.year, 3, 1)
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def beginning_of_meteorological_summer
|
19
19
|
::Date.civil(self.year, 6, 1)
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def beginning_of_meteorological_autumn
|
23
23
|
::Date.civil(self.year, 9, 1)
|
24
24
|
end
|
25
25
|
alias beginning_of_meteorological_fall beginning_of_meteorological_autumn
|
26
|
-
|
26
|
+
|
27
27
|
def beginning_of_meteorological_winter
|
28
28
|
::Date.civil(self.year, 12, 1)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
def meteorological_spring?
|
32
32
|
(beginning_of_meteorological_spring...beginning_of_meteorological_summer).include?(self)
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def meteorological_summer?
|
36
36
|
(beginning_of_meteorological_summer...beginning_of_meteorological_autumn).include?(self)
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
def meteorological_autumn?
|
40
40
|
(beginning_of_meteorological_autumn...beginning_of_meteorological_winter).include?(self)
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
def meteorological_winter?
|
44
44
|
(beginning_of_year...beginning_of_meteorological_spring).include?(self) ||
|
45
|
-
|
45
|
+
(beginning_of_meteorological_winter..end_of_year).include?(self)
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
def meteorological_season
|
49
49
|
return 'spring' if meteorological_spring?
|
50
50
|
return 'summer' if meteorological_summer?
|
@@ -12,7 +12,7 @@ module TimeCrisis
|
|
12
12
|
def october(year=nil); month_range(10, year); end
|
13
13
|
def november(year=nil); month_range(11, year); end
|
14
14
|
def december(year=nil); month_range(12, year); end
|
15
|
-
|
15
|
+
|
16
16
|
def month_range(month, year = nil)
|
17
17
|
year ||= current.year
|
18
18
|
base = ::Date.civil(year, month, 1)
|
@@ -10,7 +10,7 @@ module TimeCrisis::Support::Advance
|
|
10
10
|
d
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
module Time
|
15
15
|
def advance(options)
|
16
16
|
unless options[:weeks].nil?
|
@@ -29,7 +29,7 @@ module TimeCrisis::Support::Advance
|
|
29
29
|
seconds_to_advance == 0 ? time_advanced_by_date : time_advanced_by_date.since(seconds_to_advance)
|
30
30
|
end
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
module DateTime
|
34
34
|
def advance(options)
|
35
35
|
d = to_date.advance(options)
|
@@ -7,33 +7,33 @@ module TimeCrisis::Support::Change
|
|
7
7
|
options[:day] || self.day
|
8
8
|
)
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def beginning_of_year
|
12
12
|
change(:month => 1, :day => 1)
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
def end_of_year
|
16
16
|
change(:month => 12, :day => 31)
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
def beginning_of_month
|
20
20
|
change(:day => 1)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def end_of_month
|
24
24
|
last_day = self.class.days_in_month(self.month, self.year)
|
25
25
|
change(:day => last_day)
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def beginning_of_day
|
29
29
|
to_time
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def end_of_day
|
33
33
|
to_time.end_of_day
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
module Time
|
38
38
|
def change(options={})
|
39
39
|
::Time.send(
|
@@ -47,33 +47,33 @@ module TimeCrisis::Support::Change
|
|
47
47
|
options[:usec] || ((options[:hour] || options[:min] || options[:sec]) ? 0 : usec)
|
48
48
|
)
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def beginning_of_year
|
52
52
|
change(:month => 1, :day => 1, :hour => 0, :min => 0, :sec => 0)
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
def end_of_year
|
56
56
|
change(:month => 12,:day => 31,:hour => 23, :min => 59, :sec => 59)
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
def beginning_of_month
|
60
60
|
change(:day => 1,:hour => 0, :min => 0, :sec => 0, :usec => 0)
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
def end_of_month
|
64
64
|
last_day = self.class.days_in_month(self.month, self.year)
|
65
65
|
change(:day => last_day, :hour => 23, :min => 59, :sec => 59, :usec => 999999.999)
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
def beginning_of_day
|
69
69
|
change(:hour => 0, :min => 0, :sec => 0, :usec => 0)
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
def end_of_day
|
73
73
|
change(:hour => 23, :min => 59, :sec => 59, :usec => 999999.999)
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
module DateTime
|
78
78
|
def change(options={})
|
79
79
|
::DateTime.civil(
|
@@ -5,53 +5,53 @@ module TimeCrisis::Support::Conversions
|
|
5
5
|
def to_date
|
6
6
|
self
|
7
7
|
end if RUBY_VERSION < '1.9'
|
8
|
-
|
8
|
+
|
9
9
|
def to_time(form = :local)
|
10
10
|
::Time.send(form, year, month, day)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
def to_datetime
|
14
14
|
::DateTime.civil(year, month, day, 0, 0, 0, 0)
|
15
15
|
end if RUBY_VERSION < '1.9'
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
module Time
|
19
19
|
def to_date
|
20
20
|
::Date.new(year, month, day)
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def to_time
|
24
24
|
self
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
def to_datetime
|
28
28
|
::DateTime.civil(year, month, day, hour, min, sec, Rational(utc_offset, 86400))
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
module DateTime
|
33
33
|
def to_date
|
34
34
|
::Date.civil(year, month, day)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def to_time
|
38
38
|
self.offset == 0 ? ::Time.utc(year, month, day, hour, min, sec) : self
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def to_datetime
|
42
42
|
self
|
43
43
|
end
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
module String
|
47
47
|
def to_time(form = :utc)
|
48
48
|
d = ::Date._parse(self, false).values_at(:year, :mon, :mday, :hour, :min, :sec, :sec_fraction).map { |arg| arg || 0 }
|
49
49
|
d[6] *= 1000000
|
50
50
|
::Time.send(form, *d)
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
def to_date
|
54
|
-
::Date.civil(
|
54
|
+
::Date.civil(*::Date._parse(self, false).values_at(:year, :mon, :mday))
|
55
55
|
end
|
56
56
|
|
57
57
|
def to_datetime
|
@@ -66,10 +66,10 @@ end
|
|
66
66
|
unless Time.instance_methods.include?('local_time')
|
67
67
|
Date.class_eval do
|
68
68
|
# Ruby 1.9 has Date#to_time which converts to localtime only.
|
69
|
-
remove_method :to_time if instance_methods.include?(:to_time)
|
69
|
+
remove_method :to_time if instance_methods.include?(:to_time)
|
70
70
|
include TimeCrisis::Support::Conversions::Date
|
71
71
|
end
|
72
|
-
|
72
|
+
|
73
73
|
DateTime.class_eval do
|
74
74
|
# Ruby 1.9 has DateTime#to_time which internally relies on Time.
|
75
75
|
remove_method :to_time if instance_methods.include?(:to_time)
|
@@ -3,7 +3,7 @@ module TimeCrisis::Support::ReadableInspect
|
|
3
3
|
def readable_inspect
|
4
4
|
strftime("%a, %d %b %Y")
|
5
5
|
end
|
6
|
-
|
6
|
+
|
7
7
|
def self.included(base)
|
8
8
|
base.class_eval do
|
9
9
|
alias_method :default_inspect, :inspect
|
@@ -11,12 +11,12 @@ module TimeCrisis::Support::ReadableInspect
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
module DateTime
|
16
16
|
def readable_inspect
|
17
17
|
to_s(:rfc822)
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def self.included(base)
|
21
21
|
base.class_eval do
|
22
22
|
alias_method :default_inspect, :inspect
|
@@ -26,8 +26,8 @@ module TimeCrisis::Support::ReadableInspect
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
Date.send(:include, TimeCrisis::Support::ReadableInspect::Date) unless
|
30
|
-
|
29
|
+
Date.send(:include, TimeCrisis::Support::ReadableInspect::Date) unless
|
30
|
+
Date.instance_methods.include?('readable_inspect')
|
31
31
|
|
32
|
-
DateTime.send(:include, TimeCrisis::Support::ReadableInspect::DateTime) unless
|
33
|
-
|
32
|
+
DateTime.send(:include, TimeCrisis::Support::ReadableInspect::DateTime) unless
|
33
|
+
DateTime.instance_methods.include?('readable_inspect')
|
data/time_crisis.gemspec
CHANGED
@@ -5,22 +5,22 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{time_crisis}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Travis Tilley"]
|
12
|
-
s.date = %q{2009-09-
|
12
|
+
s.date = %q{2009-09-20}
|
13
13
|
s.description = %q{date and time related extensions}
|
14
14
|
s.email = %q{ttilley@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
"README.
|
17
|
+
"README.markdown"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".gitignore",
|
22
22
|
"LICENSE",
|
23
|
-
"README.
|
23
|
+
"README.markdown",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION.yml",
|
26
26
|
"lib/time_crisis.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ttilley-time_crisis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Travis Tilley
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-20 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,12 +30,12 @@ extensions: []
|
|
30
30
|
|
31
31
|
extra_rdoc_files:
|
32
32
|
- LICENSE
|
33
|
-
- README.
|
33
|
+
- README.markdown
|
34
34
|
files:
|
35
35
|
- .document
|
36
36
|
- .gitignore
|
37
37
|
- LICENSE
|
38
|
-
- README.
|
38
|
+
- README.markdown
|
39
39
|
- Rakefile
|
40
40
|
- VERSION.yml
|
41
41
|
- lib/time_crisis.rb
|