Class: Eddy::Summary::TransactionSet
- Inherits:
-
Object
- Object
- Eddy::Summary::TransactionSet
- Defined in:
- lib/eddy/summary/transaction_set.rb
Overview
An outline of all required components for an EDI transaction set implementation.
Instance Attribute Summary collapse
-
#components ⇒ Array<Eddy::Summary::Segment, Eddy::Summary::Loop>
The components that make up the Transaction Set.
-
#functional_group ⇒ String
A short string used to group related Transaction Sets.
-
#id ⇒ Integer
A short code identifying the Transaction Set.
-
#name ⇒ String
A descriptive name for the Transaction Set.
Class Method Summary collapse
Instance Method Summary collapse
-
#all_components ⇒ Array<Eddy::Summary::Segment, Eddy::Summary::Loop>
Return all components in a single, flattened array.
-
#doc_comment(header: true) ⇒ String
Generate a description to use as a doc comment for a transaction set.
- #initialize ⇒ void constructor
- #normalized_name ⇒ String
- #process_components(components) ⇒ void
-
#unique_loops ⇒ Array<Eddy::Summary::Loop>
Return one of each kind of loop in the Transaction Set.
Constructor Details
#initialize ⇒ void
20 21 22 |
# File 'lib/eddy/summary/transaction_set.rb', line 20 def initialize() self.components = [] end |
Instance Attribute Details
#components ⇒ Array<Eddy::Summary::Segment, Eddy::Summary::Loop>
The components that make up the Transaction Set.
17 18 19 |
# File 'lib/eddy/summary/transaction_set.rb', line 17 def components @components end |
#functional_group ⇒ String
A short string used to group related Transaction Sets.
14 15 16 |
# File 'lib/eddy/summary/transaction_set.rb', line 14 def functional_group @functional_group end |
#id ⇒ Integer
A short code identifying the Transaction Set.
8 9 10 |
# File 'lib/eddy/summary/transaction_set.rb', line 8 def id @id end |
#name ⇒ String
A descriptive name for the Transaction Set.
11 12 13 |
# File 'lib/eddy/summary/transaction_set.rb', line 11 def name @name end |
Class Method Details
.create(params = {}) ⇒ self
26 27 28 29 30 31 32 33 |
# File 'lib/eddy/summary/transaction_set.rb', line 26 def self.create(params = {}) summary = new() summary.id = params[:id] summary.name = params[:name] summary.functional_group = params[:functional_group] summary.process_components(params[:components]) return summary end |
.from_file(path) ⇒ self
37 38 39 40 41 |
# File 'lib/eddy/summary/transaction_set.rb', line 37 def self.from_file(path) raise Eddy::Errors::Error, "Invalid transaction set definition" unless Eddy::Summary.valid_transaction_set_data?(path) data = Eddy::Util.read_json_or_yaml(path) return Eddy::Summary::TransactionSet.create(data) end |
Instance Method Details
#all_components ⇒ Array<Eddy::Summary::Segment, Eddy::Summary::Loop>
Return all components in a single, flattened array.
78 79 80 81 82 83 84 85 86 |
# File 'lib/eddy/summary/transaction_set.rb', line 78 def all_components() return self.components.map do |comp| case comp when Eddy::Summary::Loop then [comp, comp.all_components()] when Eddy::Summary::Segment then comp else raise Eddy::Errors::Error end end.flatten end |
#doc_comment(header: true) ⇒ String
Generate a description to use as a doc comment for a transaction set.
64 65 66 67 68 69 70 71 72 73 |
# File 'lib/eddy/summary/transaction_set.rb', line 64 def doc_comment(header: true) parts = [] parts << "### Transaction Set Summary:\n" if header parts << <<~YARD.strip - Id: #{self.id} - Name: #{self.name} - Functional Group: #{self.functional_group} YARD return parts.compact.join("\n") end |
#normalized_name ⇒ String
56 57 58 |
# File 'lib/eddy/summary/transaction_set.rb', line 56 def normalized_name return "TS#{self.id}" end |
#process_components(components) ⇒ void
This method returns an undefined value.
45 46 47 48 49 50 51 52 53 |
# File 'lib/eddy/summary/transaction_set.rb', line 45 def process_components(components) components.each do |comp| if comp.key?(:loop_id) self.components << Eddy::Summary::Loop.create(comp) else self.components << Eddy::Summary::Segment.create(comp) end end end |
#unique_loops ⇒ Array<Eddy::Summary::Loop>
Return one of each kind of loop in the Transaction Set.
91 92 93 |
# File 'lib/eddy/summary/transaction_set.rb', line 91 def unique_loops() return self.all_components.select { |c| c.is_a?(Eddy::Summary::Loop) }.uniq(&:id) end |