banking_date_tools 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7088815698b42f5165008ef463a5c5853ab4c792
4
+ data.tar.gz: 0e15c2ce342ef31173ca5e56450ecf76640e55b2
5
+ SHA512:
6
+ metadata.gz: d87770534bf4d4c8a651be64217f31212c3b5574dae172b0c2c24830bda22b1bc03bfc0ce2a9b6238c267a5420ce29a44d05eccc9a062fe14514585a998e1c0a
7
+ data.tar.gz: 2544b1aaf60175b02569d09cbe4a49e1bec0df0c019b59ca0d16023474a3cdeafe135e1baa9058d127e8119c8c4eb1489ff1e74f5a9c39be803d85193a1a6acb
@@ -0,0 +1,43 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'benchmark/ips'
3
+ require 'banking_date_tools'
4
+ require 'rails'
5
+ puts `ruby -v`
6
+
7
+
8
+ # HotTub uses persisted blocks in several places.
9
+
10
+ # Tests performance of passing a known block to block call or yield.
11
+
12
+ class TestDates
13
+ include BankingDateTools
14
+ end
15
+
16
+
17
+ Benchmark.ips do |x|
18
+ date = "2015-12-25".to_date
19
+ holidays = ["2015-12-25".to_date]
20
+ options = {
21
+ :no_weekends => true,
22
+ :no_holidays => true,
23
+ :holidays => holidays
24
+ }
25
+
26
+ x.report("get_banking_day") do
27
+ TestDates.get_banking_day(date,options)
28
+ end
29
+
30
+ end
31
+ # V-0.0.3
32
+ # ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
33
+ # Calculating -------------------------------------
34
+ # get_banking_day 7.874k i/100ms
35
+ # -------------------------------------------------
36
+ # get_banking_day 87.720k (± 1.6%) i/s - 440.944k
37
+
38
+ # V-0.0.4
39
+ # ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
40
+ # Calculating -------------------------------------
41
+ # get_banking_day 15.260k i/100ms
42
+ # -------------------------------------------------
43
+ # get_banking_day 179.441k (± 3.1%) i/s - 900.340k
data/date_tools.gemspec CHANGED
@@ -11,10 +11,11 @@ Gem::Specification.new do |s|
11
11
  s.homepage = ""
12
12
  s.summary = %q{Banking Date Tools}
13
13
  s.description = %q{Banking Date Tools}
14
-
15
- s.add_development_dependency 'rspec'
16
- s.add_development_dependency 'mocha'
17
- s.rubyforge_project = "banking_date_tools"
14
+
15
+ s.add_development_dependency "rspec"
16
+ s.add_development_dependency "rspec-autotest"
17
+ s.add_development_dependency "autotest"
18
+ s.add_development_dependency "mocha"
18
19
 
19
20
  s.files = `git ls-files`.split("\n")
20
21
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -1,16 +1,13 @@
1
1
  require 'date'
2
2
  module BankingDateTools
3
3
 
4
- def banking_day?(date=Date.today, options={})
5
- date = Date.today if date.nil?
6
- # Set defaults
7
- options = {
8
- :holidays => [],
9
- :force_allow_days => []
10
- }.merge!(options)
11
-
12
- unless options[:force_allow_days].include?(date)
13
- return false if options[:no_holidays] && options[:holidays].include?(date)
4
+ def banking_day?(date=Date.today, options={})
5
+ # defaults
6
+ holidays = options[:holidays] || []
7
+ force_allow_days = options[:force_allow_days] || []
8
+
9
+ unless force_allow_days.include?(date)
10
+ return false if options[:no_holidays] && holidays.include?(date)
14
11
  if options[:no_weekends]
15
12
  return false if (date.saturday? || date.sunday?)
16
13
  else
@@ -21,26 +18,30 @@ module BankingDateTools
21
18
  true
22
19
  end
23
20
 
24
- def get_banking_day(date, options={})
25
- options = ({:padding => 0, :previous => false}.merge(options))
26
- adjusted_padding = (options[:padding].abs + 1)
21
+ def get_banking_day(date, options={})
22
+ padding = options[:padding] || 0
23
+ adjusted_padding = (padding.abs + 1)
24
+
27
25
  increment = (options[:previous] ? -1 : 1)
26
+
28
27
  adjusted_padding.times do |p|
29
- date = (date + increment ) if p != 0
28
+ date = date.next_day(increment) if p != 0
30
29
  while !banking_day?(date, options)
31
- date = (date + increment )
30
+ date = date.next_day(increment)
32
31
  end
33
32
  end
34
33
  date
35
34
  end
36
35
 
37
36
  def get_next_banking_day(date, options={})
38
- options = ({:padding => 1, :previous => false}.merge(options))
37
+ options[:padding] ||= 1
38
+ options[:previous] = false
39
39
  get_banking_day(date, options)
40
40
  end
41
41
 
42
42
  def get_previous_banking_day(date, options={})
43
- options = ({:padding => 1, :previous => true}.merge(options))
43
+ options[:padding] ||= 1
44
+ options[:previous] = true
44
45
  get_banking_day(date, options)
45
46
  end
46
47
 
@@ -48,21 +49,6 @@ module BankingDateTools
48
49
  if date.blank?
49
50
  return Date.today
50
51
  end
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
52
  date.to_date
67
53
  end
68
54
 
@@ -3,23 +3,4 @@ Time.class_eval do
3
3
  def tick
4
4
  ((self.to_f) *1000).to_i
5
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
6
+ end
@@ -1,3 +1,3 @@
1
1
  module BankingDateTools
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -16,21 +16,21 @@ describe BankingDateTools, "get_banking_day" do
16
16
  context "previous == true" do
17
17
  it "should role date to previous banking day if on weekend and no_weekends are true" do
18
18
  options = {:previous => true, :padding => 0, :no_weekends => true}
19
- get_previous_banking_day(Date.parse("2012-03-31"),options).should eql(Date.parse("2012-03-30"))
19
+ get_banking_day(Date.parse("2012-03-31"),options).should eql(Date.parse("2012-03-30"))
20
20
  end
21
21
 
22
22
  it "should role date to previous banking day if on weekend and no_weekends are true" do
23
23
  options = {:previous => true,:padding => 0, :no_weekends => true, :no_holidays => true, :holidays => [Date.parse("2012-03-30")]}
24
- get_previous_banking_day(Date.parse("2012-03-31"),options).should eql(Date.parse("2012-03-29"))
24
+ get_banking_day(Date.parse("2012-03-31"),options).should eql(Date.parse("2012-03-29"))
25
25
  end
26
26
 
27
27
  it "should role date to previous banking day if padding = 1" do
28
28
  options = {:previous => true,:padding => 1}
29
- get_previous_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-26"))
29
+ get_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-26"))
30
30
  end
31
31
  it "should role date to 2 banking days ago padding = 2" do
32
32
  options = {:previous => true,:padding => 2}
33
- get_previous_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-25"))
33
+ get_banking_day(Date.parse("2012-03-27"),options).should eql(Date.parse("2012-03-25"))
34
34
  end
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,38 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: banking_date_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Joshua T Mckinney
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-07-02 00:00:00.000000000Z
11
+ date: 2015-12-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rspec
16
- requirement: &70184074299280 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *70184074299280
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-autotest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: autotest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
25
55
  - !ruby/object:Gem::Dependency
26
56
  name: mocha
27
- requirement: &70184074298820 !ruby/object:Gem::Requirement
28
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
29
58
  requirements:
30
- - - ! '>='
59
+ - - ">="
31
60
  - !ruby/object:Gem::Version
32
61
  version: '0'
33
62
  type: :development
34
63
  prerelease: false
35
- version_requirements: *70184074298820
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
36
69
  description: Banking Date Tools
37
70
  email:
38
71
  - joshmckin@gmail.com
@@ -40,12 +73,12 @@ executables: []
40
73
  extensions: []
41
74
  extra_rdoc_files: []
42
75
  files:
43
- - .autotest
44
- - .gitignore
45
- - .rspec
76
+ - ".gitignore"
77
+ - ".rspec"
46
78
  - Gemfile
47
79
  - README
48
80
  - Rakefile
81
+ - benchmarks/benchmarks.rb
49
82
  - date_tools.gemspec
50
83
  - lib/banking_date_tools.rb
51
84
  - lib/banking_date_tools/banking_date_tools.rb
@@ -56,27 +89,26 @@ files:
56
89
  - spec/spec_helper.rb
57
90
  homepage: ''
58
91
  licenses: []
92
+ metadata: {}
59
93
  post_install_message:
60
94
  rdoc_options: []
61
95
  require_paths:
62
96
  - lib
63
97
  required_ruby_version: !ruby/object:Gem::Requirement
64
- none: false
65
98
  requirements:
66
- - - ! '>='
99
+ - - ">="
67
100
  - !ruby/object:Gem::Version
68
101
  version: '0'
69
102
  required_rubygems_version: !ruby/object:Gem::Requirement
70
- none: false
71
103
  requirements:
72
- - - ! '>='
104
+ - - ">="
73
105
  - !ruby/object:Gem::Version
74
106
  version: '0'
75
107
  requirements: []
76
- rubyforge_project: banking_date_tools
77
- rubygems_version: 1.8.6
108
+ rubyforge_project:
109
+ rubygems_version: 2.4.5.1
78
110
  signing_key:
79
- specification_version: 3
111
+ specification_version: 4
80
112
  summary: Banking Date Tools
81
113
  test_files:
82
114
  - spec/lib/banking_date_tools_spec.rb
data/.autotest DELETED
@@ -1,10 +0,0 @@
1
- Autotest.add_hook :reset do |at|
2
- at.clear_mappings
3
- at.add_mapping(/^(.*?)(_spec)?\.rb$/) { |filename, m|
4
- if m[2]
5
- filename
6
- else
7
- "#{m[1]}_spec.rb"
8
- end
9
- }
10
- end