class AAMVA::Decoder
Attributes
barcode[R]
standard[R]
Public Class Methods
new(standard, barcode)
click to toggle source
# File lib/aamva/decoder.rb, line 7 def initialize(standard, barcode) @standard = standard @barcode = barcode end
Public Instance Methods
data()
click to toggle source
# File lib/aamva/decoder.rb, line 12 def data @data ||= Data.new( header: header, subfile_designators: subfile_designators, subfiles: subfiles ) end
Private Instance Methods
data_elements(subfile_designator)
click to toggle source
# File lib/aamva/decoder.rb, line 22 def data_elements(subfile_designator) @barcode .byteslice(subfile_designator.offset.to_i, subfile_designator.length.to_i) .slice((subfile_designator.type).length..-1) .chomp(standard["segment_terminator"]) .split(standard["data_element_separator"]) .map { |r| [r[0, 3], r[3..-1]] } end
header()
click to toggle source
# File lib/aamva/decoder.rb, line 35 def header @header ||= Header.new( number_of_entries: number_of_entries, jurisdiction_version_number: jurisdiction_version_number, issuer_identification_number: issuer_identification_number ) end
header_match()
click to toggle source
# File lib/aamva/decoder.rb, line 31 def header_match @barcode.match(standard["header_regexp"]) end
issuer_identification_number()
click to toggle source
# File lib/aamva/decoder.rb, line 64 def issuer_identification_number header_match&.[]("issuer_identification_number") end
jurisdiction_version_number()
click to toggle source
# File lib/aamva/decoder.rb, line 68 def jurisdiction_version_number header_match&.[]("jurisdiction_version_number") end
number_of_entries()
click to toggle source
# File lib/aamva/decoder.rb, line 72 def number_of_entries header_match&.[]("number_of_entries") end
subfile_designators()
click to toggle source
# File lib/aamva/decoder.rb, line 52 def subfile_designators @barcode .scan(@standard["subfile_designator_regexp"]) .map do |_, type, offset, length| SubfileDesignator.new( type: type, offset: offset, length: length ) end end
subfiles()
click to toggle source
# File lib/aamva/decoder.rb, line 43 def subfiles subfile_designators.map do |subfile_designator| Subfile.new( type: subfile_designator.type, data_elements: data_elements(subfile_designator) ) end end