banking_date_tools 0.0.3 → 0.0.4

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.
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