class Differential::Parser::Reader
This class is used to parse incoming datasets. Usage: Instantiate new object with configuration options. Call read to parse individual hash objects into Record
objects.
Attributes
group_id_key[R]
record_id_key[R]
value_key[R]
Public Class Methods
new(record_id_key:, value_key:, group_id_key: nil)
click to toggle source
Params:
record_id_key
-
The hash key(s) to use to uniquely identify a record (required)
value_key
-
The hash key used to extract the value of the record.
group_id_key
-
The hash key(s) to use to identify which group the record belongs to.
# File lib/differential/parser/reader.rb, line 25 def initialize(record_id_key:, value_key:, group_id_key: nil) raise ArgumentError, 'record_id_key is required' unless record_id_key raise ArgumentError, 'value_key is required' unless value_key @record_id_key = record_id_key @value_key = value_key @group_id_key = group_id_key end
Public Instance Methods
read(hash)
click to toggle source
# File lib/differential/parser/reader.rb, line 34 def read(hash) id = make_record_id(hash) group_id = make_group_id(hash) value = hash[value_key] ::Differential::Parser::Record.new( id: id, group_id: group_id, value: value, data: hash ) end
Private Instance Methods
array(hashes)
click to toggle source
# File lib/differential/parser/reader.rb, line 65 def array(hashes) if hashes.is_a?(Hash) [hashes] # If the consumer passed in a value that responds to each (is enumerable-like) then # we can accept that as is. elsif !hashes.respond_to?(:each) Array(hashes) else hashes end end
group_id_key_array()
click to toggle source
# File lib/differential/parser/reader.rb, line 61 def group_id_key_array @group_id_key_array ||= Array(group_id_key) end
make_group_id(hash)
click to toggle source
# File lib/differential/parser/reader.rb, line 53 def make_group_id(hash) group_id_key_array.map { |k| hash[k] } end
make_record_id(hash)
click to toggle source
# File lib/differential/parser/reader.rb, line 49 def make_record_id(hash) record_id_key_array.map { |k| hash[k] } end
record_id_key_array()
click to toggle source
# File lib/differential/parser/reader.rb, line 57 def record_id_key_array @record_id_key_array ||= Array(record_id_key) end