Sha256: 203757879944d59ca4fae7693e56549bb26968dd80909ec28767634185207aa1

Contents?: true

Size: 1.42 KB

Versions: 6

Compression:

Stored size: 1.42 KB

Contents

module Tufy
  class BuildAddressSegment < BuildSegment
    expects :raw_data
    promises :transformed_data

    REQUIRED_KEYS = [
      :address_line_1,
      :address_line_2,
      :address_type,
    ]

    executed do |ctx|
      validate_presence_of_required_keys(ctx.raw_data, REQUIRED_KEYS)
      ctx.transformed_data = ctx.transformed_data + transform(ctx).upcase
    end

    private

    def self.transform(ctx)
      raw_data = ctx[:raw_data]

      Constants::SEGMENT_TAG + # Segment Tag (Required)
        Constants::ADDRESS_LINE_1_TAG +
          FormatStrings::F2TS % remove_special_characters(raw_data[:address_line_1]).size +
            remove_special_characters(raw_data[:address_line_1]) + # Address Line 1 (Required)
        Constants::ADDRESS_LINE_2_TAG +
          FormatStrings::F2TS % remove_special_characters(raw_data[:address_line_2]).size +
            remove_special_characters(raw_data[:address_line_2]) + # Address Line 2 (Required)
        Constants::ADDRESS_TYPE_TAG +
          FormatStrings::F2TS % raw_data[:address_type].size +
            raw_data[:address_type] # Address Type (Required)
    end

    module Constants
      # tags
      SEGMENT_TAG = "AL03A01"
      ADDRESS_LINE_1_TAG = "01"
      ADDRESS_LINE_2_TAG = "02"
      ADDRESS_TYPE_TAG = "07"

      # address type constants
      RESIDENTIAL = "R"
      OFFICE = "F"
      BILLING_ADDRESS = "B"
      OTHERS = "O"
      UNKNOWN = "U"
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
tufy-0.0.6 lib/tufy/build_address_segment.rb
tufy-0.0.5 lib/tufy/build_address_segment.rb
tufy-0.0.4 lib/tufy/build_address_segment.rb
tufy-0.0.3 lib/tufy/build_address_segment.rb
tufy-0.0.2 lib/tufy/build_address_segment.rb
tufy-0.0.1 lib/tufy/build_address_segment.rb