123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- ##
- # 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
- ##
- # Aliased method's name
- attr_reader :new_name
- alias name new_name
- ##
- # Aliasee method's name
- attr_reader :old_name
- ##
- # Is this an alias declared in a singleton context?
- attr_accessor :singleton
- ##
- # Source file token stream
- attr_reader :text
- ##
- # Creates a new Alias with a token stream of +text+ that aliases +old_name+
- # to +new_name+, has +comment+ and is a +singleton+ context.
- 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>" % [
- self.class, object_id,
- parent_name, @old_name, @new_name,
- ]
- 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.new_name} -> #{self.pretty_old_name} in: #{parent}"
- end
- end
|