date_range_covers 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
-