jp_stock_rule 0.1.1 → 0.2.0

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