Class: Eddy::Models::Element::Base Abstract
- Inherits:
-
Object
- Object
- Eddy::Models::Element::Base
- Defined in:
- lib/eddy/models/element/base.rb
Overview
Base class for EDI Data Element types.
Instance Attribute Summary collapse
- #description ⇒ String readonly
-
#id ⇒ String
readonly
Positive number under 1688, or I01-I64.
-
#max ⇒ Integer
readonly
Maximum length for a valid value.
-
#min ⇒ Integer
readonly
Minimum length for a valid value.
- #name ⇒ String readonly
-
#ref ⇒ String
String used to identify a data element within a Segment.
-
#type ⇒ String
readonly
One of: AN, B, DT, ID, N, R, or TM.
Class Method Summary collapse
-
.process_value ⇒ void
Return a valid EDI string representation of
@value
.
Instance Method Summary collapse
-
#doc_comment(header: true) ⇒ Hash
Generate a description to use as a doc comment for an element.
- #initialize ⇒ void constructor
-
#process_value ⇒ void
Return a valid EDI string representation of
@value
. -
#req ⇒ String
Indicates whether the value must be present in its segment.
-
#req=(req) ⇒ String, void
Indicates whether the value must be present in its segment.
- #value ⇒ Object
- #value= ⇒ void
Constructor Details
#initialize ⇒ void
29 30 31 32 |
# File 'lib/eddy/models/element/base.rb', line 29 def initialize() @val = nil @req = nil end |
Instance Attribute Details
#description ⇒ String (readonly)
14 15 16 |
# File 'lib/eddy/models/element/base.rb', line 14 def description @description end |
#id ⇒ String (readonly)
Positive number under 1688, or I01-I64
10 11 12 |
# File 'lib/eddy/models/element/base.rb', line 10 def id @id end |
#max ⇒ Integer (readonly)
Maximum length for a valid value
23 24 25 |
# File 'lib/eddy/models/element/base.rb', line 23 def max @max end |
#min ⇒ Integer (readonly)
Minimum length for a valid value
20 21 22 |
# File 'lib/eddy/models/element/base.rb', line 20 def min @min end |
#name ⇒ String (readonly)
12 13 14 |
# File 'lib/eddy/models/element/base.rb', line 12 def name @name end |
#ref ⇒ String
String used to identify a data element within a Segment.
26 27 28 |
# File 'lib/eddy/models/element/base.rb', line 26 def ref @ref end |
#type ⇒ String (readonly)
One of: AN, B, DT, ID, N, R, or TM
17 18 19 |
# File 'lib/eddy/models/element/base.rb', line 17 def type @type end |
Class Method Details
.process_value ⇒ void
Classes inheriting from Eddy::Models::Element::Base
must override the class the method process_value
.
This method returns an undefined value.
Return a valid EDI string representation of @value
.
67 68 69 |
# 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 |
Instance Method Details
#doc_comment(header: true) ⇒ Hash
Generate a description to use as a doc comment for an element.
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# 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 ⇒ void
Classes inheriting from Eddy::Models::Element::Base
must override the method #process_value
.
This method returns an undefined value.
Return a valid EDI string representation of @value
.
59 60 61 |
# 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 ⇒ String
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:
93 94 95 |
# File 'lib/eddy/models/element/base.rb', line 93 def req return @req end |
#req=(req) ⇒ String, void
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:
101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# 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 ⇒ Object
Classes inheriting from Eddy::Models::Element::Base
must override the method #value
.
42 43 44 45 46 47 48 49 50 51 52 53 |
# 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= ⇒ void
Classes inheriting from Eddy::Models::Element::Base
must override the method #value=
.
This method returns an undefined value.
36 37 38 |
# 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 |