diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-18 23:33:36 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-09-18 23:33:36 +0000 |
commit | df7dac9174a31e71b58be6184e23bfe6b742a494 (patch) | |
tree | 885edf624f0e8f37014b0d937340ac1c372a0066 /lib/rdoc/extend.rb | |
parent | fed428007c015ac3b7f4586f2491517fafffa030 (diff) |
* lib/rdoc: Update to RDoc 4.1.0.preview.1
RDoc 4.1.0 contains a number of enhancements including a new default
style and accessibility support. You can see the changelog here:
https://github.com/rdoc/rdoc/blob/v4.1.0.preview.1/History.rdoc
* test/rdoc: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42971 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rdoc/extend.rb')
-rw-r--r-- | lib/rdoc/extend.rb | 116 |
1 files changed, 4 insertions, 112 deletions
diff --git a/lib/rdoc/extend.rb b/lib/rdoc/extend.rb index 2bccfba084..efa2c69bee 100644 --- a/lib/rdoc/extend.rb +++ b/lib/rdoc/extend.rb @@ -1,117 +1,9 @@ ## -# A Module extension in a class with \#extend +# A Module extension to a class with \#extend +# +# RDoc::Extend.new 'Enumerable', 'comment ...' -class RDoc::Extend < RDoc::CodeObject - - ## - # Name of extension module - - attr_accessor :name - - ## - # Creates a new Extend for +name+ with +comment+ - - def initialize(name, comment) - super() - @name = name - self.comment = comment - @module = nil # cache for module if found - end - - ## - # Extends are sorted by name - - def <=> other - return unless self.class === other - - name <=> other.name - end - - def == other # :nodoc: - self.class === other and @name == other.name - end - - alias eql? == - - ## - # Full name based on #module - - def full_name - m = self.module - RDoc::ClassModule === m ? m.full_name : @name - end - - def hash # :nodoc: - [@name, self.module].hash - end - - def inspect # :nodoc: - "#<%s:0x%x %s.extend %s>" % [ - self.class, - object_id, - parent_name, @name, - ] - end - - ## - # Attempts to locate the extend module object. Returns the name if not - # known. - # - # The scoping rules of Ruby to resolve the name of an extension module are: - # - first look into the children of the current context; - # - if not found, look into the children of extension modules, - # in reverse extend order; - # - if still not found, go up the hierarchy of names. - # - # This method has <code>O(n!)</code> behavior when the module calling - # extend is referencing nonexistent modules. Avoid calling #module until - # after all the files are parsed. This behavior is due to ruby's constant - # lookup behavior. - - def module - return @module if @module - - # search the current context - return @name unless parent - full_name = parent.child_name(@name) - @module = @store.modules_hash[full_name] - return @module if @module - return @name if @name =~ /^::/ - - # search the includes before this one, in reverse order - searched = parent.extends.take_while { |i| i != self }.reverse - searched.each do |i| - ext = i.module - next if String === ext - full_name = ext.child_name(@name) - @module = @store.modules_hash[full_name] - return @module if @module - end - - # go up the hierarchy of names - up = parent.parent - while up - full_name = up.child_name(@name) - @module = @store.modules_hash[full_name] - return @module if @module - up = up.parent - end - - @name - end - - ## - # Sets the store for this class or module and its contained code objects. - - def store= store - super - - @file = @store.add_file @file.full_name if @file - end - - def to_s # :nodoc: - "extend #@name in: #{parent}" - end +class RDoc::Extend < RDoc::Mixin end |