cal 0.2.1 → 0.3.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.
@@ -4,8 +4,10 @@ require 'active_support/core_ext/string/conversions'
4
4
  module Cal
5
5
  class MonthlyCalendar
6
6
 
7
- def initialize(dateable)
7
+ def initialize(dateable, options = {})
8
+ options = options.reverse_merge :start_week_on => :sunday
8
9
  @date = dateable.to_date
10
+ @options = options
9
11
  end
10
12
 
11
13
  attr_reader :date
@@ -21,11 +23,11 @@ module Cal
21
23
  end
22
24
 
23
25
  def first_day
24
- @first_day ||= Day.new date.beginning_of_month.beginning_of_week(:sunday), self
26
+ @first_day ||= Day.new date.beginning_of_month.beginning_of_week(@options[:start_week_on]), self
25
27
  end
26
28
 
27
29
  def last_day
28
- @last_day ||= Day.new date.end_of_month.end_of_week(:sunday), self
30
+ @last_day ||= Day.new date.end_of_month.end_of_week(@options[:start_week_on]), self
29
31
  end
30
32
 
31
33
  def days
data/lib/cal/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Cal
2
2
 
3
- VERSION = "0.2.1"
3
+ VERSION = "0.3.0"
4
4
 
5
5
  end
@@ -2,9 +2,12 @@ require 'spec_helper'
2
2
 
3
3
  describe Cal::MonthlyCalendar do
4
4
 
5
- subject { described_class.new @date }
5
+ subject { described_class.new @date, @options }
6
6
 
7
- before { @date = Date.new 2012, 2 }
7
+ before do
8
+ @date = Date.new 2012, 2
9
+ @options = {}
10
+ end
8
11
 
9
12
  describe "initialize" do
10
13
  it "raises an error if arg can't be converted to a date" do
@@ -52,21 +55,55 @@ describe Cal::MonthlyCalendar do
52
55
  end
53
56
 
54
57
  describe "first_day" do
55
- it "is the first viewable day on the calendar" do
56
- @date = Date.new 2012, 2, 23
58
+ before { @date = Date.new 2012, 2, 23 }
59
+
60
+ [
61
+ [:monday, [1, 30]],
62
+ [:tuesday, [1, 31]],
63
+ [:wednesday, [2, 1]],
64
+ [:thursday, [1, 26]],
65
+ [:friday, [1, 27]],
66
+ [:saturday, [1, 28]]
67
+ ].each do |weekday, month_day|
68
+ context "when the weekday is set to start on #{weekday}" do
69
+ before { @options[:start_week_on] = weekday }
70
+ it "is the first viewable day on the calendar" do
71
+ subject.first_day.should == Cal::Day.new(Date.new(2012, *month_day), subject)
72
+ end
73
+ end
74
+ end
75
+
76
+ it "is the first viewable day on the calendar, using sunday as the default start day" do
57
77
  subject.first_day.should == Cal::Day.new(Date.new(2012, 1, 29), subject)
58
78
  end
59
79
  end
60
80
 
61
81
  describe "last_day" do
62
- it "is the last viewable day on the calendar" do
63
- @date = Date.new 2012, 2, 23
82
+ before { @date = Date.new 2012, 2, 23 }
83
+
84
+ [
85
+ [:monday, [3, 4]],
86
+ [:tuesday, [3, 5]],
87
+ [:wednesday, [3, 6]],
88
+ [:thursday, [2, 29]],
89
+ [:friday, [3, 1]],
90
+ [:saturday, [3, 2]]
91
+ ].each do |weekday, month_day|
92
+ context "when the weekday is set to start on #{weekday}" do
93
+ before { @options[:start_week_on] = weekday }
94
+ it "is the last viewable day on the calendar" do
95
+ subject.last_day.should == Cal::Day.new(Date.new(2012, *month_day), subject)
96
+ end
97
+ end
98
+ end
99
+
100
+ it "is the last viewable day on the calendar, using sunday as the default start day" do
64
101
  subject.last_day.should == Cal::Day.new(Date.new(2012, 3, 3), subject)
65
102
  end
66
103
  end
67
104
 
68
105
  describe "days" do
69
- it "is a range of all the viewable days" do
106
+ it "is a range of the first day to the last day" do
70
107
  @date = Date.new 2012, 2, 23
71
108
  first_day = Cal::Day.new Date.new(2012, 1, 29), subject
72
109
  last_day = Cal::Day.new Date.new(2012, 3, 3), subject
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.2.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: