aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rdoc/alias.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-20 03:22:49 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-12-20 03:22:49 +0000
commit2ef9c50c6e405717d06362787c4549ca4f1c6485 (patch)
treeee99486567461dd5796f3d6edcc9e204187f2666 /lib/rdoc/alias.rb
parentd7effd506f5b91a636f2e6452ef1946b923007c7 (diff)
downloadruby-2ef9c50c6e405717d06362787c4549ca4f1c6485.tar.gz
Import RDoc 3
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rdoc/alias.rb')
-rw-r--r--lib/rdoc/alias.rb79
1 files changed, 69 insertions, 10 deletions
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