histock-filter 0.4.1 → 1.0.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
  SHA256:
3
- metadata.gz: 702f82aeffdad9007ab886f4d1bb507f1dda6e92b93d8873a2639b8db9bc64fe
4
- data.tar.gz: e04935f2d762a634f54588e9458b5337da3d5703af2eb5e9121c46905076bc69
3
+ metadata.gz: 0e1d2c1a1efb3cccc24b6e4fb796ffe98782a9cb197d3cf4172bd499a86ba4bf
4
+ data.tar.gz: f159be1dc865569c188c2443cfff0feda32f5d481b8b0a1c187f1fbda30211da
5
5
  SHA512:
6
- metadata.gz: 2417c08d600a358405532505b50db240d97cdd82d253f6d08786c50045c441bc4c352d2a72498191a8cd3fbd3845c38beb690cf200aa1d8498096c5cc4f97017
7
- data.tar.gz: dfd8f7ff5debda21abc2b8795c1d78a818c28bee09115aff9f4dcb409039c8a41897d6a7b37d002c8afff6a7b4e1b04c8ad32a26d0a2bad612f45a182a077133
6
+ metadata.gz: 131c409570ebe7cc1a28dca89b4a03e677573994ab241999d4585a72cf1722fe628efdbd9ebf21de257072a57354b17b33fd14631bc8eccb305b02c69ff1bd96
7
+ data.tar.gz: d1d90f1e7ea9e0b74ced86f93a8427a70af98c3b8e0829da9aff068cf6c129ae66b5f9aef37551233bbe8a31b3de6f6874b5672b4ad6645b8f13fe2e76c825fe
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## v1.0.0
2
+ [full changelog](http://github.com/ysato5654/histock-filter/compare/v0.4.1...v1.0.0)
3
+
4
+ * change class of output date
5
+ - String -> Integer / Float
6
+
1
7
  ## v0.4.1
2
8
  [full changelog](http://github.com/ysato5654/histock-filter/compare/v0.4.0...v0.4.1)
3
9
 
data/README.md CHANGED
@@ -34,26 +34,187 @@ $ gem install histock-filter
34
34
  ### Dividend Policy
35
35
 
36
36
  ```rb
37
+ require 'histock/filter'
38
+
37
39
  histock = Histock::Filter.new
38
40
  histock.dividend_policy('2330')
39
41
  # [
40
- # {"所屬年度" => "2019", "發放年度" => "2020", "除權日" => "", "除息日" => "06/18", "除權息前股價" => "297.5", "股票股利" => "0", "現金股利" => "2.5", EPS" => "13.32", "配息率" => "18.77%", "現金殖利率" => "0.84%", "扣抵稅率" => "0.00%", "增資配股率" => "0", "增資認購價" => "0"},
41
- # {"所屬年度" => "2019", "發放年度" => "2020", "除權日" => "", "除息日" => "03/19", "除權息前股價" => "260", "股票股利" => "0", "現金股利" => "2.5", "EPS" => "13.32", "配息率" => "18.77%", "現金殖利率" => "0.96%", "扣抵稅率" => "0.00%", "增資配股率" => "0", "增資認購價" => "0"},
42
- # {"所屬年度" => "2018", "發放年度" => "2019", "除權日" => "", "除息日" => "12/19", "除權息前股價" => "344.5", "股票股利" => "0", "現金股利" => "2.5", "EPS" => "13.54", "配息率" => "18.46%", "現金殖利率" => "0.73%", "扣抵稅率" => "0.00%", "增資配股率" => "0", "增資認購價" => "0"},
43
- # {"所屬年度" => "2018", "發放年度" => "2019", "除權日" => "", "除息日" => "09/19", "除權息前股價" => "267", "股票股利" => "0", "現金股利" => "2", "EPS" => "13.54", "配息率" => "14.77%", "現金殖利率" => "0.75%", "扣抵稅率" => "0.00%", "增資配股率" => "0", "增資認購價" => "0"},
42
+ # {
43
+ # "所屬年度" => "2019",
44
+ # "發放年度" => "2020",
45
+ # "除權日" => "",
46
+ # "除息日" => "06/18",
47
+ # "除權息前股價" => 297.5,
48
+ # "股票股利" => 0,
49
+ # "現金股利" => 2.5,
50
+ # "EPS" => 13.32,
51
+ # "配息率" => 18.77,
52
+ # "現金殖利率" => 0.84,
53
+ # "扣抵稅率" => 0.00,
54
+ # "增資配股率" => 0,
55
+ # "增資認購價" => 0
56
+ # },
57
+ # {},
58
+ # :
59
+ # ]
60
+ ```
61
+
62
+ ### Basic Financial Statements
63
+
64
+ #### Monthly Revenue
65
+
66
+ | key | type |
67
+ |-----|------|
68
+ | 年度/月份 | string |
69
+ | 單月營收 | integer |
70
+ | 去年同月營收 | integer |
71
+ | 單月月增率 | float |
72
+ | 單月年增率 | float |
73
+ | 累計營收 | integer |
74
+ | 去年累計營收 | integer |
75
+ | 累積年增率 | float |
76
+
77
+ ```rb
78
+ require 'histock/filter'
79
+
80
+ histock = Histock::Filter.new
81
+ histock.monthly_revenue('2330')
82
+ # [
83
+ # {
84
+ # "年度/月份" => "2020/04",
85
+ # "單月營收" => 96001568,
86
+ # "去年同月營收" => 74693616,
87
+ # "單月月增率" => -15.4,
88
+ # "單月年增率" => 28.5,
89
+ # "累計營收" => 406598784,
90
+ # "去年累計營收" => 293398112,
91
+ # "累積年增率" => 38.6
92
+ # },
93
+ # {},
94
+ # :
95
+ # ]
96
+ ```
97
+
98
+ #### Income Statement
99
+
100
+ | key | type |
101
+ |-----|------|
102
+ | 年度/季別 | string |
103
+ | 營收 | integer |
104
+ | 毛利 | integer |
105
+ | 營業利益 | integer |
106
+ | 稅前淨利 | integer |
107
+ | 稅後淨利 | integer |
108
+
109
+ ```rb
110
+ histock = Histock::Filter.new
111
+ histock.income_statement('2330')
112
+ # [
113
+ # {
114
+ # "年度/季別"" => "2019Q4",
115
+ # "營收" => 317237065,
116
+ # "毛利" => 159240985,
117
+ # "營業利益" => 124243722,
118
+ # "稅前淨利" => 128781973,
119
+ # "稅後淨利" => 116078194
120
+ # },
121
+ # {},
122
+ # :
44
123
  # ]
45
124
  ```
46
125
 
47
- ### Financial Statements
126
+ ### Profitability
127
+
128
+ #### Profit Ratio
129
+
130
+ | key | type |
131
+ |-----|------|
132
+ | 年度/季別 | string |
133
+ | 毛利率 | float |
134
+ | 營業利益率 | float |
135
+ | 稅前淨利率 | float |
136
+ | 稅後淨利率 | float |
48
137
 
49
138
  ```rb
50
- histock = Histock::Simplefilter.new
51
- histock.financial_statements('2330')
139
+ histock = Histock::Filter.new
140
+ histock.profit_ratio('2330')
141
+ # [
142
+ # {
143
+ # "年度/季別" => "2019Q4",
144
+ # "毛利率" => 50.20,
145
+ # "營業利益率" => 39.16,
146
+ # "稅前淨利率" => 40.59,
147
+ # "稅後淨利率" => 36.59
148
+ # },
149
+ # {},
150
+ # :
151
+ # ]
152
+ ```
153
+
154
+ #### Income Rate
155
+
156
+ ##### Monthly Data
157
+
158
+ | key | type |
159
+ |-----|------|
160
+ | 年度/季別 | string |
161
+ | ROE | float |
162
+ | ROA | float |
163
+
164
+ ```rb
165
+ histock = Histock::Filter.new
166
+ histock.income_rate('2330', 'month')
167
+ # [
168
+ # {
169
+ # "年度/季別" => "2020Q1",
170
+ # "ROE" => 7.10,
171
+ # "ROA" => 5.08
172
+ # },
173
+ # {},
174
+ # :
175
+ # ]
176
+ ```
177
+
178
+ ##### Quarterly Data
179
+
180
+ | key | type |
181
+ |-----|------|
182
+ | 年度/季別 | string |
183
+ | 近四季ROE | float |
184
+ | 近四季ROA | float |
185
+
186
+ ```rb
187
+ histock = Histock::Filter.new
188
+ histock.income_rate('2330', 'quarter')
189
+ # [
190
+ # {
191
+ # "年度/季別" => "2020Q1",
192
+ # "近四季ROE" => 23.45,
193
+ # "近四季ROA" => 17.70
194
+ # },
195
+ # {},
196
+ # :
197
+ # ]
198
+ ```
199
+
200
+ ##### Yearly Data
201
+
202
+ | key | type |
203
+ |-----|------|
204
+ | 年度 | string |
205
+ | 年度ROE | float |
206
+ | 年度ROA | float |
207
+
208
+ ```rb
209
+ histock = Histock::Filter.new
210
+ histock.income_rate('2330', 'year')
52
211
  # [
53
- # {"年度/月份" => "2020/04", "單月營收" => "96,001,568", "去年同月營收" => "74,693,616", "單月月增率" => "-15.4%", "單月年增率" => "28.5%", "累計營收" => "406,598,784", "去年累計營收" => "293,398,112", "累積年增率" => "38.6%"},
54
- # {"年度/月份" => "2020/03", "單月營收" => "113,519,600", "去年同月營收" => "79,721,584", "單月月增率" => "21.5%", "單月年增率" => "42.4%", "累計營收" => "310,597,184", "去年累計營收" => "218,704,496", "累積年增率" => "42%"},
55
- # {"年度/月份" => "2020/02", "單月營收" => "93,394,448", "去年同月營收" => "60,889,060", "單月月增率" => "-9.9%", "單月年增率" => "53.4%", "累計營收" => "197,077,600", "去年累計營收" => "138,982,896", "累積年增率" => "41.8%"},
56
- # {"年度/月份" => "2020/01", "單月營收" => "103,683,104", "去年同月營收" => "78,093,824", "單月月增率" => "0.3%", "單月年增率" => "32.8%", "累計營收" => "103,683,104", "去年累計營收" => "78,093,824", "累積年增率" => "32.8%"},
57
- # {"年度/月份" => "2019/12", "單月營收" => "103,313,104", "去年同月營收" => "89,830,600", "單月月增率" => "-4.2%", "單月年增率" => "15%", "累計營收" => "1,069,985,024", "去年累計營收" => "1,031,473,984", "累積年增率" => "3.7%"}
212
+ # {
213
+ # "年度" => "2019",
214
+ # "年度ROE" => 20.93,
215
+ # "年度ROA" => 15.86
216
+ # },
217
+ # {},
218
+ # :
58
219
  # ]
59
220
  ```
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.add_runtime_dependency 'histock-simplefilter', '~> 0.4.0'
30
30
 
31
31
  spec.add_development_dependency 'bundler', '~> 2.0'
32
- spec.add_development_dependency 'rake', '>= 12.3.3'
32
+ spec.add_development_dependency 'rake', '~> 13.0'
33
33
  spec.add_development_dependency 'rspec', '~> 3.0'
34
34
  spec.add_development_dependency 'travis', '>= 1.9.0'
35
35
  end
@@ -1,5 +1,6 @@
1
1
  require 'histock/simplefilter'
2
2
  require File.expand_path(File.dirname(__FILE__)) + '/filter/version'
3
+ require File.expand_path(File.dirname(__FILE__)) + '/filter/helper'
3
4
 
4
5
  module Histock
5
6
  class Filter
@@ -16,31 +17,35 @@ module Histock
16
17
  histock = Histock::Simplefilter.new
17
18
  table = histock.send(method_name, param)
18
19
 
19
- table[1..-1].map { |e| table.first.zip(e).to_h }
20
+ parse(table)
20
21
  end
21
22
  end
22
23
 
23
24
  CONFIG.last.each do |method_name|
24
25
  define_method method_name do |param, param2|
25
- raise ArgumentError if param2 == 'month'
26
-
27
26
  histock = Histock::Simplefilter.new
28
27
  table = histock.send(method_name, param, param2)
29
28
 
30
- table[1..-1].map { |e| table.first.zip(e).to_h }
29
+ parse(table)
31
30
  end
32
31
  end
33
- end
34
32
 
35
- class Error < StandardError
36
- end
33
+ private
37
34
 
38
- class ArgumentError < Error
35
+ def parse(table)
36
+ list = table[1..-1].map { |e| table.first.zip(e).to_h }
39
37
 
40
- attr_reader :message
38
+ list.each do |hash|
39
+ hash.each do |key, val|
40
+ if Histock::Helper.is_persentage?(val)
41
+ hash[key] = Histock::Helper.persentage_to_number(val)
42
+ elsif Histock::Helper.is_currency?(val)
43
+ hash[key] = Histock::Helper.currency_to_number(val)
44
+ end
45
+ end
46
+ end
41
47
 
42
- def initialize
43
- @message = 'currently not supported'
48
+ list
44
49
  end
45
50
  end
46
51
  end
@@ -0,0 +1,23 @@
1
+ module Histock
2
+ class Helper
3
+ class << self
4
+ def is_persentage?(str)
5
+ str.match(/^[+-]?([0-9]+(\.[0-9]*)?|\.[0-9]+)%$/).nil? ? false : true
6
+ end
7
+
8
+ def is_currency?(str)
9
+ str.match(/^[+-]?\d{1,3}(,\d{3})*$/).nil? ? false : true
10
+ end
11
+
12
+ # should check str by 'is_persentage?' method before calling this method
13
+ def persentage_to_number(str)
14
+ str.to_s.gsub(/%/,'').to_f
15
+ end
16
+
17
+ # should check str by 'is_currency?' method before calling this method
18
+ def currency_to_number(str)
19
+ str.to_s.gsub(/[$,]/,'').to_i
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,5 @@
1
1
  module Histock
2
2
  class Filter
3
- VERSION = '0.4.1'
3
+ VERSION = '1.0.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: histock-filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuya Sato
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-11 00:00:00.000000000 Z
11
+ date: 2020-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: histock-simplefilter
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 12.3.3
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 12.3.3
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -99,6 +99,7 @@ files:
99
99
  - bin/setup
100
100
  - histock-filter.gemspec
101
101
  - lib/histock/filter.rb
102
+ - lib/histock/filter/helper.rb
102
103
  - lib/histock/filter/version.rb
103
104
  homepage: https://github.com/ysato5654/histock-filter
104
105
  licenses: