class StockIndex::Component
Public Class Methods
new(symbol, market, wikipedia, pricing_source = :us)
click to toggle source
# File lib/stock_index/component.rb, line 7 def initialize(symbol, market, wikipedia, pricing_source = :us) @symbol = symbol @market = market @wikipedia = wikipedia @pricing_source = pricing_source end
Public Instance Methods
attributes()
click to toggle source
# File lib/stock_index/component.rb, line 14 def attributes attrs = cache_lookup || attributes_lookup puts "---- ERROR #{attrs}" unless valid?(attrs) attrs end
attributes_lookup()
click to toggle source
# File lib/stock_index/component.rb, line 36 def attributes_lookup bsym = StockIndex::BsymSearch.find(@symbol, @pricing_source) cik = lookup_cik puts " --- #{@symbol} #{@market} #{@wikipedia} #{@pricing_source}" puts " --- #{@symbol} bsym: #{bsym}" puts " --- #{@symbol} cik: #{cik}" a = { market: @market, share: { symbol: @symbol, name: bsym ? bsym[:name] : nil, bbgid: bsym ? bsym[:bbgid] : nil }, company: {wikipedia: @wikipedia}.merge( cik || {} ) } cache_write(a) a end
cache_file()
click to toggle source
# File lib/stock_index/component.rb, line 32 def cache_file File.expand_path("../../cache/#{@market}.pstore", File.dirname(__FILE__)) end
cache_lookup()
click to toggle source
# File lib/stock_index/component.rb, line 20 def cache_lookup store = PStore.new(cache_file) store.transaction { store[@symbol] } end
cache_write(a)
click to toggle source
# File lib/stock_index/component.rb, line 25 def cache_write(a) store = PStore.new(cache_file) store.transaction do store[@symbol] = a end end
lookup_cik()
click to toggle source
# File lib/stock_index/component.rb, line 59 def lookup_cik if us? lookup_cik_us else nil end end
lookup_cik_us()
click to toggle source
# File lib/stock_index/component.rb, line 67 def lookup_cik_us edgar = Cik.lookup(SymbolParser.new(@symbol).bsym_to_cik) if edgar { cik: edgar[:cik], name: edgar[:name], sic: edgar[:sic] } else return nil end end
us?()
click to toggle source
# File lib/stock_index/component.rb, line 55 def us? @pricing_source == :us end
valid?(attributes)
click to toggle source
# File lib/stock_index/component.rb, line 80 def valid?(attributes) return false if attributes.nil? !attributes[:market].nil? && !attributes[:share][:symbol].nil? && !attributes[:share][:name].nil? && !attributes[:share][:bbgid].nil? && !attributes[:company][:wikipedia].nil? end