Sha256: 77d447518d3ff89c9ed3151aaf07651904718691935d92a6df8bfdba157b0c6e

Contents?: true

Size: 920 Bytes

Versions: 2

Compression:

Stored size: 920 Bytes

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]

      result = with(ctx).reduce(
        Fields::ContactNumber::BuildContactNumberField,
        Fields::ContactNumber::BuildContactNumberFormatField,
      )

      Constants::SEGMENT_TAG + result[:transformed_data]
    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

2 entries across 2 versions & 1 rubygems

Version Path
tufy-0.0.8 lib/tufy/build_contact_number_segment.rb
tufy-0.0.7 lib/tufy/build_contact_number_segment.rb