Class: CFONB::OperationDetails::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/cfonb/operation_details/base.rb

Direct Known Subclasses

FEE, IBE, IPY, LC2, LCC, LCS, LIB, MMO, NBE, NBU, NPO, NPY, RCN, REF

Class Method Summary collapse

Class Method Details

.inherited(base) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/cfonb/operation_details/base.rb', line 6

def self.inherited(base)
  base.singleton_class.prepend(
    Module.new do
      def apply(details, line)
        code = :"@#{line.detail_code.gsub(' ', '_')}"
        details.instance_variable_set(code, instance_value(details, line, code))

        super
      end

      private

      def append_detail?(details, line, code)
        details.instance_variable_defined?(code) && line.detail.is_a?(String)
      end

      def instance_value(details, line, code)
        return line.detail unless append_detail?(details, line, code)

        details.instance_variable_get(code) + "\n#{line.detail}"
      end
    end,
  )
end