jp_stock_rule 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d6dd08e2f6a24cef7a4be3af08b17918f10c581
4
- data.tar.gz: 453401ea2a24869d4ccd49afcfb0e301e5c0915e
3
+ metadata.gz: 9614b6b0d7310e1e72fe17ac1d8e1df4c2963903
4
+ data.tar.gz: 949b175c8584a34a950fc198bcd62aa25350b639
5
5
  SHA512:
6
- metadata.gz: 0793ab98c3b23b5ec7c726cc7f512b192000a53a84ed168d8927060853ee6c5beba8b709102dedc21d325203568c474d8705289d41962303f0d5e95c80122d28
7
- data.tar.gz: 0c8e00ae1c2077b2168a4a92fb27f6351a4362d43ef2bcecc7e8ce1064ece70e4037e47a7ce1af221490e25b4488b8389a84137906f00c21acb439683b92655b
6
+ metadata.gz: dff426adad58eed9e94966b5ac232d75c58ee525d926b690d522459438d810fb5a720e59b165cf014102d6652128cb67b207958e7225bb6cbe1b9870358ef66f
7
+ data.tar.gz: 7ea0e57cfac752bd1cd6d3727ff93a19f96c8f2724d429ff981ba352a7632ba35108cc2263015408e63a4b01db42d862e9ca275102d271dfda70a5288504a280
data/README.md CHANGED
@@ -42,6 +42,18 @@ For TOPIX100 stocks:
42
42
  JpStockRule.tick_size(7000, topix100: true) # => 1
43
43
  ```
44
44
 
45
+ Is the market open today?:
46
+
47
+ ```ruby
48
+ Date.today.jpx_business_day?
49
+ ```
50
+
51
+ Getting the next market-open day:
52
+
53
+ ```ruby
54
+ Date.today.next_jpx_business_day
55
+ ```
56
+
45
57
  ## Development
46
58
 
47
59
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -19,7 +19,10 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
+ spec.add_dependency "holiday_jp"
23
+
22
24
  spec.add_development_dependency "bundler", "~> 1.12"
23
25
  spec.add_development_dependency "rake"
24
26
  spec.add_development_dependency "minitest", "~> 5.0"
27
+ spec.add_development_dependency "minitest-power_assert"
25
28
  end
data/lib/jp_stock_rule.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "jp_stock_rule/version"
2
+ require "jp_stock_rule/core_ext/date"
2
3
 
3
4
  module JpStockRule
4
5
  # http://www.jpx.co.jp/equities/trading/domestic/06.html
@@ -0,0 +1,6 @@
1
+ require 'date'
2
+ require 'jp_stock_rule/date_extensions'
3
+
4
+ class Date
5
+ include JpStockRule::DateExtensions::InstanceMethods
6
+ end
@@ -0,0 +1,28 @@
1
+ require 'set'
2
+ require 'holiday_jp'
3
+ module JpStockRule
4
+ module DateExtensions
5
+ HOLIDAY_WDAYS = Set[0, 6].freeze
6
+ YEAR_END_AND_NEW_YEAR_HOLIDAYS = Set[[1, 1], [1, 2], [1, 3], [12, 31]].freeze
7
+
8
+ module InstanceMethods
9
+ # Returns it is a business day or not.
10
+ def jpx_business_day?
11
+ return false if HOLIDAY_WDAYS.include?(wday)
12
+ return false if YEAR_END_AND_NEW_YEAR_HOLIDAYS.include?([month, day])
13
+ return !HolidayJp.holiday?(self)
14
+ end
15
+
16
+ # Returns a next business day.
17
+ def next_jpx_business_day(days = 1)
18
+ raise ArgumentError, "days must be >= 0" if days < 0
19
+ next_day = self
20
+ while days > 0
21
+ next_day += 1
22
+ days -= 1 if next_day.jpx_business_day?
23
+ end
24
+ next_day
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module JpStockRule
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jp_stock_rule
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Yanagita
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-26 00:00:00.000000000 Z
11
+ date: 2016-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: holiday_jp
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-power_assert
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  description: JpStockRule is a utility for stock markets in Japan.
56
84
  email:
57
85
  - yanagi@shakenbu.org
@@ -69,6 +97,8 @@ files:
69
97
  - bin/setup
70
98
  - jp_stock_rule.gemspec
71
99
  - lib/jp_stock_rule.rb
100
+ - lib/jp_stock_rule/core_ext/date.rb
101
+ - lib/jp_stock_rule/date_extensions.rb
72
102
  - lib/jp_stock_rule/version.rb
73
103
  homepage: https://github.com/kyanagi/jp_stock_rule
74
104
  licenses: