stock_index 0.0.1 → 0.5.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: 4d977b7b71e9de775e665ff24ff81d01be0e8c56
4
- data.tar.gz: 35fa1cede6c44cd4e90b5b077a6f6eeebb46ed21
3
+ metadata.gz: dad81493b603a0d88be1102058b6ff64191819ce
4
+ data.tar.gz: da1cee891a8f82639509feb5431056aee53547ef
5
5
  SHA512:
6
- metadata.gz: efd365d2eb831610fdbf2e72bac0ef00a65b638a58307e0840f981af39883566fd4dc66f2622c295f98d92774aca656c32c55daa1ec75e30d1a17acc0133c1be
7
- data.tar.gz: 246d681f3679b930b873c00f5f9c7f5992ade32c58ea48c340f3bed1625c78874c4408b82e9e6d9bd0b2d4ec436d0919654bbed776b0ca9f808d078e603aac0d
6
+ metadata.gz: 8a5f58300a0a1ad4c801c82d6292ce26a08f9ec74033653adf44383a888f800ef2b1965cb8990f29fcb0351acb19434d091e9fdeddf4428089c2922f6800b350
7
+ data.tar.gz: 7593635fd7b698a9eb7e4b47c8af7b3c2f230322ddd99d05ea122fafdf23574778dd02981136f33f5a865e9a63e3bc176f2c334d8c1c6532afec3a3d96bed69f
data/README.md CHANGED
@@ -23,10 +23,10 @@ There is no a standard for indices symbols, so this gem uses Yahoo Finance symbo
23
23
 
24
24
  | Symbol | Index Name | Reference page |
25
25
  | ------ | ---------- | -------------- |
26
- | ^DJI | Dow Jones Industrial Average | http://en.wikipedia.org/wiki/Dow_Jones_Industrial_Average |
26
+ | ^DJI | DOW JONES INDUSTRIAL AVERAGE | http://en.wikipedia.org/wiki/Dow_Jones_Industrial_Average |
27
27
  | ^GSPC | S&P 500 | http://en.wikipedia.org/wiki/List_of_S%26P_500_companies |
28
28
  | ^NDX | NASDAQ 100 | https://indexes.nasdaqomx.com/Index/Weighting/NDX |
29
- | ^N225 | Nikkei 225 | http://indexes.nikkei.co.jp/en/nkave/index/component?idx=nk225 |
29
+ | ^N225 | NIKKEI 225 | http://indexes.nikkei.co.jp/en/nkave/index/component?idx=nk225 |
30
30
  | ^STOXX50E | EURO STOXX 50 | http://www.stoxx.com/indices/index_information.html?symbol=SX5E |
31
31
  | ^FTSE | FTSE 100 | http://www.londonstockexchange.com/exchange/prices-and-markets/stocks/indices/summary/summary-indices-constituents.html?index=UKX |
32
32
 
data/lib/stock_index.rb CHANGED
@@ -1,5 +1,5 @@
1
- require "stock_index/version"
2
-
3
- module StockIndex
4
- # Your code goes here...
5
- end
1
+ require 'stock_index/version'
2
+ require 'stock_index/stock_index'
3
+ require 'stock_index/attributes'
4
+ require 'stock_index/market'
5
+ require 'stock_index/scrapers/dji_scraper'
@@ -0,0 +1,28 @@
1
+ class StockIndex
2
+ ATTRIBUTES = {
3
+ '^DJI' => {
4
+ name: 'DOW JONES INDUSTRIAL AVERAGE',
5
+ url: 'http://en.wikipedia.org/wiki/Dow_Jones_Industrial_Average'
6
+ },
7
+ '^GSPC' => {
8
+ name: 'S&P 500',
9
+ url: 'http://en.wikipedia.org/wiki/List_of_S%26P_500_companies'
10
+ },
11
+ '^NDX' => {
12
+ name: 'NASDAQ 100',
13
+ url: 'https://indexes.nasdaqomx.com/Index/Weighting/NDX'
14
+ },
15
+ '^N225' => {
16
+ name: 'NIKKEI 225',
17
+ url: 'http://indexes.nikkei.co.jp/en/nkave/index/component?idx=nk225'
18
+ },
19
+ '^STOXX50E' => {
20
+ name: 'EURO STOXX 50',
21
+ url: 'http://www.stoxx.com/indices/index_information.html?symbol=SX5E'
22
+ },
23
+ '^FTSE' => {
24
+ name: 'FTSE 100',
25
+ url: 'http://www.londonstockexchange.com/exchange/prices-and-markets/stocks/indices/summary/summary-indices-constituents.html?index=UKX'
26
+ }
27
+ }
28
+ end
@@ -0,0 +1,20 @@
1
+ class StockIndex
2
+
3
+ class Market
4
+
5
+ def initialize(market)
6
+ @market = market
7
+ end
8
+
9
+ def to_iso10383
10
+ case @market
11
+ when 'NYSE'
12
+ 'XNYS'
13
+ when 'NASDAQ'
14
+ 'XNAS'
15
+ end
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,25 @@
1
+ class DjiScraper
2
+
3
+ def scrape
4
+ doc = Nokogiri::HTML(open(StockIndex::ATTRIBUTES['^DJI'][:url]))
5
+ doc.css('table.wikitable.sortable tr').inject([]) do |array, tr|
6
+ string = "#{market(tr)}:#{symbol(tr)}"
7
+ array << string unless string == ":"
8
+ array
9
+ end
10
+ end
11
+
12
+ private
13
+
14
+ def symbol(tr)
15
+ symbol_td = tr.css('td')[2]
16
+ symbol_td ? symbol_td.css('a').text : nil
17
+ end
18
+
19
+ def market(tr)
20
+ market_td = tr.css('td')[1]
21
+ market = market_td ? market_td.css('a').text : nil
22
+ StockIndex::Market.new(market).to_iso10383
23
+ end
24
+
25
+ end
@@ -0,0 +1,18 @@
1
+ class StockIndex
2
+
3
+ require 'nokogiri'
4
+
5
+ def initialize(symbol)
6
+ @symbol = symbol
7
+ end
8
+
9
+ def components
10
+ case @symbol
11
+ when '^DJI'
12
+ DjiScraper.new.scrape
13
+ else
14
+ []
15
+ end
16
+ end
17
+
18
+ end
@@ -1,3 +1,3 @@
1
- module StockIndex
2
- VERSION = "0.0.1"
3
- end
1
+ class StockIndex
2
+ VERSION = "0.5.0"
3
+ end
data/stock_index.gemspec CHANGED
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "awesome_print"
24
24
  spec.add_development_dependency "rspec"
25
25
  spec.add_development_dependency "simplecov"
26
+ spec.add_runtime_dependency "nokogiri"
26
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stock_index
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Vidal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-21 00:00:00.000000000 Z
11
+ date: 2014-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: nokogiri
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  description: Stock Index
84
98
  email:
85
99
  - javier@javiervidal.net
@@ -94,6 +108,10 @@ files:
94
108
  - Rakefile
95
109
  - csv/US.csv
96
110
  - lib/stock_index.rb
111
+ - lib/stock_index/attributes.rb
112
+ - lib/stock_index/market.rb
113
+ - lib/stock_index/scrapers/dji_scraper.rb
114
+ - lib/stock_index/stock_index.rb
97
115
  - lib/stock_index/version.rb
98
116
  - stock_index.gemspec
99
117
  homepage: ''