date_range_covers 0.0.2 → 0.0.3

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.
@@ -21,5 +21,5 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
22
  spec.add_development_dependency "rake"
23
23
  spec.add_development_dependency "rspec"
24
- spec.add_development_dependency "rails", "~> 2.3"
24
+ spec.add_development_dependency "activesupport", "~> 3.2"
25
25
  end
@@ -1,3 +1,3 @@
1
1
  module DateRangeCovers
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,7 +1,6 @@
1
1
  require "date_range_covers/version"
2
2
  require 'date'
3
- require 'active_support'
4
- require 'a_date'
3
+ require 'active_support/all'
5
4
 
6
5
  module DateRangeCovers
7
6
  class DateRange
@@ -140,21 +139,21 @@ module DateRangeCovers
140
139
  unless options.empty?
141
140
  case options[:include]
142
141
  when :both
143
- s_date = ADate.beginning_of_week(s_date, beginning_of_week_day)
144
- e_date = ADate.end_of_week(e_date, beginning_of_week_day)
142
+ s_date = s_date.beginning_of_week(beginning_of_week_day)
143
+ e_date = e_date.end_of_week(beginning_of_week_day)
145
144
 
146
- start_of_e_week = ADate.beginning_of_week(e_date, beginning_of_week_day)
145
+ start_of_e_week = e_date.beginning_of_week(beginning_of_week_day)
147
146
 
148
147
  weeks << s_date unless is_covered?(s_date)
149
148
  weeks << start_of_e_week unless is_covered?(start_of_e_week)
150
149
 
151
150
  when :start_week
152
- s_date = ADate.beginning_of_week(s_date, beginning_of_week_day)
151
+ s_date = s_date.beginning_of_week(beginning_of_week_day)
153
152
  weeks << s_date unless is_covered?(s_date)
154
153
 
155
154
  when :end_week
156
- e_date = ADate.end_of_week(e_date, beginning_of_week_day)
157
- start_of_e_week = ADate.beginning_of_week(e_date, beginning_of_week_day)
155
+ e_date = e_date.end_of_week(beginning_of_week_day)
156
+ start_of_e_week = e_date.beginning_of_week(beginning_of_week_day)
158
157
 
159
158
  weeks << start_of_e_week unless is_covered?(start_of_e_week)
160
159
  end
@@ -163,16 +162,16 @@ module DateRangeCovers
163
162
  #We need to iterate through every week and
164
163
  #see if the week is wholly contained in the
165
164
  #date range
166
- bottom_of_week = ADate.beginning_of_week(s_date, beginning_of_week_day)
167
- top_of_week = bottom_of_week + 6
165
+ bottom_of_week = s_date.beginning_of_week(beginning_of_week_day)
166
+ top_of_week = s_date.end_of_week(beginning_of_week_day)
168
167
 
169
168
  while bottom_of_week < e_date do
170
169
  if (s_date..e_date).include?(bottom_of_week..top_of_week)\
171
170
  and !date_range_flows_into_selected_months?(bottom_of_week, top_of_week) # if part of a week already belongs to a covered month, we should not add that week to the list
172
171
  weeks << bottom_of_week unless is_covered?(bottom_of_week)
173
172
  end
174
- bottom_of_week += 7
175
- top_of_week = bottom_of_week + 6
173
+ bottom_of_week = bottom_of_week.next_week(beginning_of_week_day)
174
+ top_of_week = bottom_of_week.end_of_week(beginning_of_week_day)
176
175
  end
177
176
 
178
177
  covs[:weeks] = weeks.compact.uniq.sort
@@ -259,8 +258,8 @@ module DateRangeCovers
259
258
 
260
259
  if !is_covered and covs[:weeks] and !covs[:weeks].empty?
261
260
  covs[:weeks].each do |week_date|
262
- start_week = ADate.beginning_of_week(week_date, beginning_of_week_day)
263
- end_week = ADate.end_of_week(week_date, beginning_of_week_day)
261
+ start_week = week_date.beginning_of_week(beginning_of_week_day)
262
+ end_week = week_date.end_of_week(beginning_of_week_day)
264
263
  is_covered = (start_week..end_week).include?(dates) ? true : false
265
264
  break if is_covered
266
265
  end
@@ -481,7 +481,8 @@ describe DateRangeCovers do
481
481
  context "when dates in the same week" do
482
482
  context 'when dates are the same' do
483
483
  let(:date) { Date.today }
484
- let(:drange) { DateRangeCovers::DateRange.new(date, date, :sunday) }
484
+ let(:start_of_week) { :sunday }
485
+ let(:drange) { DateRangeCovers::DateRange.new(date, date, start_of_week) }
485
486
 
486
487
  context 'when include is nil' do
487
488
  let(:weeks) { drange.weeks_covered }
@@ -494,7 +495,7 @@ describe DateRangeCovers do
494
495
  let(:weeks) { drange.weeks_covered(:include => :start_week) }
495
496
  it 'should return week containing the start date' do
496
497
  weeks.should_not be_empty
497
- weeks.should include ADate.beginning_of_week(date)
498
+ weeks.should include date.beginning_of_week(start_of_week)
498
499
  end
499
500
  end
500
501
 
@@ -502,7 +503,7 @@ describe DateRangeCovers do
502
503
  let(:weeks) { drange.weeks_covered(:include => :end_week) }
503
504
  it 'should return week containing the end date' do
504
505
  weeks.should_not be_empty
505
- weeks.should include ADate.beginning_of_week(date)
506
+ weeks.should include date.beginning_of_week(start_of_week)
506
507
  end
507
508
  end
508
509
 
@@ -510,7 +511,7 @@ describe DateRangeCovers do
510
511
  let(:weeks) { drange.weeks_covered(:include => :both) }
511
512
  it 'should return weeks containing the start date and the end date' do
512
513
  weeks.should_not be_empty
513
- weeks.should include ADate.beginning_of_week(date)
514
+ weeks.should include date.beginning_of_week(start_of_week)
514
515
  end
515
516
  end
516
517
  end
@@ -520,7 +521,8 @@ describe DateRangeCovers do
520
521
  context '2013-03-02(Saturday) to 2013-03-03(Sunday)' do
521
522
  let(:start_date) { Date.parse('2013-03-02') }
522
523
  let(:end_date) { Date.parse('2013-03-03') }
523
- let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, :sunday) }
524
+ let(:start_of_week) { :sunday }
525
+ let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, start_of_week) }
524
526
 
525
527
  context 'when include is nil' do
526
528
  let(:weeks) { drange.weeks_covered }
@@ -533,7 +535,7 @@ describe DateRangeCovers do
533
535
  let(:weeks) { drange.weeks_covered(:include => :start_week) }
534
536
  it 'should return beginning of start week' do
535
537
  weeks.should_not be_empty
536
- weeks.should include ADate.beginning_of_week(start_date)
538
+ weeks.should include start_date.beginning_of_week(start_of_week)
537
539
  end
538
540
  end
539
541
 
@@ -541,7 +543,7 @@ describe DateRangeCovers do
541
543
  let(:weeks) { drange.weeks_covered(:include => :end_week) }
542
544
  it 'should return beginning of end week' do
543
545
  weeks.should_not be_empty
544
- weeks.should include ADate.beginning_of_week(end_date)
546
+ weeks.should include end_date.beginning_of_week(start_of_week)
545
547
  end
546
548
  end
547
549
 
@@ -549,8 +551,8 @@ describe DateRangeCovers do
549
551
  let(:weeks) { drange.weeks_covered(:include => :both) }
550
552
  it 'should return beginning of start week and end week' do
551
553
  weeks.should_not be_empty
552
- weeks.should include ADate.beginning_of_week(end_date)
553
- weeks.should include ADate.beginning_of_week(start_date)
554
+ weeks.should include start_date.beginning_of_week(start_of_week)
555
+ weeks.should include end_date.beginning_of_week(start_of_week)
554
556
  end
555
557
  end
556
558
  end
@@ -558,12 +560,13 @@ describe DateRangeCovers do
558
560
  context '2013-03-03(Sunday) to 2013-03-09(Saturday)' do
559
561
  let(:start_date) { Date.parse('2013-03-03') }
560
562
  let(:end_date) { Date.parse('2013-03-09') }
561
- let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, :sunday) }
563
+ let(:start_of_week) { :sunday }
564
+ let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, start_of_week) }
562
565
  context 'when include is nil' do
563
566
  let(:weeks) { drange.weeks_covered }
564
567
  it 'should return week with 2013-03-03 as the date' do
565
568
  weeks.should_not be_empty
566
- weeks.should include ADate.beginning_of_week(start_date)
569
+ weeks.should include start_date.beginning_of_week(start_of_week)
567
570
  end
568
571
  end
569
572
 
@@ -571,7 +574,7 @@ describe DateRangeCovers do
571
574
  let(:weeks) { drange.weeks_covered(:include => :start_week) }
572
575
  it 'should return beginning of start week' do
573
576
  weeks.should_not be_empty
574
- weeks.should include ADate.beginning_of_week(start_date)
577
+ weeks.should include start_date.beginning_of_week(start_of_week)
575
578
  end
576
579
  end
577
580
 
@@ -579,7 +582,7 @@ describe DateRangeCovers do
579
582
  let(:weeks) { drange.weeks_covered(:include => :end_week) }
580
583
  it 'should return beginning of end week' do
581
584
  weeks.should_not be_empty
582
- weeks.should include ADate.beginning_of_week(end_date)
585
+ weeks.should include end_date.beginning_of_week(start_of_week)
583
586
  end
584
587
  end
585
588
 
@@ -587,8 +590,8 @@ describe DateRangeCovers do
587
590
  let(:weeks) { drange.weeks_covered(:include => :both) }
588
591
  it 'should return beginning of start week and end week' do
589
592
  weeks.should_not be_empty
590
- weeks.should include ADate.beginning_of_week(end_date)
591
- weeks.should include ADate.beginning_of_week(start_date)
593
+ weeks.should include end_date.beginning_of_week(start_of_week)
594
+ weeks.should include start_date.beginning_of_week(start_of_week)
592
595
  end
593
596
  end
594
597
  end
@@ -596,13 +599,14 @@ describe DateRangeCovers do
596
599
  context '2013-03-03(Sunday) to 2013-03-10(Sunday)' do
597
600
  let(:start_date) { Date.parse('2013-03-03') }
598
601
  let(:end_date) { Date.parse('2013-03-10') }
599
- let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, :sunday) }
602
+ let(:start_of_week) { :sunday }
603
+ let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, start_of_week) }
600
604
  context 'when include is nil' do
601
605
  let(:weeks) { drange.weeks_covered }
602
606
  it 'should return week with 2013-03-03 as the date' do
603
607
  weeks.should_not be_empty
604
- weeks.should include ADate.beginning_of_week(start_date)
605
- weeks.should_not include ADate.beginning_of_week(end_date)
608
+ weeks.should include start_date.beginning_of_week(start_of_week)
609
+ weeks.should_not include end_date.beginning_of_week(start_of_week)
606
610
  end
607
611
  end
608
612
 
@@ -610,8 +614,8 @@ describe DateRangeCovers do
610
614
  let(:weeks) { drange.weeks_covered(:include => :start_week) }
611
615
  it 'should return beginning of start week' do
612
616
  weeks.should_not be_empty
613
- weeks.should include ADate.beginning_of_week(start_date)
614
- weeks.should_not include ADate.beginning_of_week(end_date)
617
+ weeks.should include start_date.beginning_of_week(start_of_week)
618
+ weeks.should_not include end_date.beginning_of_week(start_of_week)
615
619
  end
616
620
  end
617
621
 
@@ -619,8 +623,8 @@ describe DateRangeCovers do
619
623
  let(:weeks) { drange.weeks_covered(:include => :end_week) }
620
624
  it 'should return beginning of end week' do
621
625
  weeks.should_not be_empty
622
- weeks.should include ADate.beginning_of_week(end_date)
623
- weeks.should include ADate.beginning_of_week(start_date)
626
+ weeks.should include end_date.beginning_of_week(start_of_week)
627
+ weeks.should include start_date.beginning_of_week(start_of_week)
624
628
  end
625
629
  end
626
630
 
@@ -628,8 +632,8 @@ describe DateRangeCovers do
628
632
  let(:weeks) { drange.weeks_covered(:include => :both) }
629
633
  it 'should return beginning of start week and end week' do
630
634
  weeks.should_not be_empty
631
- weeks.should include ADate.beginning_of_week(end_date)
632
- weeks.should include ADate.beginning_of_week(start_date)
635
+ weeks.should include end_date.beginning_of_week(start_of_week)
636
+ weeks.should include start_date.beginning_of_week(start_of_week)
633
637
  end
634
638
  end
635
639
  end
@@ -637,7 +641,8 @@ describe DateRangeCovers do
637
641
  context '2013-03-05(Tuesday) to 2013-03-31(Sunday)' do
638
642
  let(:start_date) { Date.parse('2013-03-05') }
639
643
  let(:end_date) { Date.parse('2013-03-31') }
640
- let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, :sunday) }
644
+ let(:start_of_week) { :sunday }
645
+ let(:drange) { DateRangeCovers::DateRange.new(start_date, end_date, start_of_week) }
641
646
  context 'when include is nil' do
642
647
  let(:weeks) { drange.weeks_covered }
643
648
  it 'should return weeks of 10, 17 and 24' do
@@ -652,11 +657,11 @@ describe DateRangeCovers do
652
657
  let(:weeks) { drange.weeks_covered(:include => :start_week) }
653
658
  it 'should return beginning of start week' do
654
659
  weeks.length.should == 4
655
- weeks.should include ADate.beginning_of_week(start_date)
660
+ weeks.should include start_date.beginning_of_week(start_of_week)
656
661
  weeks.should include Date.parse('2013-03-10')
657
662
  weeks.should include Date.parse('2013-03-17')
658
663
  weeks.should include Date.parse('2013-03-24')
659
- weeks.should_not include ADate.beginning_of_week(end_date)
664
+ weeks.should_not include end_date.beginning_of_week(start_of_week)
660
665
  end
661
666
  end
662
667
 
@@ -664,11 +669,11 @@ describe DateRangeCovers do
664
669
  let(:weeks) { drange.weeks_covered(:include => :end_week) }
665
670
  it 'should return beginning of end week' do
666
671
  weeks.length.should == 4
667
- weeks.should_not include ADate.beginning_of_week(start_date)
672
+ weeks.should_not include start_date.beginning_of_week(start_of_week)
668
673
  weeks.should include Date.parse('2013-03-10')
669
674
  weeks.should include Date.parse('2013-03-17')
670
675
  weeks.should include Date.parse('2013-03-24')
671
- weeks.should include ADate.beginning_of_week(end_date)
676
+ weeks.should include end_date.beginning_of_week(start_of_week)
672
677
  end
673
678
  end
674
679
 
@@ -676,11 +681,11 @@ describe DateRangeCovers do
676
681
  let(:weeks) { drange.weeks_covered(:include => :both) }
677
682
  it 'should return beginning of start week and end week' do
678
683
  weeks.length.should == 5
679
- weeks.should include ADate.beginning_of_week(start_date)
684
+ weeks.should include start_date.beginning_of_week(start_of_week)
680
685
  weeks.should include Date.parse('2013-03-10')
681
686
  weeks.should include Date.parse('2013-03-17')
682
687
  weeks.should include Date.parse('2013-03-24')
683
- weeks.should include ADate.beginning_of_week(end_date)
688
+ weeks.should include end_date.beginning_of_week(start_of_week)
684
689
  end
685
690
  end
686
691
  end
@@ -690,7 +695,8 @@ describe DateRangeCovers do
690
695
  describe "#dates_covered" do
691
696
  context "when start_date and end_date are the same" do
692
697
  let(:date) { Date.today }
693
- let(:drange) { DateRangeCovers::DateRange.new(date, date, :sunday) }
698
+ let(:start_of_week) { :sunday }
699
+ let(:drange) { DateRangeCovers::DateRange.new(date, date, start_of_week) }
694
700
 
695
701
  context 'when include is nil' do
696
702
  let(:dates) { drange.dates_covered }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date_range_covers
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Antall Fernandes
@@ -61,18 +61,18 @@ dependencies:
61
61
  type: :development
62
62
  version_requirements: *id003
63
63
  - !ruby/object:Gem::Dependency
64
- name: rails
64
+ name: activesupport
65
65
  prerelease: false
66
66
  requirement: &id004 !ruby/object:Gem::Requirement
67
67
  none: false
68
68
  requirements:
69
69
  - - ~>
70
70
  - !ruby/object:Gem::Version
71
- hash: 5
71
+ hash: 3
72
72
  segments:
73
- - 2
74
73
  - 3
75
- version: "2.3"
74
+ - 2
75
+ version: "3.2"
76
76
  type: :development
77
77
  version_requirements: *id004
78
78
  description: The gem helps find the years, months, weeks and days covered by a date range
@@ -92,10 +92,8 @@ files:
92
92
  - README.md
93
93
  - Rakefile
94
94
  - date_range_covers.gemspec
95
- - lib/a_date.rb
96
95
  - lib/date_range_covers.rb
97
96
  - lib/date_range_covers/version.rb
98
- - spec/a_date_spec.rb
99
97
  - spec/date_range_covers_spec.rb
100
98
  homepage: ""
101
99
  licenses:
@@ -131,5 +129,4 @@ signing_key:
131
129
  specification_version: 3
132
130
  summary: ""
133
131
  test_files:
134
- - spec/a_date_spec.rb
135
132
  - spec/date_range_covers_spec.rb
data/lib/a_date.rb DELETED
@@ -1,26 +0,0 @@
1
- module ADate
2
-
3
- @@DAYS_OF_WEEK = [
4
- :sunday,
5
- :monday,
6
- :tuesday,
7
- :wednesday,
8
- :thursday,
9
- :friday,
10
- :saturday
11
- ]
12
-
13
- def self.beginning_of_week(date, beginning_of_week_day = :sunday)
14
- beginning_of_week_adj = @@DAYS_OF_WEEK.index beginning_of_week_day
15
-
16
- current_day_number = 0
17
- current_day_number = date.wday if date.wday != 0
18
- current_day_number = 7 if date.wday == 0 and beginning_of_week_adj == 1
19
-
20
- date = date - current_day_number + beginning_of_week_adj
21
- end
22
-
23
- def self.end_of_week(date, beginning_of_week_day = :sunday)
24
- beginning_of_week(date, beginning_of_week_day) + 6
25
- end
26
- end
data/spec/a_date_spec.rb DELETED
@@ -1,86 +0,0 @@
1
- require 'lib/a_date'
2
- require 'date'
3
-
4
- describe Date do
5
- describe '#beginning_of_week and #end_of_week' do
6
-
7
- context 'when beginning_of_week day is sunday' do
8
- context 'when date is a sunday' do
9
- let(:date) { Date.parse('2013-03-03') }
10
-
11
- it 'should return 2013-03-03' do
12
- ADate.beginning_of_week(date).should == date
13
- end
14
-
15
- it 'should return 2013-03-09' do
16
- ADate.end_of_week(date).should == Date.parse('2013-03-09')
17
- end
18
- end
19
-
20
- context 'when date is a monday' do
21
- let(:date) { Date.parse('2013-03-04') }
22
-
23
- it 'should return 2013-03-03' do
24
- ADate.beginning_of_week(date).should == Date.parse('2013-03-03')
25
- end
26
-
27
- it 'should return 2013-03-09' do
28
- ADate.end_of_week(date).should == Date.parse('2013-03-09')
29
- end
30
- end
31
-
32
- context 'when date is a saturday' do
33
- let(:date) { Date.parse('2013-03-09') }
34
-
35
- it 'should return 2013-03-03' do
36
- ADate.beginning_of_week(date).should == Date.parse('2013-03-03')
37
- end
38
-
39
- it 'should return 2013-03-09' do
40
- ADate.end_of_week(date).should == Date.parse('2013-03-09')
41
- end
42
- end
43
- end
44
-
45
- context 'when beginning_of_week day is monday' do
46
- context 'when date is a sunday' do
47
- let(:date) { Date.parse('2013-03-03') }
48
-
49
- it 'should return 2013-02-25' do
50
- ADate.beginning_of_week(date, :monday).should == Date.parse('2013-02-25')
51
- end
52
-
53
- it 'should return 2013-03-03' do
54
- ADate.end_of_week(date, :monday).should == Date.parse('2013-03-03')
55
- end
56
- end
57
-
58
- context 'when date is a monday' do
59
- let(:date) { Date.parse('2013-03-04') }
60
-
61
- it 'should return 2013-03-04' do
62
- ADate.beginning_of_week(date, :monday).should == Date.parse('2013-03-04')
63
- end
64
-
65
- it 'should return 2013-03-10' do
66
- ADate.end_of_week(date, :monday).should == Date.parse('2013-03-10')
67
- end
68
- end
69
-
70
- context 'when date is a saturday' do
71
- let(:date) { Date.parse('2013-03-09') }
72
-
73
- it 'should return 2013-03-04' do
74
- ADate.beginning_of_week(date, :monday).should == Date.parse('2013-03-04')
75
- end
76
-
77
- it 'should return 2013-03-10' do
78
- ADate.end_of_week(date, :monday).should == Date.parse('2013-03-10')
79
- end
80
- end
81
- end
82
-
83
- end
84
- end
85
-
86
-