Class: Hbci::Segments::HNVSDv1

Inherits:
Hbci::Segment show all
Defined in:
lib/hbci/segments/hnvsd.rb

Instance Attribute Summary collapse

Attributes inherited from Hbci::Segment

#defined_element_groups, #dialog, #element_groups, #message, #request_message

Instance Method Summary collapse

Methods inherited from Hbci::Segment

#build, element, element_group, element_groups_to_be_defined, fill, #to_s

Constructor Details

#initialize {|_self| ... } ⇒ HNVSDv1

Returns a new instance of HNVSDv1.

Yields:

  • (_self)

Yield Parameters:



11
12
13
14
15
# File 'lib/hbci/segments/hnvsd.rb', line 11

def initialize
  super()
  @segments = []
  yield self if block_given?
end

Instance Attribute Details

#segmentsObject (readonly)

Returns the value of attribute segments.



6
7
8
# File 'lib/hbci/segments/hnvsd.rb', line 6

def segments
  @segments
end

Instance Method Details

#add_segment(segment) ⇒ Object



28
29
30
31
# File 'lib/hbci/segments/hnvsd.rb', line 28

def add_segment(segment)
  segment.build(self)
  @segments.push(segment)
end

#compileObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/hbci/segments/hnvsd.rb', line 33

def compile
  head.position = 999
  @segments.each_with_index do |segment, _index|
    segment.request_message = request_message
    segment.compile
    unless segment.head.position
      segment.head.position = request_message.next_position
      request_message.next_position += 1
    end
  end
  @segments.each do |segment|
    segment.after_compile if segment.respond_to?(:after_compile)
  end
  self.content = @segments.join('')
end

#find(segment_type) ⇒ Object



17
18
19
20
21
# File 'lib/hbci/segments/hnvsd.rb', line 17

def find(segment_type)
  segments = find_all(segment_type)
  warn "more then one #{segment_type} segment available" if segments.size > 1
  segments.first
end

#find_all(segment_type) ⇒ Object



23
24
25
26
# File 'lib/hbci/segments/hnvsd.rb', line 23

def find_all(segment_type)
  @raw_segments = Parser.parse(content)
  @raw_segments.select { |sd| sd[0][0] == segment_type }.map { |sd| Hbci::SegmentFactory.build(sd) }
end