Class: BC::API::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/bloomberg_currency/api/parser.rb

Overview

Provides methods to parse various data types from strings such as prices, datetimes, and ranges.

Examples:

price = BC::API::Parser.parse_price("$1,234.56")
puts price # => 1234.56
datetime = BC::API::Parser.parse_datetime("2023-10-01T12:00:00.000Z")
puts datetime # => #<DateTime: 2023-10-01T12:00:00+00:00 ((2459550j,43200s,0n),+0s,2299161j)>
tr_ytd = BC::API::Parser.parse_tr_ytd("5%")
puts tr_ytd # => 5.0
price_range = BC::API::Parser.parse_price_range(["$1,000.00", "$1,500.00"])
puts price_range # => 1000.0..1500.0

See Also:

Class Method Summary collapse

Class Method Details

.parse_datetime(datetime_str) ⇒ Object



27
28
29
# File 'lib/bloomberg_currency/api/parser.rb', line 27

def parse_datetime(datetime_str)
  ::DateTime.strptime(datetime_str, '%Y-%m-%dT%H:%M:%S.%LZ')
end

.parse_price(price_str) ⇒ Object



22
23
24
25
# File 'lib/bloomberg_currency/api/parser.rb', line 22

def parse_price(price_str)
  raw_price_str = price_str.gsub(/[^\d.,\-]/, '')
  raw_price_str.delete(',').to_f
end

.parse_price_range(price_range_arr) ⇒ Object



35
36
37
38
39
# File 'lib/bloomberg_currency/api/parser.rb', line 35

def parse_price_range(price_range_arr)
  lower = parse_price(price_range_arr[0])
  upper = parse_price(price_range_arr[1])
  lower..upper
end

.parse_tr_ytd(tr_ytd_str) ⇒ Object



31
32
33
# File 'lib/bloomberg_currency/api/parser.rb', line 31

def parse_tr_ytd(tr_ytd_str)
  tr_ytd_str.delete("%").tr("–—−", "-").to_f
end