Class: Ifqar::StatsDeserializer
- Inherits:
-
Object
- Object
- Ifqar::StatsDeserializer
- Defined in:
- lib/ifqar/stats_deserializer.rb
Overview
Convert XML stats to DailyFundsStats
Constant Summary collapse
- QUOTES_XPATH =
"//Dato[Espacios = '3']".freeze
Class Method Summary collapse
- .deserialze(date, type, xml) ⇒ Object
- .parse_float(text) ⇒ Object
- .parse_int(text) ⇒ Object
- .quote_builder(date, type, data_node) ⇒ Object
Class Method Details
.deserialze(date, type, xml) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/ifqar/stats_deserializer.rb', line 8 def self.deserialze(date, type, xml) xml_doc = Nokogiri::XML(xml) daily_stats = DailyFundsStats.new(date) xml_doc.xpath(QUOTES_XPATH).each do |data| daily_stats.funds_quotes << quote_builder(date, type, data) end daily_stats end |
.parse_float(text) ⇒ Object
28 29 30 |
# File 'lib/ifqar/stats_deserializer.rb', line 28 def self.parse_float(text) text.delete('.').sub(',', '.').to_f end |
.parse_int(text) ⇒ Object
32 33 34 |
# File 'lib/ifqar/stats_deserializer.rb', line 32 def self.parse_int(text) text.delete('.').sub(',', '.').to_i end |
.quote_builder(date, type, data_node) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/ifqar/stats_deserializer.rb', line 18 def self.quote_builder(date, type, data_node) name = data_node.xpath('Nombre').text shares = parse_int(data_node.xpath('QCP').text) share_value = parse_float(data_node.xpath('VCP').text) / 1000 net_asset_value = parse_int(data_node.xpath('PN').text) fund = Fund.new(name, type) FundQuote.new(fund, date, shares, share_value, net_asset_value) end |