Class: Stupidedi::Schema::Generation::DefinitionGenerator

Inherits:
Object
  • Object
show all
Includes:
Support
Defined in:
lib/stupidedi/schema/generation/definition_generator.rb

Overview

Generates one transaction-set standard file (e.g. SM204.rb). Walks the transaction set's table definitions and recursively emits loops and segment uses. This is the heart of the grammar.

Constant Summary collapse

AREA_METHODS =
{
  "heading" => "header",
  "detail"  => "detail",
  "summary" => "summary"
}.freeze

Instance Method Summary collapse

Methods included from Support

#namespace, #namespace_path

Constructor Details

#initialize(transaction_set, namespace: "Edi") ⇒ DefinitionGenerator

Returns a new instance of DefinitionGenerator.



18
19
20
21
# File 'lib/stupidedi/schema/generation/definition_generator.rb', line 18

def initialize(transaction_set, namespace: "Edi")
  @transaction_set = transaction_set
  @namespace = namespace
end

Instance Method Details

#constant_nameObject



28
29
30
31
32
33
34
# File 'lib/stupidedi/schema/generation/definition_generator.rb', line 28

def constant_name
  func_group = transaction_set.func_group
  code = transaction_set.code
  # If func_group is nil/empty, prefix with 'TS' to create a valid Ruby constant
  func_group = "TS" if func_group.nil? || func_group.empty?
  "#{func_group}#{code}"
end

#generateObject



23
24
25
26
# File 'lib/stupidedi/schema/generation/definition_generator.rb', line 23

def generate
  validate_release!
  build_ruby_content
end

#output_pathObject



36
37
38
# File 'lib/stupidedi/schema/generation/definition_generator.rb', line 36

def output_path
  "#{namespace_path}/#{underscore(version_module)}/standards/#{constant_name}.rb"
end