class Hbci::Segment
Attributes
defined_element_groups[R]
dialog[RW]
element_groups[R]
message[RW]
request_message[RW]
Public Class Methods
element(name, definition = {})
click to toggle source
# File lib/hbci/segment.rb, line 22 def self.element(name, definition = {}) element_groups_to_be_defined << definition.merge(name: name, block: nil, passthrough: true) end
element_group(name, definition = {}, &block)
click to toggle source
# File lib/hbci/segment.rb, line 18 def self.element_group(name, definition = {}, &block) element_groups_to_be_defined << definition.merge(name: name, block: block) end
element_groups_to_be_defined()
click to toggle source
# File lib/hbci/segment.rb, line 14 def self.element_groups_to_be_defined @element_groups_to_be_defined ||= [] end
fill(segment_data)
click to toggle source
# File lib/hbci/segment.rb, line 35 def self.fill(segment_data) segment_data.each_with_object(new).with_index do |(element_group_data, segment), element_group_index| element_group_data.each_with_index do |element_data, element_index| segment.element_groups[element_group_index][element_index] = element_data end end end
new()
click to toggle source
# File lib/hbci/segment.rb, line 43 def initialize @element_groups = [] @defined_element_groups ||= [] define_element_groups end
Public Instance Methods
build(message)
click to toggle source
# File lib/hbci/segment.rb, line 26 def build(message) self.request_message = message type, version = self.class.name.split('::').last.split('v') head.type = type head.version = version end
compile()
click to toggle source
# File lib/hbci/segment.rb, line 49 def compile; end
to_s()
click to toggle source
# File lib/hbci/segment.rb, line 51 def to_s element_groups.join('+').gsub(/\+*$/, '') << '\'' end
Private Instance Methods
after_build()
click to toggle source
# File lib/hbci/segment.rb, line 115 def after_build; end
define_element_group(definition)
click to toggle source
# File lib/hbci/segment.rb, line 65 def define_element_group(definition) defined_element_groups << definition[:name] if definition[:passthrough] initiate_passthrough_element_group(definition) define_element_group_passthrough_reader(definition[:name]) define_element_group_passthrough_writer(definition[:name]) else initiate_element_group(definition) define_element_group_reader(definition[:name]) define_element_group_writer(definition[:name]) end end
define_element_group_passthrough_reader(name)
click to toggle source
# File lib/hbci/segment.rb, line 91 def define_element_group_passthrough_reader(name) define_singleton_method(name.to_s) do element_groups[index_of_element_group(name)][0] end end
define_element_group_passthrough_writer(name)
click to toggle source
# File lib/hbci/segment.rb, line 109 def define_element_group_passthrough_writer(name) define_singleton_method("#{name}=") do |value| element_groups[index_of_element_group(name)][0] = value end end
define_element_group_reader(name)
click to toggle source
# File lib/hbci/segment.rb, line 97 def define_element_group_reader(name) define_singleton_method(name.to_s) do element_groups[index_of_element_group(name)] end end
define_element_group_writer(name)
click to toggle source
# File lib/hbci/segment.rb, line 103 def define_element_group_writer(name) define_singleton_method("#{name}=") do |value| element_groups[index_of_element_group(name)] = value end end
define_element_groups()
click to toggle source
# File lib/hbci/segment.rb, line 57 def define_element_groups self.class.element_groups_to_be_defined.each { |element_group| define_element_group(element_group) } end
index_of_element_group(name)
click to toggle source
# File lib/hbci/segment.rb, line 61 def index_of_element_group(name) defined_element_groups.index(name) end
initiate_element_group(definition)
click to toggle source
# File lib/hbci/segment.rb, line 85 def initiate_element_group(definition) element_group = definition[:type] ? definition[:type].new : Hbci::ElementGroup.new element_group.instance_eval(&definition[:block]) if definition[:block] element_groups[index_of_element_group(definition[:name])] = element_group end
initiate_passthrough_element_group(definition)
click to toggle source
# File lib/hbci/segment.rb, line 79 def initiate_passthrough_element_group(definition) element_group = Hbci::ElementGroup.new element_group.define_element(definition) element_groups[index_of_element_group(definition[:name])] = element_group end