Sha256: d9bb947806876f71bcee8d039c70689173722d26a20755eca0f63afe247168c7

Contents?: true

Size: 1.16 KB

Versions: 6

Compression:

Stored size: 1.16 KB

Contents

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

    REQUIRED_KEYS = [
      :contact_number,
      :contact_number_format,
    ]

    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::CONTACT_NUMBER_TAG +
          FormatStrings::F2TS % remove_special_characters(raw_data[:contact_number]).size +
            remove_special_characters(raw_data[:contact_number]) + # Contact Number (Required)
        Constants::CONTACT_NUMBER_FORMAT_TAG +
          FormatStrings::F2TS % raw_data[:contact_number_format].size +
            raw_data[:contact_number_format] # Contact Number Format (Required)
    end

    module Constants
      # tags
      SEGMENT_TAG = "PH03P01"
      CONTACT_NUMBER_TAG = "03"
      CONTACT_NUMBER_FORMAT_TAG = "05"

      # contact number format constants
      FREE_FORMAT = "F"
      STRUCTURED_FORMAT = "S"
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

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