Class: Domain::HeadingBased::AlgebraMethods

Inherits:
Module
  • Object
show all
Defined in:
lib/alf-core/ext/domain/heading_based.rb

Overview

module DomainMethods

Instance Method Summary collapse

Constructor Details

#initialize(master_class, generating_type) ⇒ AlgebraMethods

Returns a new instance of AlgebraMethods.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/alf-core/ext/domain/heading_based.rb', line 62

def initialize(master_class, generating_type)
  define_method(:heading){
    @heading ||= Alf::Heading.coerce(generating_type)
  }
  define_method(:split){|attr_list|
    if attr_list.empty?
      [ master_class::DUM.class, self ]
    elsif attr_list==heading.to_attr_list
      [ self, master_class::DUM.class ]
    else
      heading.split(attr_list).map{|h| master_class[h]}
    end
  }
  define_method(:project){|attr_list|
    split(attr_list).first
  }
  define_method(:allbut){|attr_list|
    split(attr_list).last
  }
  define_method(:rename){|renaming|
    master_class[heading.rename(renaming)]
  }
end