banking_date_tools 0.0.2 → 0.0.3

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