class AAMVA::Generator

Attributes

standard[R]

Public Class Methods

new(standard) click to toggle source
# File lib/aamva/generator.rb, line 7
def initialize(standard)
  @standard = standard
end

Public Instance Methods

data() click to toggle source
# File lib/aamva/generator.rb, line 11
def data
  @data ||= Data.new(
    header: header,
    subfile_designators: subfile_designators,
    subfiles: subfiles
  )
end

Private Instance Methods

header() click to toggle source
# File lib/aamva/generator.rb, line 21
def header
  @header ||= Header.new(
    issuer_identification_number: issuer_identification_number,
    jurisdiction_version_number: jurisdiction_version_number,
    number_of_entries:  subfiles.size
  )
end
method_missing(name, *args) click to toggle source
Calls superclass method
# File lib/aamva/generator.rb, line 63
def method_missing(name, *args)
  if factory = @standard.factory(name)
    Factory.build(factory[:type], factory[:options])
  else
    super
  end
end
subfile_designators() click to toggle source
# File lib/aamva/generator.rb, line 29
def subfile_designators
  @subfile_designators ||= subfiles.map do |_, subfile|
    length = Calculator.subfile_length(
      type: subfile.type,
      data_elements: subfile.data_elements,
      data_element_separator: @standard["data_element_separator"],
      segment_terminator: @standard["segment_terminator"]
    )

    offset = Calculator.subfile_offset

    SubfileDesignator.new(
      type: subfile.type,
      length: length,
      offset: offset
    )
  end
end
subfiles() click to toggle source
# File lib/aamva/generator.rb, line 48
def subfiles
  @subfiles ||= begin
    data_elements = Hash[@standard.required_data_elements.map do |type|
      [type.upcase, send(type)]
    end]

    {
    "DL" => Subfile.new(
      type: "DL",
      data_elements: data_elements
      )
    }
  end
end