cal 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -20,21 +20,26 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
+ Cal is a simple calendar structure. It **does not** render a calendar. It **does not** handle events.
24
+
23
25
  See the Rails app [https://github.com/austinthecoder/cal-app](https://github.com/austinthecoder/cal-app) for an example.
24
26
 
25
27
  ### Rails example
26
28
 
27
29
  ``` ruby
28
- # in the controller
29
- - calendar = Cal::MonthlyCalendar.new((params[:date] || Date.current), :start_week_on => :monday)
30
+ # routes
31
+ match 'calendar/:month', :to => 'calendars#show'
32
+
33
+ # controller
34
+ calendar = Cal::MonthlyCalendar.from_param params[:month], :start_week_on => :monday
30
35
 
31
- # in the view
36
+ # view
32
37
  %h3
33
- = link_to 'Previous month', url_for(:date => calendar.previous.date)
38
+ = link_to 'Previous month', calendar_path(calendar.previous)
34
39
  |
35
40
  = "#{calendar.month} #{calendar.year}"
36
41
  |
37
- = link_to 'Next month', url_for(:date => calendar.next.date)
42
+ = link_to 'Next month', calendar_path(calendar.next)
38
43
 
39
44
  %table
40
45
  %thead
data/lib/cal.rb CHANGED
@@ -6,6 +6,5 @@ module Cal
6
6
  autoload :MonthlyCalendar, 'cal/monthly_calendar'
7
7
  autoload :Day, 'cal/day'
8
8
  autoload :Month, 'cal/month'
9
- autoload :Year, 'cal/year'
10
9
 
11
10
  end
data/lib/cal/month.rb CHANGED
@@ -1,18 +1,41 @@
1
1
  module Cal
2
2
  class Month
3
3
 
4
- def initialize(calendar)
5
- @calendar = calendar
4
+ include Comparable
5
+
6
+ def initialize(year, number)
7
+ @year = year.to_i
8
+ @number = number.to_i
9
+ end
10
+
11
+ attr_reader :year, :number
12
+
13
+ alias_method :to_i, :number
14
+
15
+ def <=>(other)
16
+ date <=> other.send(:date) if other.is_a?(self.class)
6
17
  end
7
18
 
8
- attr_reader :calendar
19
+ def to_s(*args)
20
+ date.strftime *args
21
+ end
9
22
 
10
- def ==(other)
11
- other.is_a?(Month) && other.calendar == calendar
23
+ def succ
24
+ self.class.new *(number == 12 ? [(year + 1), 1] : [year, (number + 1)])
12
25
  end
13
26
 
14
- def to_s
15
- calendar.date.strftime "%B"
27
+ def previous
28
+ self.class.new *(number == 1 ? [(year - 1), 12] : [year, (number - 1)])
29
+ end
30
+
31
+ def to_month
32
+ self
33
+ end
34
+
35
+ private
36
+
37
+ def date
38
+ @date ||= Date.new year, number
16
39
  end
17
40
 
18
41
  end
@@ -4,6 +4,8 @@ require 'active_support/core_ext/string/conversions'
4
4
  module Cal
5
5
  class MonthlyCalendar
6
6
 
7
+ include Comparable
8
+
7
9
  DAY_NAMES = {
8
10
  :sunday => 0,
9
11
  :monday => 1,
@@ -14,27 +16,50 @@ module Cal
14
16
  :saturday => 6
15
17
  }
16
18
 
17
- def initialize(dateable, options = {})
18
- @date = dateable.to_date
19
+ class << self
20
+ def from_month(month, options = {})
21
+ month = month.to_month
22
+ new month.year, month.number, options
23
+ end
24
+
25
+ def from_param(param)
26
+ year, month_number = if param.present?
27
+ param.split '-'
28
+ else
29
+ now = Date.current
30
+ [now.year, now.month]
31
+ end
32
+ new year, month_number
33
+ end
34
+ end
35
+
36
+ def initialize(year, month_number, options = {})
19
37
  @start_week_on = options[:start_week_on] || :sunday
20
- @month = Month.new self
21
- @year = Year.new self
38
+ @month = Month.new year, month_number
22
39
  end
23
40
 
24
- attr_reader :date, :month, :year
41
+ attr_reader :month
42
+
43
+ delegate :year, :to => :month
25
44
 
26
- def ==(other)
27
- other.is_a?(MonthlyCalendar) &&
28
- other.date.year == date.year &&
29
- other.date.month == date.month
45
+ def <=>(other)
46
+ if other.is_a?(MonthlyCalendar) && start_week_on == other.send(:start_week_on)
47
+ month <=> other.month
48
+ end
30
49
  end
31
50
 
32
51
  def first_day
33
- @first_day ||= Day.new date.beginning_of_month.beginning_of_week(@start_week_on), self
52
+ @first_day ||= begin
53
+ date = Date.new(year, month.to_i).beginning_of_month.beginning_of_week(start_week_on)
54
+ Day.new date, self
55
+ end
34
56
  end
35
57
 
36
58
  def last_day
37
- @last_day ||= Day.new date.end_of_month.end_of_week(@start_week_on), self
59
+ @last_day ||= begin
60
+ date = Date.new(year, month.to_i).end_of_month.end_of_week(start_week_on)
61
+ Day.new date, self
62
+ end
38
63
  end
39
64
 
40
65
  def days
@@ -46,16 +71,24 @@ module Cal
46
71
  end
47
72
 
48
73
  def previous
49
- self.class.new date.prev_month
74
+ self.class.from_month month.previous, :start_week_on => start_week_on
50
75
  end
51
76
 
52
77
  def next
53
- self.class.new date.next_month
78
+ self.class.from_month month.succ, :start_week_on => start_week_on
54
79
  end
55
80
 
56
81
  def day_names
57
- %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday].rotate DAY_NAMES[@start_week_on]
82
+ %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday].rotate DAY_NAMES[start_week_on]
58
83
  end
59
84
 
85
+ def to_param
86
+ "#{year}-#{month.to_i}"
87
+ end
88
+
89
+ private
90
+
91
+ attr_reader :start_week_on
92
+
60
93
  end
61
94
  end
data/lib/cal/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Cal
2
2
 
3
- VERSION = "0.4.1"
3
+ VERSION = "0.5.0"
4
4
 
5
5
  end
@@ -2,33 +2,121 @@ require 'spec_helper'
2
2
 
3
3
  describe Cal::Month do
4
4
 
5
- subject { described_class.new @calendar }
5
+ subject { described_class.new @year, @month_number }
6
6
 
7
- before { @calendar = OpenStruct.new }
7
+ before do
8
+ @year = 2012
9
+ @month_number = 3
10
+ end
8
11
 
9
- describe "==" do
10
- it "is true with another month with the same calendar" do
11
- (subject == described_class.new(@calendar)).should be_true
12
+ describe "initialize" do
13
+ it "coerces the year and month number to integers" do
14
+ @year = "2012"
15
+ @month_number = "04"
16
+ subject.year.should == 2012
17
+ subject.number.should == 4
12
18
  end
19
+ end
20
+
21
+ it { should be_a(Comparable) }
13
22
 
14
- it "is false with another month with a different calendar" do
15
- (subject == described_class.new(Object.new)).should be_false
23
+ describe "<=>" do
24
+ it "is nil with a non month" do
25
+ (subject <=> Object.new).should be_nil
16
26
  end
17
27
 
28
+ context "given another month" do
29
+ before { @other = described_class.new @year, @month_number }
30
+
31
+ context "when the other's year is the same" do
32
+ it "is 0 when the other's month is the same" do
33
+ (subject <=> @other).should == 0
34
+ end
35
+
36
+ it "is -1 when the other's month is higher" do
37
+ @month_number = 2
38
+ (subject <=> @other).should == -1
39
+ end
40
+
41
+ it "is 1 when the other's month is lower" do
42
+ @month_number = 4
43
+ (subject <=> @other).should == 1
44
+ end
45
+ end
46
+
47
+ it "is -1 when the other's year is higher" do
48
+ @year = 2011
49
+ (subject <=> @other).should == -1
50
+ end
51
+
52
+ it "is 1 when the other's year is lower" do
53
+ @year = 2013
54
+ (subject <=> @other).should == 1
55
+ end
56
+ end
57
+ end
58
+
59
+ describe "==" do
18
60
  it "is false with a non month" do
19
61
  (subject == Object.new).should be_false
20
62
  end
21
- end
22
63
 
23
- describe "calendar" do
24
- it "is the given calendar" do
25
- subject.calendar.should == @calendar
64
+ context "given another month" do
65
+ before { @month = described_class.new @year, @month_number }
66
+
67
+ it "is true if the comparison is zero" do
68
+ subject.stub(:<=>) { 0 }
69
+ (subject == @month).should be_true
70
+ end
71
+
72
+ it "is false if the comparison is not zero" do
73
+ subject.stub(:<=>) { -1 }
74
+ (subject == @month).should be_false
75
+ end
26
76
  end
27
77
  end
28
78
 
79
+ it { subject.number.should == @month_number }
80
+
29
81
  describe "to_s" do
30
- before { @calendar.stub(:date) { Date.new 2012, 3 } }
31
- it { subject.to_s.should == 'March' }
82
+ it "is the result of formatting a date object" do
83
+ date = Object.new
84
+ format = Object.new
85
+ result = Object.new
86
+ Date.stub(:new) { |*args| date if args == [@year, @month_number] }
87
+ date.stub(:strftime) { |f| result if f == format }
88
+ subject.to_s(format).should == result
89
+ end
90
+ end
91
+
92
+ describe "year" do
93
+ it "is the given year" do
94
+ subject.year.should == 2012
95
+ end
96
+ end
97
+
98
+ describe "succ" do
99
+ [[2012, 12, 2013, 1], [2012, 1, 2012, 2]].each do |year, month_number, new_year, new_month_number|
100
+ it "is the next month" do
101
+ @year = year
102
+ @month_number = month_number
103
+ subject.succ.should == described_class.new(new_year, new_month_number)
104
+ end
105
+ end
106
+ end
107
+
108
+ describe "previous" do
109
+ [[2012, 12, 2012, 11], [2012, 1, 2011, 12]].each do |year, month_number, new_year, new_month_number|
110
+ it "is the previous month" do
111
+ @year = year
112
+ @month_number = month_number
113
+ subject.previous.should == described_class.new(new_year, new_month_number)
114
+ end
115
+ end
116
+ end
117
+
118
+ describe "to_month" do
119
+ it { subject.to_month.should == subject }
32
120
  end
33
121
 
34
122
  end
@@ -2,160 +2,198 @@ require 'spec_helper'
2
2
 
3
3
  describe Cal::MonthlyCalendar do
4
4
 
5
- subject { described_class.new @date, @options }
5
+ describe "class methods" do
6
+ subject { described_class }
6
7
 
7
- before do
8
- @date = Date.new 2012, 2
9
- @options = {}
10
- end
8
+ describe "from_month" do
9
+ it "returns a calendar for the month's year and month number" do
10
+ subject.from_month(Cal::Month.new(2012, 11)).should == subject.new(2012, 11)
11
+ end
11
12
 
12
- describe "initialize" do
13
- it "raises an error if arg can't be converted to a date" do
14
- ['Octember', Object.new, '2012'].each do |obj|
15
- expect { described_class.new obj }.to raise_error
13
+ it "raises an error without something that can be converted to a month" do
14
+ [nil, Object.new].each do |object|
15
+ expect { subject.from_month(object) }.to raise_error(NoMethodError)
16
+ end
16
17
  end
17
18
  end
18
19
 
19
- it "doesn't raise an error if arg can be converted to a date" do
20
- [Date.current, Date.new(2012, 1, 15), '2012-02-24'].each do |obj|
21
- expect { described_class.new obj }.to_not raise_error
20
+ describe "from_param" do
21
+ it "is the calendar for the given param" do
22
+ calendar = subject.new 2012, 5
23
+ subject.from_param(calendar.to_param).should == calendar
22
24
  end
23
- end
24
- end
25
25
 
26
- describe "date" do
27
- it "is the given date" do
28
- subject.date.should == @date
26
+ context "with a blank param" do
27
+ it "returns a calendar for the current year and month" do
28
+ [' ', nil].each do |param|
29
+ date = Date.current
30
+ subject.from_param(param).should == subject.new(date.year, date.month)
31
+ end
32
+ end
33
+ end
29
34
  end
30
35
  end
31
36
 
32
- describe "==" do
33
- it "is true with another monthly calendar in the same month and year" do
34
- calendar = described_class.new Date.new(@date.year, @date.month, (@date.day + 1))
35
- (subject == calendar).should be_true
36
- end
37
+ describe "instance methods" do
38
+ subject { described_class.new @year, @month, @options }
37
39
 
38
- it "is false with another monthly calendar with a different month" do
39
- calendar = described_class.new Date.new(@date.year, (@date.month + 1), @date.day)
40
- (subject == calendar).should be_false
40
+ before do
41
+ @year = 2012
42
+ @month = 2
43
+ @options = {}
41
44
  end
42
45
 
43
- it "is false with another monthly calendar with a different year" do
44
- calendar = described_class.new Date.new((@date.year + 1), @date.month, @date.day)
45
- (subject == calendar).should be_false
46
- end
46
+ it { should be_a(Comparable) }
47
47
 
48
- it "is false with a non monthly calendar" do
49
- (subject == Object.new).should be_false
48
+ describe "initialize" do
49
+ it "coerces the year and month number to integers" do
50
+ @year = "2012"
51
+ @month = "04"
52
+ subject.should == described_class.new(2012, 4)
53
+ end
50
54
  end
51
- end
52
55
 
53
- describe "month" do
54
- it { subject.month.should == Cal::Month.new(subject) }
55
- end
56
+ describe "<=>" do
57
+ it "is nil with a non monthly calendar" do
58
+ (subject <=> Object.new).should be_nil
59
+ end
56
60
 
57
- describe "year" do
58
- it { subject.year.should == Cal::Year.new(subject) }
59
- end
61
+ it "is nil with a non monthly calendar" do
62
+ (subject <=> Object.new).should be_nil
63
+ end
64
+
65
+ context "given another monthly calendar" do
66
+ before { @other = described_class.new @year, @month, @options }
60
67
 
61
- describe "first_day" do
62
- before { @date = Date.new 2012, 2, 23 }
63
-
64
- [
65
- [:monday, [1, 30]],
66
- [:tuesday, [1, 31]],
67
- [:wednesday, [2, 1]],
68
- [:thursday, [1, 26]],
69
- [:friday, [1, 27]],
70
- [:saturday, [1, 28]]
71
- ].each do |weekday, month_day|
72
- context "when the weekday is set to start on #{weekday}" do
73
- before { @options[:start_week_on] = weekday }
74
- it "is the first viewable day on the calendar" do
75
- subject.first_day.should == Cal::Day.new(Date.new(2012, *month_day), subject)
68
+ it "is nil when the other's start day is different" do
69
+ @options[:start_week_on] = :tuesday
70
+ (subject <=> @other).should be_nil
71
+ end
72
+
73
+ it "is the result of comparing the months when the other's start day is the same" do
74
+ result = Object.new
75
+ subject.month.stub(:<=>) { |m| result if m == @other.month }
76
+ (subject <=> @other).should == result
76
77
  end
77
78
  end
78
79
  end
79
80
 
80
- it "is the first viewable day on the calendar, using sunday as the default start day" do
81
- subject.first_day.should == Cal::Day.new(Date.new(2012, 1, 29), subject)
81
+ describe "month" do
82
+ it { subject.month.should == Cal::Month.new(@year, @month) }
83
+ end
84
+
85
+ describe "year" do
86
+ it { subject.year.should == @year }
82
87
  end
83
- end
84
88
 
85
- describe "last_day" do
86
- before { @date = Date.new 2012, 2, 23 }
87
-
88
- [
89
- [:monday, [3, 4]],
90
- [:tuesday, [3, 5]],
91
- [:wednesday, [3, 6]],
92
- [:thursday, [2, 29]],
93
- [:friday, [3, 1]],
94
- [:saturday, [3, 2]]
95
- ].each do |weekday, month_day|
96
- context "when the weekday is set to start on #{weekday}" do
97
- before { @options[:start_week_on] = weekday }
98
- it "is the last viewable day on the calendar" do
99
- subject.last_day.should == Cal::Day.new(Date.new(2012, *month_day), subject)
89
+ describe "first_day" do
90
+ before { @year, @month = 2012, 2 }
91
+
92
+ [
93
+ [:monday, [1, 30]],
94
+ [:tuesday, [1, 31]],
95
+ [:wednesday, [2, 1]],
96
+ [:thursday, [1, 26]],
97
+ [:friday, [1, 27]],
98
+ [:saturday, [1, 28]]
99
+ ].each do |weekday, month_day|
100
+ context "when the weekday is set to start on #{weekday}" do
101
+ before { @options[:start_week_on] = weekday }
102
+ it "is the first viewable day on the calendar" do
103
+ subject.first_day.should == Cal::Day.new(Date.new(2012, *month_day), subject)
104
+ end
100
105
  end
101
106
  end
107
+
108
+ it "is the first viewable day on the calendar, using sunday as the default start day" do
109
+ subject.first_day.should == Cal::Day.new(Date.new(2012, 1, 29), subject)
110
+ end
102
111
  end
103
112
 
104
- it "is the last viewable day on the calendar, using sunday as the default start day" do
105
- subject.last_day.should == Cal::Day.new(Date.new(2012, 3, 3), subject)
113
+ describe "last_day" do
114
+ before { @year, @month = 2012, 2 }
115
+
116
+ [
117
+ [:monday, [3, 4]],
118
+ [:tuesday, [3, 5]],
119
+ [:wednesday, [3, 6]],
120
+ [:thursday, [2, 29]],
121
+ [:friday, [3, 1]],
122
+ [:saturday, [3, 2]]
123
+ ].each do |weekday, month_day|
124
+ context "when the weekday is set to start on #{weekday}" do
125
+ before { @options[:start_week_on] = weekday }
126
+ it "is the last viewable day on the calendar" do
127
+ subject.last_day.should == Cal::Day.new(Date.new(2012, *month_day), subject)
128
+ end
129
+ end
130
+ end
131
+
132
+ it "is the last viewable day on the calendar, using sunday as the default start day" do
133
+ subject.last_day.should == Cal::Day.new(Date.new(2012, 3, 3), subject)
134
+ end
106
135
  end
107
- end
108
136
 
109
- describe "days" do
110
- it "is a range of the first day to the last day" do
111
- @date = Date.new 2012, 2, 23
112
- first_day = Cal::Day.new Date.new(2012, 1, 29), subject
113
- last_day = Cal::Day.new Date.new(2012, 3, 3), subject
114
- subject.days.should == (first_day..last_day)
137
+ describe "days" do
138
+ it "is a range of the first day to the last day" do
139
+ @year, @month = 2012, 2
140
+ first_day = Cal::Day.new Date.new(2012, 1, 29), subject
141
+ last_day = Cal::Day.new Date.new(2012, 3, 3), subject
142
+ subject.days.should == (first_day..last_day)
143
+ end
115
144
  end
116
- end
117
145
 
118
- describe "weeks" do
119
- it "an array of the days in groups of 7" do
120
- @date = Date.parse "2012-02-23"
121
- subject.weeks.should == [
122
- %w[01-29 01-30 01-31 02-01 02-02 02-03 02-04].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
123
- %w[02-05 02-06 02-07 02-08 02-09 02-10 02-11].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
124
- %w[02-12 02-13 02-14 02-15 02-16 02-17 02-18].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
125
- %w[02-19 02-20 02-21 02-22 02-23 02-24 02-25].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
126
- %w[02-26 02-27 02-28 02-29 03-01 03-02 03-03].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject }
127
- ]
146
+ describe "weeks" do
147
+ it "an array of the days in groups of 7" do
148
+ @year, @month = 2012, 2
149
+ subject.weeks.should == [
150
+ %w[01-29 01-30 01-31 02-01 02-02 02-03 02-04].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
151
+ %w[02-05 02-06 02-07 02-08 02-09 02-10 02-11].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
152
+ %w[02-12 02-13 02-14 02-15 02-16 02-17 02-18].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
153
+ %w[02-19 02-20 02-21 02-22 02-23 02-24 02-25].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject },
154
+ %w[02-26 02-27 02-28 02-29 03-01 03-02 03-03].map { |s| Cal::Day.new Date.parse("2012-#{s}"), subject }
155
+ ]
156
+ end
128
157
  end
129
- end
130
158
 
131
- describe "previous" do
132
- it "returns the calendar for the previous month" do
133
- subject.previous.should == described_class.new(@date.prev_month)
159
+ describe "previous" do
160
+ it "returns the calendar for the previous month" do
161
+ @options[:start_week_on] = :wednesday
162
+ subject.previous.should == described_class.new(@year, (@month - 1), @options)
163
+ end
134
164
  end
135
- end
136
165
 
137
- describe "next" do
138
- it "returns the calendar for the next month" do
139
- subject.next.should == described_class.new(@date.next_month)
166
+ describe "next" do
167
+ it "returns the calendar for the next month" do
168
+ @options[:start_week_on] = :wednesday
169
+ subject.next.should == described_class.new(@year, (@month + 1), @options)
170
+ end
140
171
  end
141
- end
142
172
 
143
- describe "day_names" do
144
- it "defaults to sunday through saturday" do
145
- subject.day_names.should == %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday]
173
+ describe "day_names" do
174
+ it "defaults to sunday through saturday" do
175
+ subject.day_names.should == %w[Sunday Monday Tuesday Wednesday Thursday Friday Saturday]
176
+ end
177
+
178
+ [
179
+ %w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday],
180
+ %w[Tuesday Wednesday Thursday Friday Saturday Sunday Monday],
181
+ %w[Wednesday Thursday Friday Saturday Sunday Monday Tuesday],
182
+ %w[Thursday Friday Saturday Sunday Monday Tuesday Wednesday],
183
+ %w[Friday Saturday Sunday Monday Tuesday Wednesday Thursday],
184
+ %w[Saturday Sunday Monday Tuesday Wednesday Thursday Friday]
185
+ ].each do |day_names|
186
+ it "is #{day_names[0]} through #{day_names[6]} when the weekday is set to start on #{day_names[0]}" do
187
+ @options[:start_week_on] = day_names[0].downcase.to_sym
188
+ subject.day_names.should == day_names
189
+ end
190
+ end
146
191
  end
147
192
 
148
- [
149
- %w[Monday Tuesday Wednesday Thursday Friday Saturday Sunday],
150
- %w[Tuesday Wednesday Thursday Friday Saturday Sunday Monday],
151
- %w[Wednesday Thursday Friday Saturday Sunday Monday Tuesday],
152
- %w[Thursday Friday Saturday Sunday Monday Tuesday Wednesday],
153
- %w[Friday Saturday Sunday Monday Tuesday Wednesday Thursday],
154
- %w[Saturday Sunday Monday Tuesday Wednesday Thursday Friday]
155
- ].each do |day_names|
156
- it "is #{day_names[0]} through #{day_names[6]} when the weekday is set to start on #{day_names[0]}" do
157
- @options[:start_week_on] = day_names[0].downcase.to_sym
158
- subject.day_names.should == day_names
193
+ describe "to_param" do
194
+ it "is the year and month string" do
195
+ @year, @month = 2012, 12
196
+ subject.to_param.should == "2012-12"
159
197
  end
160
198
  end
161
199
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-09 00:00:00.000000000 Z
12
+ date: 2012-06-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -62,11 +62,9 @@ files:
62
62
  - lib/cal/month.rb
63
63
  - lib/cal/monthly_calendar.rb
64
64
  - lib/cal/version.rb
65
- - lib/cal/year.rb
66
65
  - spec/cal/day_spec.rb
67
66
  - spec/cal/month_spec.rb
68
67
  - spec/cal/monthly_calendar_spec.rb
69
- - spec/cal/year_spec.rb
70
68
  - spec/spec_helper.rb
71
69
  homepage: https://github.com/austinthecoder/cal
72
70
  licenses: []
@@ -96,5 +94,4 @@ test_files:
96
94
  - spec/cal/day_spec.rb
97
95
  - spec/cal/month_spec.rb
98
96
  - spec/cal/monthly_calendar_spec.rb
99
- - spec/cal/year_spec.rb
100
97
  - spec/spec_helper.rb
data/lib/cal/year.rb DELETED
@@ -1,19 +0,0 @@
1
- module Cal
2
- class Year
3
-
4
- def initialize(calendar)
5
- @calendar = calendar
6
- end
7
-
8
- attr_reader :calendar
9
-
10
- def ==(other)
11
- other.is_a?(Year) && other.calendar == calendar
12
- end
13
-
14
- def to_s
15
- calendar.date.strftime "%Y"
16
- end
17
-
18
- end
19
- end
@@ -1,34 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Cal::Year do
4
-
5
- subject { described_class.new @calendar }
6
-
7
- before { @calendar = OpenStruct.new }
8
-
9
- describe "==" do
10
- it "is true with another year with the same calendar" do
11
- (subject == described_class.new(@calendar)).should be_true
12
- end
13
-
14
- it "is false with another year with a different calendar" do
15
- (subject == described_class.new(Object.new)).should be_false
16
- end
17
-
18
- it "is false with a non year" do
19
- (subject == Object.new).should be_false
20
- end
21
- end
22
-
23
- describe "calendar" do
24
- it "is the given calendar" do
25
- subject.calendar.should == @calendar
26
- end
27
- end
28
-
29
- describe "to_s" do
30
- before { @calendar.date = Date.new 1983 }
31
- it { subject.to_s.should == '1983' }
32
- end
33
-
34
- end