class Eddy::Models::Element::Base
Attributes
@return [String]
Positive number under 1688, or I01-I64 @return [String]
Maximum length for a valid value @return [Integer]
Minimum length for a valid value @return [Integer]
@return [String]
String used to identify a data element within a Segment
. @return [String]
Public Class Methods
@return [void]
# File lib/eddy/models/element/base.rb, line 29 def initialize() @val = nil @req = nil end
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
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
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
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:
-
[The
Data
Segment
- EDIdEv](secure.edidev.net/edidev-ca/help/Using/Using_EDI/Using_AscX12/DataStructures/DataSegment/DataSegment.htm) -
[Required vs Mandatory in Code Descriptions - X12 RFI](www.x12.org/rfis/Required%20vs%20Mandatory%20in%20Code%20Descriptions.pdf)
@return [String]
# File lib/eddy/models/element/base.rb, line 93 def req return @req end
(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
@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
@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