File: tmstd/lsm/sum.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmStd#6
  module: Lsm#8
  module: Sum#10
  class: KindOf#12
inherits from
  Abstract ( TmStd::Lsm::Sum )
has properties
attribute: lsm_member [R] #13
method: initialize / 1 #16
method: lsm_member_classes #29

Class Hierarchy

Object ( Builtin-Module )
Abstract ( TmStd::Lsm )
Abstract ( TmStd::Lsm::Sum )
  KindOf    #12

Code

   1  # $Id: sum.rb,v 1.4 2012/04/17 02:49:40 machan Exp $
   2 
   3  require 'tmdoc/tmstd/lsm/abstraction'
   4 
   5 
   6  module TmStd
   7 
   8  module Lsm
   9 
  10  module Sum
  11 
  12  class KindOf < TmStd::Lsm::Sum::Abstract
  13      attr_reader :lsm_member
  14 
  15 
  16      def initialize(member)
  17          unless lsm_member_classes.any? { |klass| member.kind_of?(klass) }
  18              Assertion.abort(
  19                  "Not a kind of sum <%s>: %s", self.class.to_s, member.to_s
  20              )
  21          end
  22 
  23          @lsm_member = member
  24      end
  25 
  26 
  27  private
  28 
  29      def lsm_member_classes
  30          begin
  31              classes = self.class.const_get('LSM_MEMBER_CLASSES')
  32          rescue NameError
  33              raise TmStd::Exception::SubclassResponsibility
  34          end
  35 
  36          Assertion.kind_of classes, Array
  37      end
  38  end
  39 
  40  end
  41 
  42  end # TmStd::Lsm
  43 
  44  end # TmStd