nextday 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,4 +3,5 @@
3
3
  Gemfile.lock
4
4
  pkg/*
5
5
  .yardoc
6
- doc/
6
+ doc/
7
+ coverage
data/.travis.yml ADDED
@@ -0,0 +1,2 @@
1
+ rvm:
2
+ - 1.9.3
data/Gemfile CHANGED
@@ -2,14 +2,3 @@ source "http://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in nextday.gemspec
4
4
  gemspec
5
-
6
- gem 'rake'
7
-
8
- require 'rbconfig'
9
-
10
- if RbConfig::CONFIG['target_os'] =~ /darwin/i
11
- gem 'rb-fsevent', '>= 0.4.0', :require => false
12
- gem 'growl_notify', :require => false
13
- gem 'guard', '~> 0.6.0', :require => false
14
- gem 'guard-rspec', '~> 0.4.0', :require => false
15
- end
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Nextday
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/robwilliams/nextday.png?branch=master)](http://travis-ci.org/robwilliams/nextday)
4
+
3
5
  Finds the Next Working Day even if holidays are in the way.
4
6
 
5
7
  Extends ```Date```, ```Time``` and ```DateTime``` to allow you to find the next working day
@@ -29,6 +31,28 @@ DateTime.today.working_day?
29
31
  Time.now.working_day?
30
32
  ```
31
33
 
34
+ ### When will an item be despatched?
35
+ ```ruby
36
+ Date.today.despatch_day
37
+ DateTime.today.despatch_day
38
+ Time.now.despatch_day
39
+ ```
40
+
41
+ ### When will an item be delivered?
42
+ ```ruby
43
+ Date.today.delivery_day
44
+ DateTime.today.delivery_day
45
+ Time.now.delivery_day
46
+ ```
47
+
48
+ ## Configuration
49
+
50
+ To set the cut off time to a different value:
51
+
52
+ ```ruby
53
+ Nextday::Config.cut_off_time = "18:47"
54
+ ```
55
+
32
56
  ## Installation
33
57
 
34
58
  To use with bundler add nextday to your gem file.
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -1,5 +1,8 @@
1
1
  module Nextday
2
-
2
+
3
+ ##
4
+ # The time a warehouse or other shop closes. Used
5
+ # to specify which day an item will be despatched.
3
6
  CUT_OFF_TIME = "16:00"
4
7
 
5
8
  class Config
@@ -20,4 +23,4 @@ module Nextday
20
23
  end
21
24
  end
22
25
  end
23
- end
26
+ end
@@ -1,9 +1,12 @@
1
1
  module Nextday
2
-
3
2
  module DateExtension
4
-
5
3
  ##
4
+ # The day an item or service will be despatched.
5
+ # If the warehouse closes at say 4:00pm then this will
6
+ # be taken into account and the despatch day will be the
7
+ # next working day.
6
8
  #
9
+ # @return [Date]
7
10
  def despatch_day
8
11
  if working_day?
9
12
  if to_time < cut_off_time
@@ -15,29 +18,33 @@ module Nextday
15
18
  next_working_day
16
19
  end
17
20
  end
18
-
21
+
22
+ ##
23
+ # The next working day after an item has been despatched.
24
+ #
25
+ # @return [Date]
19
26
  def delivery_day
20
27
  despatch_day.next_working_day
21
28
  end
22
-
29
+
23
30
  def cut_off_time
24
31
  hour, minute = Config.cut_off_hour, Config.cut_off_minute
25
-
32
+
26
33
  Time.new(year, month, day, hour, minute)
27
34
  end
28
-
35
+
29
36
  ##
30
37
  # The next working day after the current date
31
38
  #
32
39
  # @return [Date] Next Working Day
33
40
  def next_working_day
34
41
  next_day = to_date + 1
35
-
42
+
36
43
  # keep going until the next day is a working day
37
44
  while !next_day.working_day?
38
45
  next_day = next_day + 1
39
46
  end
40
-
47
+
41
48
  next_day
42
49
  end
43
50
 
@@ -47,12 +54,12 @@ module Nextday
47
54
  # @return [Date] Previous Working Day
48
55
  def previous_working_day
49
56
  previous_day = to_date - 1
50
-
57
+
51
58
  # keep going until the next day is a working day
52
59
  while !previous_day.working_day?
53
60
  previous_day = previous_day - 1
54
61
  end
55
-
62
+
56
63
  previous_day
57
64
  end
58
65
 
@@ -63,7 +70,7 @@ module Nextday
63
70
  def working_day?
64
71
  !weekend? and !public_holiday?
65
72
  end
66
-
73
+
67
74
  ##
68
75
  # Is the current date a public holiday?
69
76
  #
@@ -71,7 +78,7 @@ module Nextday
71
78
  def public_holiday?
72
79
  Holidays.dates.include?(to_date)
73
80
  end
74
-
81
+
75
82
  ##
76
83
  # Is the current date on the weekend?
77
84
  #
@@ -79,21 +86,5 @@ module Nextday
79
86
  def weekend?
80
87
  saturday? or sunday?
81
88
  end
82
-
83
- ##
84
- # Is the current date a saturday?
85
- #
86
- # @return [Boolean]
87
- def saturday?
88
- to_date.wday == 6
89
- end if RUBY_VERSION < '1.9'
90
-
91
- ##
92
- # Is the current date a saturday?
93
- #
94
- # @return [Boolean]
95
- def sunday?
96
- to_date.wday == 0
97
- end if RUBY_VERSION < '1.9'
98
89
  end
99
90
  end
@@ -1,3 +1,3 @@
1
1
  module Nextday
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/nextday.gemspec CHANGED
@@ -22,7 +22,8 @@ Gem::Specification.new do |s|
22
22
  s.require_paths = ["lib"]
23
23
 
24
24
  # specify any dependencies here; for example:
25
- s.add_development_dependency('rspec', '~> 2.6.0')
25
+ s.add_development_dependency('rspec', '~> 2.10.0')
26
26
  s.add_development_dependency('yard')
27
+ s.add_development_dependency('rake')
27
28
  # s.add_runtime_dependency "rest-client"
28
29
  end
data/spec/spec_helper.rb CHANGED
@@ -30,4 +30,4 @@ def sundays
30
30
  sunday = today
31
31
 
32
32
  sunday.step(sunday + 365, 7).to_a
33
- end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nextday
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,43 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-14 00:00:00.000000000 Z
12
+ date: 2012-06-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70211612224480 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 2.6.0
21
+ version: 2.10.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70211612224480
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.10.0
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: yard
27
- requirement: &70211612224060 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
28
49
  none: false
29
50
  requirements:
30
51
  - - ! '>='
@@ -32,7 +53,12 @@ dependencies:
32
53
  version: '0'
33
54
  type: :development
34
55
  prerelease: false
35
- version_requirements: *70211612224060
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
36
62
  description: ! "\n Finds the Next Working Day even if holidays are in the way.\n
37
63
  \ Extends Date with a .next_working_day instance method.\n "
38
64
  email:
@@ -43,8 +69,8 @@ extra_rdoc_files: []
43
69
  files:
44
70
  - .gitignore
45
71
  - .rspec
72
+ - .travis.yml
46
73
  - Gemfile
47
- - Guardfile
48
74
  - README.md
49
75
  - Rakefile
50
76
  - lib/nextday.rb
@@ -74,15 +100,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
74
100
  - - ! '>='
75
101
  - !ruby/object:Gem::Version
76
102
  version: '0'
103
+ segments:
104
+ - 0
105
+ hash: 798981716380311647
77
106
  required_rubygems_version: !ruby/object:Gem::Requirement
78
107
  none: false
79
108
  requirements:
80
109
  - - ! '>='
81
110
  - !ruby/object:Gem::Version
82
111
  version: '0'
112
+ segments:
113
+ - 0
114
+ hash: 798981716380311647
83
115
  requirements: []
84
116
  rubyforge_project: nextday
85
- rubygems_version: 1.8.15
117
+ rubygems_version: 1.8.24
86
118
  signing_key:
87
119
  specification_version: 3
88
120
  summary: Finds the Next Working Day even if holidays are in the way.
@@ -92,3 +124,4 @@ test_files:
92
124
  - spec/lib/nextday/holiday_spec.rb
93
125
  - spec/lib/nextday/holidays_spec.rb
94
126
  - spec/spec_helper.rb
127
+ has_rdoc:
data/Guardfile DELETED
@@ -1,6 +0,0 @@
1
- guard 'rspec', :version => 2 do
2
- watch(%r{^spec/.+_spec\.rb$})
3
- watch(%r{^spec/support/.+\.rb$}) { "spec/" }
4
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
5
- watch('spec/spec_helper.rb') { "spec/" }
6
- end