Sha256: 7d3f824fff133c304afbf7cf99648bfaf5864d14a0abc634c0980fc6f95da5a2
Contents?: true
Size: 1.95 KB
Versions: 3
Compression:
Stored size: 1.95 KB
Contents
class StockIndex class Component require 'cik' def initialize(symbol, market, wikipedia, pricing_source = :us) @symbol = symbol @market = market @wikipedia = wikipedia @pricing_source = pricing_source end def attributes attrs = cache_lookup || attributes_lookup puts "---- ERROR #{attrs}" unless valid?(attrs) attrs end def cache_lookup store = PStore.new(cache_file) store.transaction { store[@symbol] } end def cache_write(a) store = PStore.new(cache_file) store.transaction do store[@symbol] = a end end def cache_file File.expand_path("../../cache/#{@market}.pstore", File.dirname(__FILE__)) end 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 def us? @pricing_source == :us end def lookup_cik if us? lookup_cik_us else nil end end 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 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
stock_index-0.8.8 | lib/stock_index/component.rb |
stock_index-0.8.7 | lib/stock_index/component.rb |
stock_index-0.8.6 | lib/stock_index/component.rb |