Sha256: 523b2fa736d321397db09ac552af66df629adb52ca7ccf87bcb691cdcc814386

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

module Eddy
  module Element
    # Alphanumeric string including special characters
    class AN < Base

      # @param min [Integer]
      # @param max [Integer]
      # @param req [String] (nil)
      # @param ref [String] (nil)
      # @param val [String] (nil)
      # @return [void]
      def initialize(
        min:,
        max:,
        req: nil,
        ref: nil,
        val: nil
      )
        @type = "AN"
        @min = min
        @max = max
        self.req = req
        self.ref = ref
        self.value = val
      end

      # @raise [Eddy::Errors::ElementNilValueError] If the element is required and no value has been set.
      # @return [String]
      def value()
        if @val.nil?
          case self.req
          when "M"      then raise Eddy::Errors::ElementNilValueError.new(element: self)
          when "O", "C" then return ""
          else raise Eddy::Errors::Error, "Invalid req value: #{self.req}"
          end
        end
        return @val.ljust(self.min)
      end

      # @raise [Eddy::Errors::ElementValidationError]
      # @param arg [String]
      # @return [void]
      def value=(arg)
        if arg.nil?
          @val = arg
          return
        end
        raise Eddy::Errors::TypeValidationError.new(element: self, arg: arg) unless arg.is_a?(String)
        raise Eddy::Errors::LengthValidationError.new(element: self, arg: arg) if arg.length > self.max
        @val = arg
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eddy-0.5.1 lib/eddy/models/element/an.rb
eddy-0.5.0 lib/eddy/models/element/an.rb
eddy-0.4.0 lib/eddy/models/element/an.rb
eddy-0.3.0 lib/eddy/models/element/an.rb