class AAMVA::Encoder

Attributes

data[R]
standard[R]

Public Class Methods

new(standard:, data:) click to toggle source
# File lib/aamva/encoder.rb, line 5
def initialize(standard:, data:)
  @standard = standard
  @data = data
end

Public Instance Methods

pdf417() click to toggle source
# File lib/aamva/encoder.rb, line 14
def pdf417
  @pdf417 ||= begin
    require "pdf417"

    PDF417.new(string)
  end
end
png() click to toggle source
# File lib/aamva/encoder.rb, line 22
def png
  @png ||= pdf417.to_chunky_png
end
string() click to toggle source
# File lib/aamva/encoder.rb, line 10
def string
  "#{header}#{subfile_designators}#{subfiles}"
end

Private Instance Methods

header() click to toggle source
# File lib/aamva/encoder.rb, line 28
def header
  @header ||= begin
    [
      standard.spec.fetch("compliance_indicator"),
      standard.spec.fetch("data_element_separator"),
      standard.spec.fetch("record_separator"),
      standard.spec.fetch("segment_terminator"),
      standard.spec.fetch("file_type"),
      data.header.issuer_identification_number,
      standard.spec.fetch("aamva_version_number"),
      data.header.jurisdiction_version_number,
      data.header.number_of_entries
    ].join("")

  end
end
subfile_designators() click to toggle source
# File lib/aamva/encoder.rb, line 45
def subfile_designators
  @subfile_designators ||= data.subfile_designators.map do |designator|
    "#{designator.type}#{designator.offset}#{designator.length}"
  end.join("")
end
subfiles() click to toggle source
# File lib/aamva/encoder.rb, line 51
def subfiles
  @subfiles ||= Calculator.subfiles(
    subfiles: data.subfiles,
    data_element_separator: standard.spec.fetch("data_element_separator"),
    segment_terminator: standard.spec.fetch("segment_terminator")
  )
end