File: model/document/node.rb

Overview
Module Structure
Class Hierarchy
Code

Overview

Module Structure

  module: <Toplevel Module>
  module: TmDoc#9
  module: Model
  module: Document#11
  module: Node#13
has properties
constant: EMPTY_MODULES #66
constant: EMPTY_CLASSES #151
  class: ModuleStructure#15
inherits from
  LogicalStructure ( TmDoc::Model::Document::Abstraction::Node )
has properties
alias: below_module_nodes elements #16
method: initialize / 3 #19
  class: SeqOfModule#62
inherits from
  SeqOfLogical ( TmDoc::Model::Document::Abstraction::Node )
has properties
constant: LSM_ELEMENT_CLASS #63
  class: InfoBox#70
inherits from
  InfoBox ( TmDoc::Model::Document::Module::InfoBox )
has properties
attribute: module_above_path [R] #71
attribute: module_name [R] #72
method: initialize / 3 #74
  class: ClassHierarchy#89
inherits from
  LogicalStructure ( TmDoc::Model::Document::Abstraction::Node )
has properties
alias: subclass_nodes elements #90
method: initialize / 3 #93
method: above_module_equal_to_superclass? #140
  class: SeqOfClass#147
inherits from
  SeqOfLogical ( TmDoc::Model::Document::Abstraction::Node )
has properties
constant: LSM_ELEMENT_CLASS #148
  class: File#155
inherits from
  Document ( TmDoc::Model::Document::Abstraction )
has properties
attribute: a_link_to_file [R] #156
method: initialize / 1 #159
method: to_s #166
  class: SeqOfFile#173
inherits from
  SeqOfDocument ( TmDoc::Model::Document::Abstraction )
has properties
constant: LSM_ELEMENT_CLASS #174
  class: SourceStructure#179
inherits from
  Abstract ( TmStd::Lsm::Product )
has properties
attribute: files [R] #180
method: initialize / 1 #183
method: print #190

Code

   1  # $Id: node.rb,v 1.6 2012/04/17 02:49:40 machan Exp $
   2 
   3  require 'tmdoc/constant'
   4  require 'tmdoc/model/document/abstraction'
   5  require 'tmdoc/model/document/link'
   6  require 'tmdoc/model/document/module-infobox'
   7 
   8 
   9  module TmDoc
  10 
  11  module Model::Document
  12 
  13  module Node
  14 
  15  class ModuleStructure < Abstraction::Node::LogicalStructure
  16      alias below_module_nodes        elements
  17 
  18 
  19      def initialize(a_link_to_module, elements, opts = {})
  20          ASSERT.kind_of a_link_to_module,    MDL::Module
  21          ASSERT.kind_of elements,            SeqOfModule
  22          ASSERT.kind_of opts,                Hash
  23 
  24          a_infobox       = nil
  25          is_focused      = false
  26          links_to_line   = nil
  27          for key, val in opts
  28              ASSERT.kind_of key, Symbol
  29 
  30              case key
  31              when :is_focused
  32                  ASSERT.boolean val
  33 
  34                  is_focused      = val
  35              when :links_to_line
  36                  ASSERT.opt_kind_of(
  37                      val, Model::Document::Link::SeqOfLine
  38                  )
  39 
  40                  links_to_line   = val
  41              when :infobox
  42                  ASSERT.kind_of val, InfoBox
  43 
  44                  a_infobox       = val
  45              else
  46                  ASSERT.abort("Unknown option: %s", key)
  47              end
  48          end
  49 
  50          super(
  51              a_link_to_module,
  52              elements,
  53              is_focused,
  54              a_infobox,
  55              links_to_line
  56          )
  57      end
  58  end
  59 
  60 
  61 
  62  class SeqOfModule < Abstraction::Node::SeqOfLogical
  63      LSM_ELEMENT_CLASS = ModuleStructure
  64  end
  65 
  66  EMPTY_MODULES = SeqOfModule.new
  67 
  68 
  69 
  70  class InfoBox < Module::InfoBox::InfoBox
  71      attr_reader :module_above_path,
  72                  :module_name
  73 
  74      def initialize(module_above_path, module_name, module_rows)
  75          ASSERT.kind_of module_above_path,   Path
  76          ASSERT.kind_of module_name,         String
  77          ASSERT.kind_of module_rows,         Module::InfoBox::Row::SeqOfRow
  78 
  79          super(module_rows)
  80 
  81          @module_above_path  = module_above_path
  82          @module_name        = module_name
  83      end
  84  end
  85 
  86 
  87 
  88 
  89  class ClassHierarchy < Abstraction::Node::LogicalStructure
  90      alias subclass_nodes            elements
  91 
  92 
  93      def initialize(a_link_to_class, elements, opts = {})
  94          ASSERT.kind_of a_link_to_class, MDL::Class
  95          ASSERT.kind_of elements,        SeqOfClass
  96          ASSERT.kind_of opts,            Hash
  97 
  98 
  99          a_infobox       = nil
 100          is_focused      = false
 101          links_to_line   = nil
 102          @is_above_module_equal_to_superclass = false
 103          for key, val in opts
 104              ASSERT.kind_of key, Symbol
 105 
 106              case key
 107              when :is_focused
 108                  ASSERT.boolean val
 109 
 110                  is_focused      = val
 111              when :links_to_line
 112                  ASSERT.opt_kind_of(
 113                      val, Model::Document::Link::SeqOfLine
 114                  )
 115 
 116                  links_to_line   = val
 117              when :infobox
 118                  ASSERT.kind_of val, InfoBox
 119 
 120                  a_infobox       = val
 121              when :is_above_module_equal_to_superclass
 122                  ASSERT.boolean val
 123 
 124                  @is_above_module_equal_to_superclass = val
 125              else
 126                  ASSERT.abort("Unknown option: %s", key)
 127              end
 128          end
 129 
 130          super(
 131              a_link_to_class,
 132              elements,
 133              is_focused,
 134              a_infobox,
 135              links_to_line
 136          )
 137      end
 138 
 139 
 140      def above_module_equal_to_superclass?
 141          ASSERT.boolean @is_above_module_equal_to_superclass
 142      end
 143  end
 144 
 145 
 146 
 147  class SeqOfClass < Abstraction::Node::SeqOfLogical
 148      LSM_ELEMENT_CLASS = ClassHierarchy
 149  end
 150 
 151  EMPTY_CLASSES = SeqOfClass.new
 152 
 153 
 154 
 155  class File < Abstraction::Document
 156      attr_reader :a_link_to_file
 157 
 158 
 159      def initialize(a_link_to_file)
 160          ASSERT.kind_of a_link_to_file, Link::File
 161 
 162          @a_link_to_file = a_link_to_file
 163      end
 164 
 165 
 166      def to_s
 167          ASSERT.kind_of self.a_link_to_file.to_s, String
 168      end
 169  end
 170 
 171 
 172 
 173  class SeqOfFile < Abstraction::SeqOfDocument
 174      LSM_ELEMENT_CLASS = File
 175  end
 176 
 177 
 178 
 179  class SourceStructure < TmStd::Lsm::Product::Abstract
 180      attr_reader :files
 181 
 182 
 183      def initialize(files)
 184          ASSERT.kind_of files, SeqOfFile
 185 
 186          @files = files
 187      end
 188 
 189 
 190      def print
 191          for file in self.files
 192              LOG::Debug.log file.to_s
 193          end
 194 
 195          nil
 196      end
 197  end
 198 
 199  end # TmDoc::Model::Document::Node
 200 
 201  end # TmDoc::Model::Document
 202 
 203  end # TmDoc