File: model/object/logical/node.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmDoc#12
  module: Model
  module: Object
  module: Logical#14
  module: Node#16
  class: ToplevelModule#18
inherits from
  RootModule ( TmDoc::Model::Object::Logical::Abstraction )
has properties
method: suppressable? #19
  class: BuiltinModule#28
  class: UnknownModule#32
  class: Module#36
  class: Object#40
inherits from
  GenericClass ( TmDoc::Model::Object::Logical::Abstraction )
has properties
method: initialize / 7 #41
method: suppressable? #72
method: ancestor_classes #83
method: sibling_classes #94
  class: Class#103
  class: UnknownClass#107
inherits from
  Class ( TmDoc::Model::Object::Logical::Node )
has properties
method: suppressable? #108

Code

   1  # $Id: node.rb,v 1.9 2011/12/12 18:16:56 machan Exp $
   2 
   3  require 'tmdoc/tmstd'
   4  require 'tmdoc/tmstd/treeable'
   5  require 'tmdoc/constant'
   6  require 'tmdoc/model/object/logical/path'
   7  require 'tmdoc/model/object/logical/location'
   8  require 'tmdoc/model/object/logical/abstraction'
   9  require 'tmdoc/model/object/logical/leaf'
  10 
  11 
  12  module TmDoc
  13 
  14  module Model::Object::Logical
  15 
  16  module Node
  17 
  18  class ToplevelModule < Abstraction::RootModule
  19      def suppressable?
  20          result = super && (! self.has_any_properties?)
  21 
  22          ASSERT.boolean result
  23      end
  24  end
  25 
  26 
  27 
  28  class BuiltinModule < Abstraction::RootModule; end
  29 
  30 
  31 
  32  class UnknownModule < Abstraction::RootModule; end
  33 
  34 
  35 
  36  class Module < Abstraction::ChildModule; end
  37 
  38 
  39 
  40  class Object < Abstraction::GenericClass
  41      def initialize(
  42          above_path,
  43          name,
  44          properties,
  45          below_module_paths,
  46          extendee_module_paths,
  47          includee_module_paths,
  48          above_module_path
  49      )
  50          ASSERT.kind_of above_path,              Path
  51          ASSERT.kind_of name,                    String
  52          ASSERT.kind_of properties,              MOLA::SetOfProperty
  53          ASSERT.kind_of below_module_paths,      SetOfPath
  54          ASSERT.kind_of extendee_module_paths,   SetOfPath
  55          ASSERT.kind_of includee_module_paths,   SetOfPath
  56          ASSERT.kind_of above_module_path,       Path
  57 
  58          super(
  59              SetOfLocation.new,
  60              above_path,
  61              name,
  62              nil,                # store
  63              properties,
  64              below_module_paths,
  65              extendee_module_paths,
  66              includee_module_paths,
  67              above_module_path
  68          )
  69      end
  70 
  71 
  72      def suppressable?
  73          set_of_subclass = @store.map_of_superclass_to_subclasses.at self
  74 
  75          result = set_of_subclass.all? { |a_subclass|
  76              a_subclass.suppressable?
  77          } && (! self.has_any_properties?)
  78 
  79          ASSERT.boolean result
  80      end
  81 
  82 
  83      def ancestor_classes
  84          unless @set_of_ancestor_class
  85              @set_of_ancestor_class = Abstraction::SetOfGenericClass.new(
  86                  [self]
  87              )
  88          end
  89 
  90          ASSERT.kind_of @set_of_ancestor_class, MOLA::SetOfGenericClass
  91      end
  92 
  93 
  94      def sibling_classes
  95          siblings = Abstraction::EMPTY_SET_OF_GENERIC_CLASS
  96 
  97          ASSERT.kind_of siblings, MOLA::SetOfGenericClass
  98      end
  99  end
 100 
 101 
 102 
 103  class Class < Abstraction::ChildClass; end
 104 
 105 
 106 
 107  class UnknownClass < Node::Class
 108      def suppressable?
 109          self.subclasses.empty?
 110      end
 111  end
 112 
 113  end # TmDoc::Model::Object::Logical::Node
 114 
 115  end # TmDoc::Model::Object::Logical
 116 
 117  end # TmDoc