banking_date_tools 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.
@@ -1,5 +1,6 @@
1
1
  require 'date'
2
2
  module BankingDateTools
3
+
3
4
  def banking_day?(date=Date.today, options={})
4
5
  date = Date.today if date.nil?
5
6
  # Set defaults
@@ -10,20 +11,22 @@ module BankingDateTools
10
11
 
11
12
  unless options[:force_allow_days].include?(date)
12
13
  return false if options[:no_holidays] && options[:holidays].include?(date)
13
- return false if options[:no_weekends] && self.weekend?(date)
14
- return false if options[:no_saturdays] && self.saturday?(date)
15
- return false if options[:no_sundays] && self.sunday?(date)
14
+ if options[:no_weekends]
15
+ return false if (date.saturday? || date.sunday?)
16
+ else
17
+ return false if options[:no_saturdays] && date.saturday?
18
+ return false if options[:no_sundays] && date.sunday?
19
+ end
16
20
  end
17
21
  true
18
22
  end
19
-
20
23
 
21
24
  def get_banking_day(date, options={})
22
- options[:padding] ||= 0
25
+ options = ({:padding => 0, :previous => false}.merge(options))
23
26
  adjusted_padding = (options[:padding].abs + 1)
24
- increment = (options[:previous] ? -1 : 1)
25
- adjusted_padding.times do |p|
26
- date = (date + increment) unless ((p + 1) == adjusted_padding)
27
+ increment = (options[:previous] ? -1 : 1)
28
+ adjusted_padding.times do |p|
29
+ date = (date + increment ) if p != 0
27
30
  while !banking_day?(date, options)
28
31
  date = (date + increment )
29
32
  end
@@ -32,47 +35,35 @@ module BankingDateTools
32
35
  end
33
36
 
34
37
  def get_next_banking_day(date, options={})
35
- options[:previous] = false
38
+ options = ({:padding => 1, :previous => false}.merge(options))
36
39
  get_banking_day(date, options)
37
40
  end
38
41
 
39
42
  def get_previous_banking_day(date, options={})
40
- options[:previous] = true
43
+ options = ({:padding => 1, :previous => true}.merge(options))
41
44
  get_banking_day(date, options)
42
45
  end
43
46
 
44
- def weekend?(date)
45
- date.wday == 0 || date.wday == 6
46
- end
47
-
48
- def sunday?(date)
49
- date.wday == 0
50
- end
51
-
52
- def saturday?(date)
53
- date.wday == 6
54
- end
55
-
56
47
  def safe_date(date)
57
48
  if date.blank?
58
49
  return Date.today
59
50
  end
60
- if date.class == String
61
- if date.include?("/") || date.include?("-")
62
- split = date.split("/") if date.include?("/")
63
- split = date.split("-") if date.include?("-")
64
- time = ""
65
- if split[2] && split[2].include?(":")
66
- year_time = split[2].split(" ")
67
- split[2] = year_time[0]
68
- time = year_time[1]
69
- end
70
- safe = "#{split[2]}-#{split[0]}-#{split[1]}"
71
- safe << " #{time}" unless time.blank?
72
- return safe if split.length == 3 && split[2].length == 4
73
- end
74
- end
75
- date
51
+ # if date.class == String
52
+ # if date.include?("/") || date.include?("-")
53
+ # split = date.split("/") if date.include?("/")
54
+ # split = date.split("-") if date.include?("-")
55
+ # time = ""
56
+ # if split[2] && split[2].include?(":")
57
+ # year_time = split[2].split(" ")
58
+ # split[2] = year_time[0]
59
+ # time = year_time[1]
60
+ # end
61
+ # safe = "#{split[2]}-#{split[0]}-#{split[1]}"
62
+ # safe << " #{time}" unless time.blank?
63
+ # return safe if split.length == 3 && split[2].length == 4
64
+ # end
65
+ # end
66
+ date.to_date
76
67
  end
77
68
 
78
69
  # creates a date integer formated like a MS.Net date tick
@@ -80,8 +71,8 @@ module BankingDateTools
80
71
  if date.blank?
81
72
  date = Time.now
82
73
  else
83
- date = safe_date(date).to_time
74
+ date = date.to_time
84
75
  end
85
- ((date.to_f) *1000).to_i
76
+ date.tick
86
77
  end
87
78
  end
@@ -0,0 +1,25 @@
1
+ Time.class_eval do
2
+ # creates a date integer formated like a MS.Net date tick
3
+ def tick
4
+ ((self.to_f) *1000).to_i
5
+ end
6
+ end
7
+
8
+ String.class_eval do
9
+ def to_date
10
+ if self.include?("/") || self.include?("-")
11
+ split = self.split("/") if self.include?("/")
12
+ split = self.split("-") if self.include?("-")
13
+ time = ""
14
+ if split[2] && split[2].include?(":")
15
+ year_time = split[2].split(" ")
16
+ split[2] = year_time[0]
17
+ time = year_time[1]
18
+ end
19
+ safe = "#{split[2]}-#{split[0]}-#{split[1]}"
20
+ safe << " #{time}" unless time.blank?
21
+ return Date.parse(safe) if split.length == 3 && split[2].length == 4
22
+ end
23
+ Date.parse(self)
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module BankingDateTools
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'date'
2
+ require 'banking_date_tools/extend_ruby'
2
3
  require 'banking_date_tools/banking_date_tools'
3
4
  module BankingDateTools
4
5
  def self.root
@@ -1,9 +1,7 @@
1
1
  require 'spec_helper'
2
2
  include BankingDateTools
3
- describe BankingDateTools, "get_banking_day" do
4
-
5
- context "padding == 0" do
6
-
3
+ describe BankingDateTools, "get_banking_day" do
4
+ context "padding == 0" do
7
5
  context "no_weekends == true" do
8
6
  it "should role date to following banking day if on weekend and no_weekends are true" do
9
7
  options = {:padding => 0, :no_weekends => true}
@@ -33,17 +31,16 @@ describe BankingDateTools, "get_banking_day" do
33
31
  it "should role date to 2 banking days ago padding = 2" do
34
32
  options = {:previous => true,:padding => 2}
35
33
  get_previous_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-25"))
36
- end
37
-
34
+ end
38
35
  end
39
36
  end
40
37
  end
38
+
41
39
  it "should desc" do
42
40
  options = {:padding => 1, :no_weekends => true}
43
41
  get_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-28"))
44
42
  end
45
-
46
-
43
+
47
44
  it "should desc" do
48
45
  options = {:padding => 2, :no_weekends => true}
49
46
  get_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-29"))
@@ -58,23 +55,23 @@ end
58
55
  describe BankingDateTools, "get_next_banking_day" do
59
56
  it "should desc" do
60
57
  options = {:no_weekends => true}
61
- get_next_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-27"))
58
+ get_next_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-28"))
62
59
  end
63
60
  it "should desc" do
64
- options = {:padding => 1, :no_weekends => true}
65
- get_next_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-28"))
61
+ options = {:padding => 2, :no_weekends => true}
62
+ get_next_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-29"))
66
63
  end
67
64
  end
68
65
 
69
66
  describe BankingDateTools, "get_previous_banking_day" do
70
67
  it "should desc" do
71
68
  options = {:no_weekends => true}
72
- get_previous_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-27"))
69
+ get_previous_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-26"))
73
70
  end
74
71
 
75
72
  it "should desc" do
76
- options = {:padding => 1, :no_weekends => true}
77
- get_previous_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-26"))
73
+ options = {:padding => 2, :no_weekends => true}
74
+ get_previous_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-23"))
78
75
  end
79
76
  end
80
77
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: banking_date_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-17 00:00:00.000000000Z
12
+ date: 2012-07-02 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70162087372440 !ruby/object:Gem::Requirement
16
+ requirement: &70184074299280 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70162087372440
24
+ version_requirements: *70184074299280
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &70162087468100 !ruby/object:Gem::Requirement
27
+ requirement: &70184074298820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70162087468100
35
+ version_requirements: *70184074298820
36
36
  description: Banking Date Tools
37
37
  email:
38
38
  - joshmckin@gmail.com
@@ -49,6 +49,7 @@ files:
49
49
  - date_tools.gemspec
50
50
  - lib/banking_date_tools.rb
51
51
  - lib/banking_date_tools/banking_date_tools.rb
52
+ - lib/banking_date_tools/extend_ruby.rb
52
53
  - lib/banking_date_tools/version.rb
53
54
  - spec/lib/banking_date_tools_spec.rb
54
55
  - spec/spec.opts