From 2ef9c50c6e405717d06362787c4549ca4f1c6485 Mon Sep 17 00:00:00 2001 From: drbrain Date: Mon, 20 Dec 2010 03:22:49 +0000 Subject: Import RDoc 3 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rdoc/alias.rb | 79 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 69 insertions(+), 10 deletions(-) (limited to 'lib/rdoc/alias.rb') diff --git a/lib/rdoc/alias.rb b/lib/rdoc/alias.rb index 6cd9af09d4..fa433dc0a9 100644 --- a/lib/rdoc/alias.rb +++ b/lib/rdoc/alias.rb @@ -3,41 +3,77 @@ require 'rdoc/code_object' ## # Represent an alias, which is an old_name/new_name pair associated with a # particular context +#-- +# TODO implement Alias as a proxy to a method/attribute, inheriting from +# MethodAttr class RDoc::Alias < RDoc::CodeObject ## - # Allow comments to be overridden + # Aliased method's name - attr_writer :comment + attr_reader :new_name + + alias name new_name ## - # Aliased name + # Aliasee method's name - attr_accessor :new_name + attr_reader :old_name ## - # Aliasee's name + # Is this an alias declared in a singleton context? - attr_accessor :old_name + attr_accessor :singleton ## # Source file token stream - attr_accessor :text + attr_reader :text ## # Creates a new Alias with a token stream of +text+ that aliases +old_name+ - # to +new_name+ and has +comment+ + # to +new_name+, has +comment+ and is a +singleton+ context. - def initialize(text, old_name, new_name, comment) + def initialize(text, old_name, new_name, comment, singleton = false) super() + @text = text + @singleton = singleton @old_name = old_name @new_name = new_name self.comment = comment end + ## + # Order by #singleton then #new_name + + def <=>(other) + [@singleton ? 0 : 1, new_name] <=> [other.singleton ? 0 : 1, other.new_name] + end + + ## + # HTML fragment reference for this alias + + def aref + type = singleton ? 'c' : 'i' + "#alias-#{type}-#{html_name}" + end + + ## + # Full old name including namespace + + def full_old_name + @full_name || "#{parent.name}#{pretty_old_name}" + end + + ## + # HTML id-friendly version of +#new_name+. + + def html_name + CGI.escape(@new_name.gsub('-', '-2D')).gsub('%','-').sub(/^-/, '') + end + def inspect # :nodoc: parent_name = parent ? parent.name : '(unknown)' "#<%s:0x%x %s.alias_method %s, %s>" % [ @@ -46,8 +82,31 @@ class RDoc::Alias < RDoc::CodeObject ] end + ## + # '::' for the alias of a singleton method/attribute, '#' for instance-level. + + def name_prefix + singleton ? '::' : '#' + end + + ## + # Old name with prefix '::' or '#'. + + def pretty_old_name + "#{singleton ? '::' : '#'}#{@old_name}" + end + + ## + # New name with prefix '::' or '#'. + + def pretty_new_name + "#{singleton ? '::' : '#'}#{@new_name}" + end + + alias pretty_name pretty_new_name + def to_s # :nodoc: - "alias: #{self.old_name} -> #{self.new_name}\n#{self.comment}" + "alias: #{self.new_name} -> #{self.pretty_old_name} in: #{parent}" end end -- cgit v1.2.3