Class: Stupidedi::Schema::TableDef

Inherits:
AbstractDef show all
Defined in:
lib/stupidedi/schema/table_def.rb

Instance Attribute Summary (collapse)

Constructors (collapse)

Instance Method Summary (collapse)

Methods inherited from AbstractDef

#component?, #composite?, #definition?, #element?, #functional_group?, #interchange?, #loop?, #repeated?, #segment?, #simple?, #transaction_set?, #usage?

Constructor Details

- (TableDef) initialize(id, position, repeatable, header_segment_uses, loop_defs, trailer_segment_uses, parent)

A new instance of TableDef



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/stupidedi/schema/table_def.rb', line 23

def initialize(id, position, repeatable, header_segment_uses, loop_defs, trailer_segment_uses, parent)
  @id, @position, @repeatable, @header_segment_uses, @loop_defs, @trailer_segment_uses, @parent =
    id, position, repeatable, header_segment_uses, loop_defs, trailer_segment_uses, parent

  # Delay re-parenting until the entire definition tree has a root
  # to prevent unnecessarily copying objects
  unless parent.nil?
    @header_segment_uses  = @header_segment_uses.map{|x| x.copy(:parent => self) }
    @loop_defs            = @loop_defs.map{|x| x.copy(:parent => self) }
    @trailer_segment_uses = @trailer_segment_uses.map{|x| x.copy(:parent => self) }
  end
end

Instance Attribute Details

- (Array<SegmentUse>) header_segment_uses (readonly)

Returns:



9
10
11
# File 'lib/stupidedi/schema/table_def.rb', line 9

def header_segment_uses
  @header_segment_uses
end

- (String) id (readonly)

Returns:



6
7
8
# File 'lib/stupidedi/schema/table_def.rb', line 6

def id
  @id
end

- (Array<LoopDef>) loop_defs (readonly)

Returns:



15
16
17
# File 'lib/stupidedi/schema/table_def.rb', line 15

def loop_defs
  @loop_defs
end

- (TransactionSetDef) parent (readonly)

Returns:



18
19
20
# File 'lib/stupidedi/schema/table_def.rb', line 18

def parent
  @parent
end

- (Integer) position (readonly)

Returns:



21
22
23
# File 'lib/stupidedi/schema/table_def.rb', line 21

def position
  @position
end

- (Array<SegmentUse>) trailer_segment_uses (readonly)

Returns:



12
13
14
# File 'lib/stupidedi/schema/table_def.rb', line 12

def trailer_segment_uses
  @trailer_segment_uses
end

Class Method Details

+ (TableDef) detail(id, *children)

Returns:



121
122
123
124
125
# File 'lib/stupidedi/schema/table_def.rb', line 121

def detail(id, *children)
  header, children   = children.split_when{|x| x.is_a?(LoopDef) }
  loop_defs, trailer = children.split_when{|x| x.is_a?(SegmentUse) }
  new(id, 2, true, header, loop_defs, trailer, nil)
end

+ (TableDef) header(id, *children)

Returns:



114
115
116
117
118
# File 'lib/stupidedi/schema/table_def.rb', line 114

def header(id, *children)
  header, children   = children.split_when{|x| x.is_a?(LoopDef) }
  loop_defs, trailer = children.split_when{|x| x.is_a?(SegmentUse) }
  new(id, 1, false, header, loop_defs, trailer, nil)
end

+ (TableDef) summary(id, *children)

Returns:



128
129
130
131
132
# File 'lib/stupidedi/schema/table_def.rb', line 128

def summary(id, *children)
  header, children   = children.split_when{|x| x.is_a?(LoopDef) }
  loop_defs, trailer = children.split_when{|x| x.is_a?(SegmentUse) }
  new(id, 3, false, header, loop_defs, trailer, nil)
end

Instance Method Details

- (Array<SegmentUse, LoopDef>) children

Returns:



61
62
63
# File 'lib/stupidedi/schema/table_def.rb', line 61

def children
  @header_segment_uses + @loop_defs + @trailer_segment_uses
end

- (AbstractSet<CodeList>) code_lists

Returns:



75
76
77
# File 'lib/stupidedi/schema/table_def.rb', line 75

def code_lists
  children.map(&:code_lists).inject(&:|)
end

- (TableDef) copy(changes = {})

Returns:



37
38
39
40
41
42
43
44
45
46
# File 'lib/stupidedi/schema/table_def.rb', line 37

def copy(changes = {})
  TableDef.new \
    changes.fetch(:id, @id),
    changes.fetch(:position, @position),
    changes.fetch(:repeatable, @repeatable),
    changes.fetch(:header_segment_uses, @header_segment_uses),
    changes.fetch(:loop_defs, @loop_defs),
    changes.fetch(:trailer_segment_uses, @trailer_segment_uses),
    changes.fetch(:parent, @parent)
end

- (Values::TableVal) empty

Returns:



66
67
68
# File 'lib/stupidedi/schema/table_def.rb', line 66

def empty
  Values::TableVal.new(self, [])
end

- (Array<SegmentUse>) entry_segment_uses

Returns:



53
54
55
56
57
58
# File 'lib/stupidedi/schema/table_def.rb', line 53

def entry_segment_uses
  uses = []
  uses.concat(@header_segment_uses)
  uses.concat(@loop_defs.map{|l| l.entry_segment_use })
  uses.concat(@trailer_segment_uses)
end

- pretty_print(q)

This method returns an undefined value.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/stupidedi/schema/table_def.rb', line 80

def pretty_print(q)
  q.text("TableDef[#{@id}]")
  q.group(2, "(", ")") do
    q.breakable ""
    @header_segment_uses.each do |e|
      unless q.current_group.first?
        q.text ","
        q.breakable
      end
      q.pp e
    end
    @loop_defs.each do |e|
      unless q.current_group.first?
        q.text ","
        q.breakable
      end
      q.pp e
    end
    @trailer_segment_uses.each do |e|
      unless q.current_group.first?
        q.text ","
        q.breakable
      end
      q.pp e
    end
  end
end

- (Boolean) repeatable?

Returns:

  • (Boolean)


48
49
50
# File 'lib/stupidedi/schema/table_def.rb', line 48

def repeatable?
  @repeatable
end

- (Boolean) table?

Returns:

  • (Boolean)


70
71
72
# File 'lib/stupidedi/schema/table_def.rb', line 70

def table?
  true
end