Sha256: 6ce203a26c212b0124a4b391bf47147fbb6be248434c45acacfe807a6184df99

Contents?: true

Size: 1.76 KB

Versions: 9

Compression:

Stored size: 1.76 KB

Contents

require 'rdoc/context'

##
# ClassModule is the base class for objects representing either a class or a
# module.

class RDoc::ClassModule < RDoc::Context

  attr_accessor :diagram

  ##
  # Creates a new ClassModule with +name+ with optional +superclass+

  def initialize(name, superclass = 'Object')
    @diagram    = nil
    @full_name  = nil
    @name       = name
    @superclass = superclass
    super()
  end

  ##
  # Finds a class or module with +name+ in this namespace or its descendents

  def find_class_named(name)
    return self if full_name == name
    @classes.each_value {|c| return c if c.find_class_named(name) }
    nil
  end

  ##
  # Return the fully qualified name of this class or module

  def full_name
    @full_name ||= if RDoc::ClassModule === @parent then
                     "#{@parent.full_name}::#{@name}"
                   else
                     @name
                   end
  end

  ##
  # 'module' or 'class'

  def type
    module? ? 'module' : 'class'
  end

  ##
  # Does this object represent a module?

  def module?
    false
  end

  ##
  # Path to this class or module

  def path
    http_url RDoc::RDoc.current.generator.class_dir
  end

  ##
  # Get the superclass of this class.  Attempts to retrieve the superclass
  # object, returns the name if it is not known.

  def superclass
    raise NoMethodError, "#{full_name} is a module" if module?

    RDoc::TopLevel.find_class_named(@superclass) || @superclass
  end

  ##
  # Set the superclass of this class to +superclass+

  def superclass=(superclass)
    raise NoMethodError, "#{full_name} is a module" if module?

    @superclass = superclass if @superclass.nil? or @superclass == 'Object'
  end

  def to_s # :nodoc:
    "#{self.class}: #{full_name} #{@comment} #{super}"
  end

end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
voloko-sdoc-0.1.3 rdoc/lib/rdoc/class_module.rb
voloko-sdoc-0.1.4 rdoc/lib/rdoc/class_module.rb
voloko-sdoc-0.1.5 rdoc/lib/rdoc/class_module.rb
voloko-sdoc-0.1.6 rdoc/lib/rdoc/class_module.rb
voloko-sdoc-0.1.7 rdoc/lib/rdoc/class_module.rb
rdoc-2.4.3 lib/rdoc/class_module.rb
rdoc-2.4.1 lib/rdoc/class_module.rb
rdoc-2.4.2 lib/rdoc/class_module.rb
rdoc-2.4.0 lib/rdoc/class_module.rb