diff --git a/lib/eddy/build.rb b/lib/eddy/build.rb index 951ebe5..2055096 100644 --- a/lib/eddy/build.rb +++ b/lib/eddy/build.rb @@ -2,7 +2,9 @@ require "eddy/build/elements/elements" require "eddy/build/segment_builder" -require "eddy/build/loop_builder" +require "eddy/build/loop/base" +require "eddy/build/loop/repeat" +require "eddy/build/loop/render" require "eddy/build/transaction_set_builder" module Eddy diff --git a/lib/eddy/build/loop/base.rb b/lib/eddy/build/loop/base.rb new file mode 100644 index 0000000..44eb24b --- /dev/null +++ b/lib/eddy/build/loop/base.rb @@ -0,0 +1,61 @@ +require "ginny" + +module Eddy + module Build + module Loop + # Generate Ruby code from JSON/YAML EDI definitions. + class Base + + # @return [Eddy::Summary::Loop] + attr_accessor :summary + # @return [String] (nil) + attr_accessor :folder + # Namespace the Loop is within. + # @return [String] + attr_accessor :t_set_id + + # @param summary [Eddy::Summary::Loop] + # @param t_set_id [String] + # @param folder [String] (nil) + # @return [void] + def initialize(summary, t_set_id, folder: nil) + self.summary = summary + self.t_set_id = t_set_id + self.folder = folder + end + + # @return [String] + def render() + return self.ginny_class.render() + end + + # @return [Ginny::Class] + def ginny_class() + return Ginny::Class.create({ + classify_name: false, + parent: "Eddy::Models::Loop::Base", + name: "Base", + description: summary.doc_comment(header: true), + body: <<~STR.strip, + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @repeat_limit = #{self.summary.repeat_limit} + super(store, Repeat) + end + + # Add a repeat of loop #{self.summary.id}. + # + # @yieldparam [Eddy::TransactionSets::#{self.t_set_id}::Loops::#{self.summary.id}::Repeat] rep + # @return [void] + def repeat(&block) + super(&block) + end + STR + }) + end + + end + end + end +end diff --git a/lib/eddy/build/loop/render.rb b/lib/eddy/build/loop/render.rb new file mode 100644 index 0000000..c99a206 --- /dev/null +++ b/lib/eddy/build/loop/render.rb @@ -0,0 +1,18 @@ +require "ginny" + +module Eddy + module Build + module Loop + # Generate Ruby code for an EDI loop. + # + # @param summary [Eddy::Summary::Loop] + # @param t_set_id [String] + # @return [String] + def self.render(summary, t_set_id) + base = Eddy::Build::Loop::Base.new(summary, t_set_id).render() + repeat = Eddy::Build::Loop::Repeat.new(summary, t_set_id).render() + return Ginny.mod(("\n" + base + "\n\n" + repeat + "\n"), "Eddy", "TransactionSets", t_set_id, "Loops", summary.id) + end + end + end +end diff --git a/lib/eddy/build/loop/repeat.rb b/lib/eddy/build/loop/repeat.rb new file mode 100644 index 0000000..9e9d4f4 --- /dev/null +++ b/lib/eddy/build/loop/repeat.rb @@ -0,0 +1,142 @@ +require "ginny" + +module Eddy + module Build + module Loop + # Generate Ruby code from JSON/YAML EDI definitions. + class Repeat + + # @return [Eddy::Summary::Loop] + attr_accessor :summary + # Namespace the Loop is within. + # @return [String] + attr_accessor :t_set_id + + # @param summary [Eddy::Summary::Loop] + # @param t_set_id [String] + # @return [void] + def initialize(summary, t_set_id) + self.summary = summary + self.t_set_id = t_set_id + end + + # @return [String] + def render() + return self.ginny_class.render() + end + + # @return [Ginny::Class] + def ginny_class() + return Ginny::Class.create({ + classify_name: false, + parent: "Eddy::Models::Loop::Repeat", + name: "Repeat", + description: "(see Eddy::TransactionSets::#{t_set_id}::Loops::#{self.summary.id}::Base)", + body: <<~STR.strip, + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + #{self.declarations()} + super( + store, + #{self.super_call()} + ) + end + + #{self.accessors()} + STR + }) + end + + # @return [String] + def repeat_method() + params = self.summary.components.map do |comp| + case comp + when Eddy::Summary::Segment then "# @yieldparam [Eddy::Segments::#{comp.id.upcase}] #{comp.id.downcase}" + when Eddy::Summary::Loop then "# @yieldparam [Eddy::TransactionSets::#{t_set_id}::Loops::#{comp.id.upcase}::Base] #{comp.var_name}" + end + end.compact.join("\n") + return <<~RB + # Add a repeat of loop #{self.summary.id}. + # + #{params} + # @return [void] + def repeat(&block) + super(&block) + end + RB + end + + # @return [String] + def super_call() + return self.summary.components.map do |comp| + case comp + when Eddy::Summary::Segment then " @#{comp.id.downcase}," + when Eddy::Summary::Loop then " @#{comp.var_name}," + end + end.compact.join("\n ") + end + + # @return [String] + def declarations() + self.summary.components.map do |comp| + case comp + when Eddy::Summary::Segment then " @#{comp.id.downcase} = Eddy::Segments::#{comp.id.upcase}.new(store)" + when Eddy::Summary::Loop then " @#{comp.var_name} = Eddy::TransactionSets::#{t_set_id}::Loops::#{comp.id.upcase}::Base.new(store)" + end + end.compact.join("\n") + end + + # @return [String] + def accessors() + defs = self.summary.components.map do |comp| + if comp.is_a?(Eddy::Summary::Loop) && comp.repeat_limit > 1 + self.class.loop_accessor(comp, self.t_set_id) + else + self.class.segment_accessor(comp.id) + end + end + return defs.join("\n\n") + end + + # @param segment_id [String] + # @return [String] + def self.segment_accessor(segment_id) + upper = segment_id.upcase + lower = segment_id.downcase + return <<~RB.strip + # (see Eddy::Segments::#{upper}) + # + # @yieldparam [Eddy::Segments::#{upper}] #{lower} + # @return [Eddy::Segments::#{upper}] + def #{upper}() + yield(@#{lower}) if block_given? + return @#{lower} + end + RB + end + + # @param summary [Eddy::Summary::Loop] + # @param t_set_id [String] + # @return [String] + def self.loop_accessor(summary, t_set_id) + return <<~RB.strip + # (see Eddy::TransactionSets::#{t_set_id}::Loops::#{summary.id.upcase}::Base) + # + # @yieldparam [Eddy::TransactionSets::#{t_set_id}::Loops::#{summary.id.upcase}::Repeat] + # @return [void] + def #{summary.var_name.upcase}() + if block_given? + @#{summary.var_name}.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + RB + end + + end + end + end +end diff --git a/lib/eddy/build/loop_builder.rb b/lib/eddy/build/loop_builder.rb deleted file mode 100644 index 3446abf..0000000 --- a/lib/eddy/build/loop_builder.rb +++ /dev/null @@ -1,93 +0,0 @@ -require "ginny" - -module Eddy - module Build - # Generate Ruby code from JSON/YAML EDI definitions. - class LoopBuilder - - # @return [Eddy::Summary::Loop] - attr_accessor :summary - # @return [String] (nil) - attr_accessor :folder - # Namespace the Loop is within. - # @return [String] - attr_accessor :t_set_id - - # @param folder [String] (nil) - # @param t_set_id [Boolean] ("") - # @return [void] - def initialize(folder: nil, t_set_id: "") - self.folder = folder - self.t_set_id = t_set_id - end - - # @param summary [Eddy::Summary::Loop] - # @param (see #initialize) - # @return [Eddy::Build::LoopBuilder] - def self.from_summary(summary, **kwargs) - lb = Eddy::Build::LoopBuilder.new(**kwargs) - lb.summary = summary - return lb - end - - # @return [Ginny::Class] - def ginny_class() - return Ginny::Class.create({ - classify_name: false, - parent: "Eddy::Models::Loop::Base", - name: self.summary.id, - description: summary.doc_comment(header: true), - body: <<~STR.strip, - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = #{self.summary.repeat_limit} - @components = [ - #{self.components(self.t_set_id)} - ] - end - - #{self.class.add_ideration(self.summary, self.t_set_id)} - STR - }) - end - - # @param t_set_id [Integer] - # @return [String] - def components(t_set_id) - comps = [] - self.summary.components.each do |comp| - case comp - when Eddy::Summary::Segment - comps << " Eddy::Segments::#{comp.id.upcase}," - when Eddy::Summary::Loop - comps << " Eddy::TransactionSets::#{t_set_id}::Loops::#{comp.id.upcase}," - end - end - return comps.join("\n ") - end - - # @param summary [Eddy::Summary::Loop] - # @param t_set_id [String] - # @return [String] - def self.add_ideration(summary, t_set_id) - yield_params = [] - summary.components.each do |comp| - case comp - when Eddy::Summary::Segment - yield_params << "# @yieldparam [Eddy::Segments::#{comp.id.upcase}] #{comp.id.downcase}" - when Eddy::Summary::Loop - yield_params << "# @yieldparam [Eddy::TransactionSets::#{t_set_id}::Loops::#{comp.id.upcase}] l_#{comp.id.downcase}" - end - end - return <<~YARD.strip - # @!method add_iteration(&block) - #{yield_params.join("\n")} - # @return [void] - YARD - end - - end - end -end diff --git a/lib/eddy/build/segment_builder.rb b/lib/eddy/build/segment_builder.rb index 2f23ac3..5073d4c 100644 --- a/lib/eddy/build/segment_builder.rb +++ b/lib/eddy/build/segment_builder.rb @@ -35,7 +35,7 @@ def self.from_file(path, **kwargs) # @param (see #initialize) # @return [Eddy::Build::SegmentBuilder] def self.from_summary(summary, **kwargs) - sb = Eddy::Build::SegmentBuilder.new(**kwargs) + sb = new(**kwargs) sb.summary = summary return sb end @@ -54,6 +54,11 @@ def build(build_elements: false) return result end + # @return [String] + def render() + return self.ginny_class.render() + end + # @return [Ginny::Class] def ginny_class() return Ginny::Class.create({ diff --git a/lib/eddy/build/transaction_set_builder.rb b/lib/eddy/build/transaction_set_builder.rb index 6626a62..c8bafb2 100644 --- a/lib/eddy/build/transaction_set_builder.rb +++ b/lib/eddy/build/transaction_set_builder.rb @@ -1,16 +1,11 @@ require "ginny" +require "forwardable" module Eddy module Build # Generate Ruby code from JSON/YAML EDI definitions. - # - # - Validate definition file - # - Create Summary - # - For Segments, check that we have a default definition for each. - # - Generate segments? - # - For Elements, check that we have a default definition for each. - # - Apply any input over default element attributes. class TransactionSetBuilder + extend Forwardable # @return [Eddy::Summary::TransactionSet] attr_accessor :summary @@ -27,13 +22,21 @@ def initialize(folder: nil, headers: false) self.headers = headers end + def_delegators( + :@summary, + :id, + :name, + :normalized_name, + :functional_group, + ) + # @param path [String] Path to a JSON or YAML file containing a valid Transaction Set definition. # @param (see #initialize) # @return [Eddy::Build::TransactionSetBuilder] def self.from_file(path, **kwargs) raise Eddy::Errors::Error, "Invalid transaction set definition" unless Eddy::Summary.valid_transaction_set_data?(path) data = Eddy::Util.read_json_or_yaml(path) - builder = Eddy::Build::TransactionSetBuilder.new(**kwargs) + builder = new(**kwargs) builder.summary = Eddy::Summary::TransactionSet.create(data) return builder end @@ -42,7 +45,7 @@ def self.from_file(path, **kwargs) # @param (see #initialize) # @return [Eddy::Build::TransactionSetBuilder] def self.from_summary(summary, **kwargs) - builder = Eddy::Build::TransactionSetBuilder.new(**kwargs) + builder = new(**kwargs) builder.summary = summary return builder end @@ -50,33 +53,38 @@ def self.from_summary(summary, **kwargs) # @return [String] def build() root_path = self.folder || File.join(Eddy::Util.root_dir, "build", "transaction_sets") - path = File.join(root_path, self.summary.id.to_s) + path = File.join(root_path, self.id.to_s) FileUtils.mkdir_p(path) File.open(File.join(path, "loops.rb"), "a") { |f| f.write(self.render_loops) } return self.ginny_class.generate(path) end # @return [String] - def render_loops() - loops = self.summary.unique_loops.map do |l| - Eddy::Build::LoopBuilder.from_summary(l, t_set_id: self.summary.normalized_name).ginny_class.render() - end.join("\n\n") - return Ginny.mod(("\n" + loops + "\n"), "Eddy", "TransactionSets", self.summary.normalized_name, "Loops") + def render() + return self.ginny_class.render() end + # # @return [String] + # def render_loops() + # loops = self.summary.unique_loops.map do |l| + # Eddy::Build::LoopBuilder.from_summary(l, t_set_id: self.normalized_name).ginny_class.render() + # end.join("\n\n") + # return Ginny.mod(("\n" + loops + "\n"), "Eddy", "TransactionSets", self.normalized_name, "Loops") + # end + # @return [Ginny::Class] def ginny_class() return Ginny::Class.create({ classify_name: false, - modules: ["Eddy", "TransactionSets", self.summary.normalized_name], + modules: ["Eddy", "TransactionSets", self.normalized_name], parent: "Eddy::Models::TransactionSet", - name: self.summary.normalized_name, + name: self.normalized_name, description: self.summary.doc_comment(header: true), body: <<~STR, - ID = "#{self.summary.id}".freeze - NAME = "#{self.summary.name}".freeze - FUNCTIONAL_GROUP = "#{self.summary.functional_group}".freeze + ID = "#{self.id}".freeze + NAME = "#{self.name}".freeze + FUNCTIONAL_GROUP = "#{self.functional_group}".freeze #{self.constructor()} @@ -105,15 +113,10 @@ def constructor() def declarations() decs = "" self.summary.components.each do |comp| - case comp - when Eddy::Summary::Segment + if comp.is_a?(Eddy::Summary::Loop) && comp.repeat_limit > 1 + decs << "@#{comp.var_name} = Eddy::TransactionSets::#{self.normalized_name}::Loops::#{comp.id.upcase}::Base.new(store)\n" + else decs << "@#{comp.id.downcase} = Eddy::Segments::#{comp.id.upcase}.new(store)\n" - when Eddy::Summary::Loop - if comp.repeat_limit == 1 - decs << "@#{comp.id.downcase} = Eddy::Segments::#{comp.id.upcase}.new(store)\n" - else - decs << "@l_#{comp.id.downcase} = Eddy::TransactionSets::#{self.summary.normalized_name}::Loops::#{comp.id.upcase}.new(store)\n" - end end end return decs @@ -124,15 +127,10 @@ def super_call() super_call = "super(\n" super_call << " store,\n" self.summary.components.each do |comp| - case comp - when Eddy::Summary::Segment + if comp.is_a?(Eddy::Summary::Loop) && comp.repeat_limit > 1 + super_call << " @#{comp.var_name},\n" + else super_call << " @#{comp.id.downcase},\n" - when Eddy::Summary::Loop - if comp.repeat_limit == 1 - super_call << " @#{comp.id.downcase},\n" - else - super_call << " @l_#{comp.id.downcase},\n" - end end end super_call << ")" @@ -144,15 +142,10 @@ def super_call() # @return [String] def accessors() defs = self.summary.components.map do |comp| - case comp - when Eddy::Summary::Segment + if comp.is_a?(Eddy::Summary::Loop) && comp.repeat_limit > 1 + Eddy::Build::TransactionSetBuilder.loop_accessor(comp, self.normalized_name) + else Eddy::Build::TransactionSetBuilder.segment_accessor(comp.id) - when Eddy::Summary::Loop - if comp.repeat_limit == 1 - Eddy::Build::TransactionSetBuilder.segment_accessor(comp.id) - else - Eddy::Build::TransactionSetBuilder.loop_accessor(comp, self.summary.normalized_name) - end end end return defs.join("\n\n") @@ -176,19 +169,17 @@ def #{upper}() end # @param summary [Eddy::Summary::Loop] - # @param t_set_name [String] + # @param t_set_id [String] # @return [String] - def self.loop_accessor(summary, t_set_name) - upper = summary.id.upcase - lower = summary.id.downcase + def self.loop_accessor(summary, t_set_id) return <<~RB.strip - # (see Eddy::TransactionSets::#{t_set_name}::Loops::#{upper}) + # (see Eddy::TransactionSets::#{t_set_id}::Loops::#{summary.id.upcase}::Base) # - #{self.loop_components(summary, t_set_name)} + # @yieldparam [Eddy::TransactionSets::#{t_set_id}::Loops::#{summary.id.upcase}::Repeat] # @return [void] - def L_#{upper}(&block) + def #{summary.var_name.upcase}() if block_given? - @l_#{lower}.add_iteration(&block) + @#{summary.var_name}.repeat() else raise Eddy::Errors::Error, \"No block given in loop iteration\" end @@ -197,22 +188,6 @@ def L_#{upper}(&block) RB end - # @param summary [Eddy::Summary::Loop] - # @param t_set_name [String] - # @return [String] - def self.loop_components(summary, t_set_name) - comps = [] - summary.components.each do |comp| - case comp - when Eddy::Summary::Segment - comps << "# @yieldparam [Eddy::Segments::#{comp.id.upcase}] #{comp.id.downcase}" - when Eddy::Summary::Loop - comps << "# @yieldparam [Eddy::TransactionSets::#{t_set_name}::Loops::#{comp.id.upcase}] l_#{comp.id.downcase}" - end - end - return comps.join("\n") - end - end end end diff --git a/lib/eddy/models/loop/repeat.rb b/lib/eddy/models/loop/repeat.rb index 03d7ffd..079724e 100644 --- a/lib/eddy/models/loop/repeat.rb +++ b/lib/eddy/models/loop/repeat.rb @@ -37,9 +37,9 @@ def all_contents() return contents.flatten end - # @param block [Block] + # @yieldparam [self] rep # @return [self] - def repeat(&block) + def repeat() if block_given? yield(self) else diff --git a/lib/eddy/summary/loop.rb b/lib/eddy/summary/loop.rb index c11afcb..ff82d1a 100644 --- a/lib/eddy/summary/loop.rb +++ b/lib/eddy/summary/loop.rb @@ -96,6 +96,13 @@ def all_components() end.flatten end + # Return `id` with `"l_"` slapped on the front if it wasn't already there. + # + # @return [String] + def var_name() + return self.id.start_with?(/l_/i) ? self.id : "l_#{self.id.downcase}" + end + end end end diff --git a/test/eddy/build/loop/base_test.rb b/test/eddy/build/loop/base_test.rb new file mode 100644 index 0000000..d700c30 --- /dev/null +++ b/test/eddy/build/loop/base_test.rb @@ -0,0 +1,72 @@ +require "test_helper" + +module BuildTest + module LoopTest + class BaseTest < Minitest::Test + + def test_n1 + want = <<~RB.strip + # ### Loop Summary: + # + # - Repeat: 200 + # - Components: + # - N1 + # - N3 + # - N4 + class Base < Eddy::Models::Loop::Base + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @repeat_limit = 200 + super(store, Repeat) + end + + # Add a repeat of loop N1. + # + # @yieldparam [Eddy::TransactionSets::TS850::Loops::N1::Repeat] rep + # @return [void] + def repeat(&block) + super(&block) + end + end + RB + summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/n1.loop.yml")) + have = Eddy::Build::Loop::Base.new(summary, "TS850").ginny_class.render() + assert_equal(want, have) + end + + def test_it1 + want = <<~RB.strip + # ### Loop Summary: + # + # - Repeat: 200000 + # - Components: + # - IT1 + # - CTP + # - PID (loop) + # - SAC (loop) + class Base < Eddy::Models::Loop::Base + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @repeat_limit = 200000 + super(store, Repeat) + end + + # Add a repeat of loop IT1. + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::IT1::Repeat] rep + # @return [void] + def repeat(&block) + super(&block) + end + end + RB + summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/it1.loop.yml")) + have = Eddy::Build::Loop::Base.new(summary, "TS810").ginny_class.render() + assert_equal(want, have) + end + + end + end +end diff --git a/test/eddy/build/loop/render/it1_test.rb b/test/eddy/build/loop/render/it1_test.rb new file mode 100644 index 0000000..699453e --- /dev/null +++ b/test/eddy/build/loop/render/it1_test.rb @@ -0,0 +1,118 @@ +require "test_helper" + +module BuildTest + module LoopTest + module RenderTest + class IT1Test < Minitest::Test + + def test_it1 + want = <<~RB.strip + module Eddy + module TransactionSets + module TS810 + module Loops + module IT1 + + # ### Loop Summary: + # + # - Repeat: 200000 + # - Components: + # - IT1 + # - CTP + # - PID (loop) + # - SAC (loop) + class Base < Eddy::Models::Loop::Base + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @repeat_limit = 200000 + super(store, Repeat) + end + + # Add a repeat of loop IT1. + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::IT1::Repeat] rep + # @return [void] + def repeat(&block) + super(&block) + end + end + + # (see Eddy::TransactionSets::TS810::Loops::IT1::Base) + class Repeat < Eddy::Models::Loop::Repeat + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @it1 = Eddy::Segments::IT1.new(store) + @ctp = Eddy::Segments::CTP.new(store) + @l_pid = Eddy::TransactionSets::TS810::Loops::PID::Base.new(store) + @l_sac = Eddy::TransactionSets::TS810::Loops::SAC::Base.new(store) + super( + store, + @it1, + @ctp, + @l_pid, + @l_sac, + ) + end + + # (see Eddy::Segments::IT1) + # + # @yieldparam [Eddy::Segments::IT1] it1 + # @return [Eddy::Segments::IT1] + def IT1() + yield(@it1) if block_given? + return @it1 + end + + # (see Eddy::Segments::CTP) + # + # @yieldparam [Eddy::Segments::CTP] ctp + # @return [Eddy::Segments::CTP] + def CTP() + yield(@ctp) if block_given? + return @ctp + end + + # (see Eddy::TransactionSets::TS810::Loops::PID::Base) + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::PID::Repeat] + # @return [void] + def L_PID() + if block_given? + @l_pid.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + + # (see Eddy::TransactionSets::TS810::Loops::SAC::Base) + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::SAC::Repeat] + # @return [void] + def L_SAC() + if block_given? + @l_sac.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + end + + end + end + end + end + end + RB + summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/it1.loop.yml")) + have = Eddy::Build::Loop.render(summary, "TS810") + assert_equal(want, have) + end + + end + end + end +end diff --git a/test/eddy/build/loop/render/n1_test.rb b/test/eddy/build/loop/render/n1_test.rb new file mode 100644 index 0000000..e3aaaf1 --- /dev/null +++ b/test/eddy/build/loop/render/n1_test.rb @@ -0,0 +1,98 @@ +require "test_helper" + +module BuildTest + module LoopTest + module RenderTest + class N1Test < Minitest::Test + + def test_n1 + want = <<~RB.strip + module Eddy + module TransactionSets + module TS850 + module Loops + module N1 + + # ### Loop Summary: + # + # - Repeat: 200 + # - Components: + # - N1 + # - N3 + # - N4 + class Base < Eddy::Models::Loop::Base + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @repeat_limit = 200 + super(store, Repeat) + end + + # Add a repeat of loop N1. + # + # @yieldparam [Eddy::TransactionSets::TS850::Loops::N1::Repeat] rep + # @return [void] + def repeat(&block) + super(&block) + end + end + + # (see Eddy::TransactionSets::TS850::Loops::N1::Base) + class Repeat < Eddy::Models::Loop::Repeat + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @n1 = Eddy::Segments::N1.new(store) + @n3 = Eddy::Segments::N3.new(store) + @n4 = Eddy::Segments::N4.new(store) + super( + store, + @n1, + @n3, + @n4, + ) + end + + # (see Eddy::Segments::N1) + # + # @yieldparam [Eddy::Segments::N1] n1 + # @return [Eddy::Segments::N1] + def N1() + yield(@n1) if block_given? + return @n1 + end + + # (see Eddy::Segments::N3) + # + # @yieldparam [Eddy::Segments::N3] n3 + # @return [Eddy::Segments::N3] + def N3() + yield(@n3) if block_given? + return @n3 + end + + # (see Eddy::Segments::N4) + # + # @yieldparam [Eddy::Segments::N4] n4 + # @return [Eddy::Segments::N4] + def N4() + yield(@n4) if block_given? + return @n4 + end + end + + end + end + end + end + end + RB + summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/n1.loop.yml")) + have = Eddy::Build::Loop.render(summary, "TS850") + assert_equal(want, have) + end + + end + end + end +end diff --git a/test/eddy/build/loop/repeat_test.rb b/test/eddy/build/loop/repeat_test.rb new file mode 100644 index 0000000..f588789 --- /dev/null +++ b/test/eddy/build/loop/repeat_test.rb @@ -0,0 +1,130 @@ +require "test_helper" + +module BuildTest + module LoopTest + class RepeatTest < Minitest::Test + + def test_n1 + want = <<~RB.strip + # (see Eddy::TransactionSets::TS850::Loops::N1::Base) + class Repeat < Eddy::Models::Loop::Repeat + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @n1 = Eddy::Segments::N1.new(store) + @n3 = Eddy::Segments::N3.new(store) + @n4 = Eddy::Segments::N4.new(store) + super( + store, + @n1, + @n3, + @n4, + ) + end + + # (see Eddy::Segments::N1) + # + # @yieldparam [Eddy::Segments::N1] n1 + # @return [Eddy::Segments::N1] + def N1() + yield(@n1) if block_given? + return @n1 + end + + # (see Eddy::Segments::N3) + # + # @yieldparam [Eddy::Segments::N3] n3 + # @return [Eddy::Segments::N3] + def N3() + yield(@n3) if block_given? + return @n3 + end + + # (see Eddy::Segments::N4) + # + # @yieldparam [Eddy::Segments::N4] n4 + # @return [Eddy::Segments::N4] + def N4() + yield(@n4) if block_given? + return @n4 + end + end + RB + summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/n1.loop.yml")) + have = Eddy::Build::Loop::Repeat.new(summary, "TS850").ginny_class.render() + assert_equal(want, have) + end + + def test_it1 + want = <<~RB.strip + # (see Eddy::TransactionSets::TS810::Loops::IT1::Base) + class Repeat < Eddy::Models::Loop::Repeat + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @it1 = Eddy::Segments::IT1.new(store) + @ctp = Eddy::Segments::CTP.new(store) + @l_pid = Eddy::TransactionSets::TS810::Loops::PID::Base.new(store) + @l_sac = Eddy::TransactionSets::TS810::Loops::SAC::Base.new(store) + super( + store, + @it1, + @ctp, + @l_pid, + @l_sac, + ) + end + + # (see Eddy::Segments::IT1) + # + # @yieldparam [Eddy::Segments::IT1] it1 + # @return [Eddy::Segments::IT1] + def IT1() + yield(@it1) if block_given? + return @it1 + end + + # (see Eddy::Segments::CTP) + # + # @yieldparam [Eddy::Segments::CTP] ctp + # @return [Eddy::Segments::CTP] + def CTP() + yield(@ctp) if block_given? + return @ctp + end + + # (see Eddy::TransactionSets::TS810::Loops::PID::Base) + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::PID::Repeat] + # @return [void] + def L_PID() + if block_given? + @l_pid.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + + # (see Eddy::TransactionSets::TS810::Loops::SAC::Base) + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::SAC::Repeat] + # @return [void] + def L_SAC() + if block_given? + @l_sac.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + end + RB + summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/it1.loop.yml")) + have = Eddy::Build::Loop::Repeat.new(summary, "TS810").ginny_class.render() + assert_equal(want, have) + end + + end + end +end diff --git a/test/eddy/build/transaction_set_builder/loop_builder_test.rb b/test/eddy/build/transaction_set_builder/loop_builder_test.rb deleted file mode 100644 index 9c5f0db..0000000 --- a/test/eddy/build/transaction_set_builder/loop_builder_test.rb +++ /dev/null @@ -1,80 +0,0 @@ -require "test_helper" - -module BuildTest - module TransactionSetBuilderTest - class LoopBuilderTest < Minitest::Test - - def test_n1_loop - want = <<~RB.strip - # ### Loop Summary: - # - # - Repeat: 200 - # - Components: - # - N1 - # - N3 - # - N4 - class N1 < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 200 - @components = [ - Eddy::Segments::N1, - Eddy::Segments::N3, - Eddy::Segments::N4, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::N1] n1 - # @yieldparam [Eddy::Segments::N3] n3 - # @yieldparam [Eddy::Segments::N4] n4 - # @return [void] - end - RB - summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/n1.loop.yml")) - have = Eddy::Build::LoopBuilder.from_summary(summary).ginny_class.render() - assert_equal(want, have) - end - - def test_it1_loop - want = <<~RB.strip - # ### Loop Summary: - # - # - Repeat: 200000 - # - Components: - # - IT1 - # - CTP - # - PID (loop) - # - SAC (loop) - class IT1 < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 200000 - @components = [ - Eddy::Segments::IT1, - Eddy::Segments::CTP, - Eddy::TransactionSets::TS810::Loops::PID, - Eddy::TransactionSets::TS810::Loops::SAC, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::IT1] it1 - # @yieldparam [Eddy::Segments::CTP] ctp - # @yieldparam [Eddy::TransactionSets::TS810::Loops::PID] l_pid - # @yieldparam [Eddy::TransactionSets::TS810::Loops::SAC] l_sac - # @return [void] - end - RB - summary = Eddy::Summary::Loop.from_file(file_fixture("schema/loops/it1.loop.yml")) - have = Eddy::Build::LoopBuilder.from_summary(summary, t_set_id: "TS810").ginny_class.render() - assert_equal(want, have) - end - - end - end -end diff --git a/test/eddy/build/transaction_set_builder/segment_accessor_test.rb b/test/eddy/build/transaction_set_builder/segment_accessor_test.rb index 7883268..25d2046 100644 --- a/test/eddy/build/transaction_set_builder/segment_accessor_test.rb +++ b/test/eddy/build/transaction_set_builder/segment_accessor_test.rb @@ -20,15 +20,13 @@ def CTT() def test_loop_accessor want = <<~RB.strip - # (see Eddy::TransactionSets::TS810::Loops::N1) + # (see Eddy::TransactionSets::TS810::Loops::N1::Base) # - # @yieldparam [Eddy::Segments::N1] n1 - # @yieldparam [Eddy::Segments::N3] n3 - # @yieldparam [Eddy::Segments::N4] n4 + # @yieldparam [Eddy::TransactionSets::TS810::Loops::N1::Repeat] # @return [void] - def L_N1(&block) + def L_N1() if block_given? - @l_n1.add_iteration(&block) + @l_n1.repeat() else raise Eddy::Errors::Error, "No block given in loop iteration" end diff --git a/test/eddy/build/transaction_set_builder/ts810_test.rb b/test/eddy/build/transaction_set_builder/ts810_test.rb index 2f8641e..57038af 100644 --- a/test/eddy/build/transaction_set_builder/ts810_test.rb +++ b/test/eddy/build/transaction_set_builder/ts810_test.rb @@ -6,18 +6,154 @@ class TS810Test < Minitest::Test def setup @summary = Eddy::Summary::TransactionSet.from_file(file_fixture("schema/810.edi.yml")) - @ts = File.read(file_fixture("ruby/810_ts.rb")).strip - @loops = File.read(file_fixture("ruby/810_loops.rb")).strip end def test_transaction_set_builder + want = <<~RB.strip + module Eddy + module TransactionSets + module TS810 + # ### Transaction Set Summary: + # + # - Id: 810 + # - Name: Invoice + # - Functional Group: IN + class TS810 < Eddy::Models::TransactionSet + + ID = "810".freeze + NAME = "Invoice".freeze + FUNCTIONAL_GROUP = "IN".freeze + + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @big = Eddy::Segments::BIG.new(store) + @ref = Eddy::Segments::REF.new(store) + @l_n1 = Eddy::TransactionSets::TS810::Loops::N1::Base.new(store) + @dtm = Eddy::Segments::DTM.new(store) + @l_it1 = Eddy::TransactionSets::TS810::Loops::IT1::Base.new(store) + @tds = Eddy::Segments::TDS.new(store) + @cad = Eddy::Segments::CAD.new(store) + @l_sac = Eddy::TransactionSets::TS810::Loops::SAC::Base.new(store) + @ctt = Eddy::Segments::CTT.new(store) + super( + store, + @big, + @ref, + @l_n1, + @dtm, + @l_it1, + @tds, + @cad, + @l_sac, + @ctt, + ) + end + + # (see Eddy::Segments::BIG) + # + # @yieldparam [Eddy::Segments::BIG] big + # @return [Eddy::Segments::BIG] + def BIG() + yield(@big) if block_given? + return @big + end + + # (see Eddy::Segments::REF) + # + # @yieldparam [Eddy::Segments::REF] ref + # @return [Eddy::Segments::REF] + def REF() + yield(@ref) if block_given? + return @ref + end + + # (see Eddy::TransactionSets::TS810::Loops::N1::Base) + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::N1::Repeat] + # @return [void] + def L_N1() + if block_given? + @l_n1.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + + # (see Eddy::Segments::DTM) + # + # @yieldparam [Eddy::Segments::DTM] dtm + # @return [Eddy::Segments::DTM] + def DTM() + yield(@dtm) if block_given? + return @dtm + end + + # (see Eddy::TransactionSets::TS810::Loops::IT1::Base) + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::IT1::Repeat] + # @return [void] + def L_IT1() + if block_given? + @l_it1.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + + # (see Eddy::Segments::TDS) + # + # @yieldparam [Eddy::Segments::TDS] tds + # @return [Eddy::Segments::TDS] + def TDS() + yield(@tds) if block_given? + return @tds + end + + # (see Eddy::Segments::CAD) + # + # @yieldparam [Eddy::Segments::CAD] cad + # @return [Eddy::Segments::CAD] + def CAD() + yield(@cad) if block_given? + return @cad + end + + # (see Eddy::TransactionSets::TS810::Loops::SAC::Base) + # + # @yieldparam [Eddy::TransactionSets::TS810::Loops::SAC::Repeat] + # @return [void] + def L_SAC() + if block_given? + @l_sac.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + + # (see Eddy::Segments::CTT) + # + # @yieldparam [Eddy::Segments::CTT] ctt + # @return [Eddy::Segments::CTT] + def CTT() + yield(@ctt) if block_given? + return @ctt + end + + end + end + end + end + RB have = Eddy::Build::TransactionSetBuilder.from_summary(@summary).ginny_class.render() - assert_equal(@ts, have) + assert_equal(want, have) end def test_build_loops - have = Eddy::Build::TransactionSetBuilder.from_summary(@summary).render_loops() - assert_equal(@loops, have) + skip("This is more complicated now that each loop gets its own file.") end end diff --git a/test/eddy/build/transaction_set_builder/ts850_test.rb b/test/eddy/build/transaction_set_builder/ts850_test.rb index 91a6b64..2863851 100644 --- a/test/eddy/build/transaction_set_builder/ts850_test.rb +++ b/test/eddy/build/transaction_set_builder/ts850_test.rb @@ -6,21 +6,108 @@ class TS850Test < Minitest::Test def setup @summary = Eddy::Summary::TransactionSet.from_file(file_fixture("schema/850.edi.yml")) - @ts = File.read(file_fixture("ruby/850_ts.rb")).strip - @loops = File.read(file_fixture("ruby/850_loops.rb")).strip end def test_transaction_set_builder + want = <<~RB.strip + module Eddy + module TransactionSets + module TS850 + # ### Transaction Set Summary: + # + # - Id: 850 + # - Name: Purchase Order + # - Functional Group: PO + class TS850 < Eddy::Models::TransactionSet + + ID = "850".freeze + NAME = "Purchase Order".freeze + FUNCTIONAL_GROUP = "PO".freeze + + # @param store [Eddy::Data::Store] + # @return [void] + def initialize(store) + @beg = Eddy::Segments::BEG.new(store) + @td5 = Eddy::Segments::TD5.new(store) + @l_n1 = Eddy::TransactionSets::TS850::Loops::N1::Base.new(store) + @l_po1 = Eddy::TransactionSets::TS850::Loops::PO1::Base.new(store) + @ctt = Eddy::Segments::CTT.new(store) + super( + store, + @beg, + @td5, + @l_n1, + @l_po1, + @ctt, + ) + end + + # (see Eddy::Segments::BEG) + # + # @yieldparam [Eddy::Segments::BEG] beg + # @return [Eddy::Segments::BEG] + def BEG() + yield(@beg) if block_given? + return @beg + end + + # (see Eddy::Segments::TD5) + # + # @yieldparam [Eddy::Segments::TD5] td5 + # @return [Eddy::Segments::TD5] + def TD5() + yield(@td5) if block_given? + return @td5 + end + + # (see Eddy::TransactionSets::TS850::Loops::N1::Base) + # + # @yieldparam [Eddy::TransactionSets::TS850::Loops::N1::Repeat] + # @return [void] + def L_N1() + if block_given? + @l_n1.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + + # (see Eddy::TransactionSets::TS850::Loops::PO1::Base) + # + # @yieldparam [Eddy::TransactionSets::TS850::Loops::PO1::Repeat] + # @return [void] + def L_PO1() + if block_given? + @l_po1.repeat() + else + raise Eddy::Errors::Error, "No block given in loop iteration" + end + return nil + end + + # (see Eddy::Segments::CTT) + # + # @yieldparam [Eddy::Segments::CTT] ctt + # @return [Eddy::Segments::CTT] + def CTT() + yield(@ctt) if block_given? + return @ctt + end + + end + end + end + end + RB have = Eddy::Build::TransactionSetBuilder.from_summary(@summary).ginny_class.render() - assert_equal(@ts, have) + assert_equal(want, have) end def test_build_loops - have = Eddy::Build::TransactionSetBuilder.from_summary(@summary).render_loops() - assert_equal(@loops, have) + skip("This is more complicated now that each loop gets its own file.") end - end end end diff --git a/test/eddy/write/ts_810_test.rb b/test/eddy/write/ts_810_test.rb index 4787e8f..ab9b050 100644 --- a/test/eddy/write/ts_810_test.rb +++ b/test/eddy/write/ts_810_test.rb @@ -56,53 +56,56 @@ def test_nested_loops end ts.REF.REF01 = "IO" ts.REF.REF02 = "define-this-value" - ts.L_N1.repeat do |rep| - rep.N1.N101 = "ST" - rep.N1.Name = "Sweeney Todd" - rep.N3.AddressInformation = "2705 Fleet St" - rep.N4.CityName = "Birmingham" - rep.N4.StateOrProvinceCode = "AL" - rep.N4.PostalCode = "35226" - rep.N4.CountryCode = "US" + ts.L_N1 do |n1| + n1.N1.N101 = "ST" + n1.N1.Name = "Sweeney Todd" + n1.N3.AddressInformation = "2705 Fleet St" + n1.N4.CityName = "Birmingham" + n1.N4.StateOrProvinceCode = "AL" + n1.N4.PostalCode = "35226" + n1.N4.CountryCode = "US" end ts.DTM.DTM01 = "011" ts.DTM.DTM02 = @epoch - ts.L_IT1.repeat do |rep| - # IT1 - rep.IT1.AssignedIdentification = "1" - rep.IT1.QuantityInvoiced = 1 - rep.IT1.IT103 = "EA" - rep.IT1.UnitPrice = 59.95 - rep.IT1.IT106 = "UP" - rep.IT1.IT107 = "860001662184" - rep.IT1.IT108 = "VP" - rep.IT1.IT109 = "860001662184" - rep.IT1.IT110 = "A3" - rep.IT1.IT111 = "860001662184" - rep.IT1.IT112 = "ZZ" - rep.IT1.IT113 = "860001662184" - rep.IT1.IT114 = "EN" - rep.IT1.IT115 = "860001662184" + ts.L_IT1 do |rep| + rep.IT1 do |it1| + it1.AssignedIdentification = "1" + it1.QuantityInvoiced = 1 + it1.IT103 = "EA" + it1.UnitPrice = 59.95 + it1.IT106 = "UP" + it1.IT107 = "860001662184" + it1.IT108 = "VP" + it1.IT109 = "860001662184" + it1.IT110 = "A3" + it1.IT111 = "860001662184" + it1.IT112 = "ZZ" + it1.IT113 = "860001662184" + it1.IT114 = "EN" + it1.IT115 = "860001662184" + end # CTP - rep.CTP.CTP02 = "DPR" - rep.CTP.CTP03 = 0 - rep.CTP.CTP04 = 0 - rep.CTP.CTP06 = "DIS" - rep.CTP.CTP07 = 0 - rep.CTP.CTP08 = 59.95 + rep.CTP do |ctp| + ctp.CTP02 = "DPR" + ctp.CTP03 = 0 + ctp.CTP04 = 0 + ctp.CTP06 = "DIS" + ctp.CTP07 = 0 + ctp.CTP08 = 59.95 + end # PID - rep.L_PID.repeat do |rep| - rep.PID.PID01 = "F" - rep.PID.PID05 = "CBD Topical Cream 400mg THC Free" + rep.L_PID do |pid| + pid.PID.PID01 = "F" + pid.PID.PID05 = "CBD Topical Cream 400mg THC Free" end # SAC - rep.L_SAC.repeat do |rep| - rep.SAC.SAC01 = "C" - rep.SAC.SAC02 = "ZZZZ" - rep.SAC.SAC05 = 0 + rep.L_SAC do |sac| + sac.SAC.SAC01 = "C" + sac.SAC.SAC02 = "ZZZZ" + sac.SAC.SAC05 = 0 end end - ts.L_IT1.repeat do |rep| + ts.L_IT1 do |rep| # IT1 rep.IT1.AssignedIdentification = "2" rep.IT1.QuantityInvoiced = 2 @@ -126,12 +129,12 @@ def test_nested_loops rep.CTP.CTP07 = 0 rep.CTP.CTP08 = 49.95 # PID - rep.L_PID.repeat do |rep| + rep.L_PID do |rep| rep.PID.PID01 = "F" rep.PID.PID05 = "500mg Full Spectrum Garden Mint Oil Tincture" end # SAC - rep.L_SAC.repeat do |rep| + rep.L_SAC do |rep| rep.SAC.SAC01 = "C" rep.SAC.SAC02 = "ZZZZ" rep.SAC.SAC05 = 0 @@ -139,12 +142,12 @@ def test_nested_loops end ts.TDS.TDS01 = 179.85 ts.CAD.CAD05 = "define-this-value" - ts.L_SAC.repeat do |rep| + ts.L_SAC do |rep| rep.SAC.SAC01 = "C" rep.SAC.SAC02 = "ZZZZ" rep.SAC.SAC05 = 59.95 end - ts.L_SAC.repeat do |rep| + ts.L_SAC do |rep| rep.SAC.SAC01 = "C" rep.SAC.SAC02 = "ZZZZ" rep.SAC.SAC05 = 49.95 * 2 diff --git a/test/eddy/write/ts_850_test.rb b/test/eddy/write/ts_850_test.rb index 07ae1ba..0a5c3a0 100644 --- a/test/eddy/write/ts_850_test.rb +++ b/test/eddy/write/ts_850_test.rb @@ -33,7 +33,7 @@ def test_single_iteration td5.TD504 = "ZZ" td5.TD505 = "UPS3" end - ts.L_N1.repeat do |rep| + ts.L_N1 do |rep| # N1 rep.N1.N101 = "ST" rep.N1.Name = "Sweeney Todd" @@ -45,7 +45,7 @@ def test_single_iteration rep.N4.PostalCode = "35226" rep.N4.CountryCode = "US" end - ts.L_PO1.repeat do |rep| + ts.L_PO1 do |rep| # CBD Topical Cream 400mg THC Free rep.PO1.AssignedIdentification = "1" rep.PO1.QuantityOrdered = 1 @@ -87,7 +87,7 @@ def test_multiple_iterations td5.TD504 = "ZZ" td5.TD505 = "UPS3" end - ts.L_N1.repeat do |rep| + ts.L_N1 do |rep| # N1 rep.N1.N101 = "ST" rep.N1.Name = "Sweeney Todd" @@ -99,7 +99,7 @@ def test_multiple_iterations rep.N4.PostalCode = "35226" rep.N4.CountryCode = "US" end - ts.L_PO1.repeat do |rep| + ts.L_PO1 do |rep| # CBD Topical Cream 400mg THC Free rep.PO1.AssignedIdentification = "1" rep.PO1.QuantityOrdered = 1 @@ -110,7 +110,7 @@ def test_multiple_iterations rep.PO1.ProductServiceIdQualifier2 = "VN" rep.PO1.ProductServiceId2 = "860001662184" end - ts.L_PO1.repeat do |rep| + ts.L_PO1 do |rep| # 500mg Full Spectrum Garden Mint Oil Tincture rep.PO1.AssignedIdentification = "2" rep.PO1.QuantityOrdered = 2 diff --git a/test/fixtures/files/ruby/810_loops.rb b/test/fixtures/files/ruby/810_loops.rb deleted file mode 100644 index aa48f09..0000000 --- a/test/fixtures/files/ruby/810_loops.rb +++ /dev/null @@ -1,108 +0,0 @@ -module Eddy - module TransactionSets - module TS810 - module Loops - - # ### Loop Summary: - # - # - Repeat: 200 - # - Components: - # - N1 - # - N3 - # - N4 - class N1 < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 200 - @components = [ - Eddy::Segments::N1, - Eddy::Segments::N3, - Eddy::Segments::N4, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::N1] n1 - # @yieldparam [Eddy::Segments::N3] n3 - # @yieldparam [Eddy::Segments::N4] n4 - # @return [void] - end - - # ### Loop Summary: - # - # - Repeat: 200000 - # - Components: - # - IT1 - # - CTP - # - PID (loop) - # - SAC (loop) - class IT1 < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 200000 - @components = [ - Eddy::Segments::IT1, - Eddy::Segments::CTP, - Eddy::TransactionSets::TS810::Loops::PID, - Eddy::TransactionSets::TS810::Loops::SAC, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::IT1] it1 - # @yieldparam [Eddy::Segments::CTP] ctp - # @yieldparam [Eddy::TransactionSets::TS810::Loops::PID] l_pid - # @yieldparam [Eddy::TransactionSets::TS810::Loops::SAC] l_sac - # @return [void] - end - - # ### Loop Summary: - # - # - Repeat: 1000 - # - Components: - # - PID - class PID < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 1000 - @components = [ - Eddy::Segments::PID, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::PID] pid - # @return [void] - end - - # ### Loop Summary: - # - # - Repeat: 25 - # - Components: - # - SAC - class SAC < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 25 - @components = [ - Eddy::Segments::SAC, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::SAC] sac - # @return [void] - end - - end - end - end -end diff --git a/test/fixtures/files/ruby/810_ts.rb b/test/fixtures/files/ruby/810_ts.rb deleted file mode 100644 index c379549..0000000 --- a/test/fixtures/files/ruby/810_ts.rb +++ /dev/null @@ -1,142 +0,0 @@ -module Eddy - module TransactionSets - module TS810 - # ### Transaction Set Summary: - # - # - Id: 810 - # - Name: Invoice - # - Functional Group: IN - class TS810 < Eddy::Models::TransactionSet - - ID = "810".freeze - NAME = "Invoice".freeze - FUNCTIONAL_GROUP = "IN".freeze - - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - @big = Eddy::Segments::BIG.new(store) - @ref = Eddy::Segments::REF.new(store) - @l_n1 = Eddy::TransactionSets::TS810::Loops::N1.new(store) - @dtm = Eddy::Segments::DTM.new(store) - @l_it1 = Eddy::TransactionSets::TS810::Loops::IT1.new(store) - @tds = Eddy::Segments::TDS.new(store) - @cad = Eddy::Segments::CAD.new(store) - @l_sac = Eddy::TransactionSets::TS810::Loops::SAC.new(store) - @ctt = Eddy::Segments::CTT.new(store) - super( - store, - @big, - @ref, - @l_n1, - @dtm, - @l_it1, - @tds, - @cad, - @l_sac, - @ctt, - ) - end - - # (see Eddy::Segments::BIG) - # - # @yieldparam [Eddy::Segments::BIG] big - # @return [Eddy::Segments::BIG] - def BIG() - yield(@big) if block_given? - return @big - end - - # (see Eddy::Segments::REF) - # - # @yieldparam [Eddy::Segments::REF] ref - # @return [Eddy::Segments::REF] - def REF() - yield(@ref) if block_given? - return @ref - end - - # (see Eddy::TransactionSets::TS810::Loops::N1) - # - # @yieldparam [Eddy::Segments::N1] n1 - # @yieldparam [Eddy::Segments::N3] n3 - # @yieldparam [Eddy::Segments::N4] n4 - # @return [void] - def L_N1(&block) - if block_given? - @l_n1.add_iteration(&block) - else - raise Eddy::Errors::Error, "No block given in loop iteration" - end - return nil - end - - # (see Eddy::Segments::DTM) - # - # @yieldparam [Eddy::Segments::DTM] dtm - # @return [Eddy::Segments::DTM] - def DTM() - yield(@dtm) if block_given? - return @dtm - end - - # (see Eddy::TransactionSets::TS810::Loops::IT1) - # - # @yieldparam [Eddy::Segments::IT1] it1 - # @yieldparam [Eddy::Segments::CTP] ctp - # @yieldparam [Eddy::TransactionSets::TS810::Loops::PID] l_pid - # @yieldparam [Eddy::TransactionSets::TS810::Loops::SAC] l_sac - # @return [void] - def L_IT1(&block) - if block_given? - @l_it1.add_iteration(&block) - else - raise Eddy::Errors::Error, "No block given in loop iteration" - end - return nil - end - - # (see Eddy::Segments::TDS) - # - # @yieldparam [Eddy::Segments::TDS] tds - # @return [Eddy::Segments::TDS] - def TDS() - yield(@tds) if block_given? - return @tds - end - - # (see Eddy::Segments::CAD) - # - # @yieldparam [Eddy::Segments::CAD] cad - # @return [Eddy::Segments::CAD] - def CAD() - yield(@cad) if block_given? - return @cad - end - - # (see Eddy::TransactionSets::TS810::Loops::SAC) - # - # @yieldparam [Eddy::Segments::SAC] sac - # @return [void] - def L_SAC(&block) - if block_given? - @l_sac.add_iteration(&block) - else - raise Eddy::Errors::Error, "No block given in loop iteration" - end - return nil - end - - # (see Eddy::Segments::CTT) - # - # @yieldparam [Eddy::Segments::CTT] ctt - # @return [Eddy::Segments::CTT] - def CTT() - yield(@ctt) if block_given? - return @ctt - end - - end - end - end -end diff --git a/test/fixtures/files/ruby/850_loops.rb b/test/fixtures/files/ruby/850_loops.rb deleted file mode 100644 index a557727..0000000 --- a/test/fixtures/files/ruby/850_loops.rb +++ /dev/null @@ -1,57 +0,0 @@ -module Eddy - module TransactionSets - module TS850 - module Loops - - # ### Loop Summary: - # - # - Repeat: 200 - # - Components: - # - N1 - # - N3 - # - N4 - class N1 < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 200 - @components = [ - Eddy::Segments::N1, - Eddy::Segments::N3, - Eddy::Segments::N4, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::N1] n1 - # @yieldparam [Eddy::Segments::N3] n3 - # @yieldparam [Eddy::Segments::N4] n4 - # @return [void] - end - - # ### Loop Summary: - # - # - Repeat: 100000 - # - Components: - # - PO1 - class PO1 < Eddy::Models::Loop::Base - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - super(store) - @repeat_limit = 100000 - @components = [ - Eddy::Segments::PO1, - ] - end - - # @!method add_iteration(&block) - # @yieldparam [Eddy::Segments::PO1] po1 - # @return [void] - end - - end - end - end -end diff --git a/test/fixtures/files/ruby/850_ts.rb b/test/fixtures/files/ruby/850_ts.rb deleted file mode 100644 index b264145..0000000 --- a/test/fixtures/files/ruby/850_ts.rb +++ /dev/null @@ -1,91 +0,0 @@ -module Eddy - module TransactionSets - module TS850 - # ### Transaction Set Summary: - # - # - Id: 850 - # - Name: Purchase Order - # - Functional Group: PO - class TS850 < Eddy::Models::TransactionSet - - ID = "850".freeze - NAME = "Purchase Order".freeze - FUNCTIONAL_GROUP = "PO".freeze - - # @param store [Eddy::Data::Store] - # @return [void] - def initialize(store) - @beg = Eddy::Segments::BEG.new(store) - @td5 = Eddy::Segments::TD5.new(store) - @l_n1 = Eddy::TransactionSets::TS850::Loops::N1.new(store) - @l_po1 = Eddy::TransactionSets::TS850::Loops::PO1.new(store) - @ctt = Eddy::Segments::CTT.new(store) - super( - store, - @beg, - @td5, - @l_n1, - @l_po1, - @ctt, - ) - end - - # (see Eddy::Segments::BEG) - # - # @yieldparam [Eddy::Segments::BEG] beg - # @return [Eddy::Segments::BEG] - def BEG() - yield(@beg) if block_given? - return @beg - end - - # (see Eddy::Segments::TD5) - # - # @yieldparam [Eddy::Segments::TD5] td5 - # @return [Eddy::Segments::TD5] - def TD5() - yield(@td5) if block_given? - return @td5 - end - - # (see Eddy::TransactionSets::TS850::Loops::N1) - # - # @yieldparam [Eddy::Segments::N1] n1 - # @yieldparam [Eddy::Segments::N3] n3 - # @yieldparam [Eddy::Segments::N4] n4 - # @return [void] - def L_N1(&block) - if block_given? - @l_n1.add_iteration(&block) - else - raise Eddy::Errors::Error, "No block given in loop iteration" - end - return nil - end - - # (see Eddy::TransactionSets::TS850::Loops::PO1) - # - # @yieldparam [Eddy::Segments::PO1] po1 - # @return [void] - def L_PO1(&block) - if block_given? - @l_po1.add_iteration(&block) - else - raise Eddy::Errors::Error, "No block given in loop iteration" - end - return nil - end - - # (see Eddy::Segments::CTT) - # - # @yieldparam [Eddy::Segments::CTT] ctt - # @return [Eddy::Segments::CTT] - def CTT() - yield(@ctt) if block_given? - return @ctt - end - - end - end - end -end