class StockMarkets::FileDataProcessor
Constants
- ACTIVE_MARKET_STATUS_NAME
- LAST_UPDATE_MARKET_MINIMAL_YEARS_COUNT
- MARKET_NAME_CSV_COLUMN
Attributes
data[RW]
parsed_csv[RW]
Public Class Methods
new()
click to toggle source
# File lib/stock_markets/file_data_processor.rb, line 12 def initialize @data = [] load_from_disk! end
Public Instance Methods
load_data_for_mics!()
click to toggle source
# File lib/stock_markets/file_data_processor.rb, line 32 def load_data_for_mics! transform_to_hash.data end
load_data_for_names!()
click to toggle source
# File lib/stock_markets/file_data_processor.rb, line 36 def load_data_for_names! transform_to_hash(key_name: MARKET_NAME_CSV_COLUMN).data end
load_from_disk!()
click to toggle source
# File lib/stock_markets/file_data_processor.rb, line 17 def load_from_disk! self.parsed_csv = CSV.table(StockMarkets.configuration.data_file_path) end
transform_to_hash(key_name: :mic)
click to toggle source
# File lib/stock_markets/file_data_processor.rb, line 21 def transform_to_hash(key_name: :mic) raise TypeError, 'Invalid object of CSV provided!' unless parsed_csv.instance_of?(CSV::Table) self.data = parsed_csv.each_with_object({}) do |data_row, result_hash| if market_recently_updated_proc.call(data_row, key_name) result_hash[data_row[key_name.to_sym]] = data_row.to_h end end self end
Private Instance Methods
last_update_market_minimal_date()
click to toggle source
# File lib/stock_markets/file_data_processor.rb, line 44 def last_update_market_minimal_date return @_last_update_market_minimal_date if @_last_update_market_minimal_date current_month_date = Date.today - Date.today.mday + 1 @_last_update_market_minimal_date = Date.new(current_month_date.year - LAST_UPDATE_MARKET_MINIMAL_YEARS_COUNT, 1, 1) end
market_recently_updated_proc()
click to toggle source
# File lib/stock_markets/file_data_processor.rb, line 52 def market_recently_updated_proc @_market_recently_updated_proc ||= proc do |data_row, key_name| (Date.parse(data_row[:status_date]) >= last_update_market_minimal_date) && data_row[:status] == ACTIVE_MARKET_STATUS_NAME && !data_row[key_name].nil? end end