class Eddy::Models::Element::Base

Base class for EDI Data Element types. @abstract

Attributes

description[R]

@return [String]

id[R]

Positive number under 1688, or I01-I64 @return [String]

max[R]

Maximum length for a valid value @return [Integer]

min[R]

Minimum length for a valid value @return [Integer]

name[R]

@return [String]

ref[RW]

String used to identify a data element within a Segment. @return [String]

type[R]

One of: AN, B, DT, ID, N, R, or TM @return [String]

Public Class Methods

new() click to toggle source

@return [void]

# File lib/eddy/models/element/base.rb, line 29
def initialize()
  @val = nil
  @req = nil
end
process_value(*) click to toggle source

Return a valid EDI string representation of `@value`.

@note Classes inheriting from `Eddy::Models::Element::Base` must override the class the method `process_value`. @return [void]

# File lib/eddy/models/element/base.rb, line 67
def self.process_value(*)
  raise NotImplementedError, "Classes inheriting from `Eddy::Models::Element::Base` must override the class the method `process_value`"
end

Public Instance Methods

doc_comment(header: true) click to toggle source

Generate a description to use as a doc comment for an element.

@param header [Boolean] (true) @return [Hash]

# File lib/eddy/models/element/base.rb, line 120
        def doc_comment(header: true)
          if header
            return <<~END.strip
              ### Element Summary:

              - Id: #{self.id}
              - Name: #{self.name}
              - Type: #{self.type}
              - Min/Max: #{self.min}/#{self.max}
              - Description: #{self.description}
            END
          else
            return <<~END.strip
              - Id: #{self.id}
              - Name: #{self.name}
              - Type: #{self.type}
              - Min/Max: #{self.min}/#{self.max}
              - Description: #{self.description}
            END
          end
        end
process_value(*) click to toggle source

Return a valid EDI string representation of `@value`.

@note Classes inheriting from `Eddy::Models::Element::Base` must override the method `#process_value`. @return [void]

# File lib/eddy/models/element/base.rb, line 59
def process_value(*)
  raise NotImplementedError, "Classes inheriting from `Eddy::Models::Element::Base` must override the method `#process_value`"
end
req() click to toggle source

Indicates whether the value must be present in its segment.

| code | description | official | | —– | ———– | ———- | | M | Mandatory | yes | | O | Optional | yes | | C | Conditional | yes | | F | Floating | deprecated | | R | Required | no | | S | Situational | no | | A | Advised | no | | N | Not Advised | no | | N | Not Used | no | | X | Not Used | no | | X | Conditional | no |

See:

@return [String]

# File lib/eddy/models/element/base.rb, line 93
def req
  return @req
end
req=(req) click to toggle source

(see req)

@param req [String, nil] @return [void]

# File lib/eddy/models/element/base.rb, line 101
def req=(req)
  if req.nil?
    @req = "O"
    return
  end
  raise ArgumentError, req.to_s unless req.is_a?(String)
  case req.upcase
  when "M", "R" then @req = "M"
  when "O"      then @req = "O"
  when "C", "X" then @req = "C"
  when "F" then raise Eddy::Errors::Error, "Req value 'F' not supported"
  else raise Eddy::Errors::Error, "Invalid argument for `req=`: #{req}"
  end
end
value() click to toggle source

@note Classes inheriting from `Eddy::Models::Element::Base` must override the method `#value`. @return [Object]

# File lib/eddy/models/element/base.rb, line 42
def value()
  if @val == :skip
    return ""
  elsif @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 self.process_value()
end
value=(*) click to toggle source

@note Classes inheriting from `Eddy::Models::Element::Base` must override the method `#value=`. @return [void]

# File lib/eddy/models/element/base.rb, line 36
def value=(*)
  raise NotImplementedError, "Classes inheriting from `Eddy::Models::Element::Base` must override the method `#value=`"
end