summaryrefslogtreecommitdiff
path: root/lib/rdoc/any_method.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rdoc/any_method.rb')
-rw-r--r--lib/rdoc/any_method.rb290
1 files changed, 0 insertions, 290 deletions
diff --git a/lib/rdoc/any_method.rb b/lib/rdoc/any_method.rb
deleted file mode 100644
index d742daa7b8..0000000000
--- a/lib/rdoc/any_method.rb
+++ /dev/null
@@ -1,290 +0,0 @@
-require 'rdoc/code_object'
-require 'rdoc/tokenstream'
-
-##
-# AnyMethod is the base class for objects representing methods
-
-class RDoc::AnyMethod < RDoc::CodeObject
-
- MARSHAL_VERSION = 1 # :nodoc:
-
- include Comparable
-
- ##
- # Method name
-
- attr_writer :name
-
- ##
- # public, protected, private
-
- attr_accessor :visibility
-
- ##
- # Parameters yielded by the called block
-
- attr_accessor :block_params
-
- ##
- # Don't rename \#initialize to \::new
-
- attr_accessor :dont_rename_initialize
-
- ##
- # Is this a singleton method?
-
- attr_accessor :singleton
-
- ##
- # Source file token stream
-
- attr_reader :text
-
- ##
- # Array of other names for this method
-
- attr_reader :aliases
-
- ##
- # The method we're aliasing
-
- attr_accessor :is_alias_for
-
- ##
- # Parameters for this method
-
- attr_accessor :params
-
- ##
- # Different ways to call this method
-
- attr_accessor :call_seq
-
- include RDoc::TokenStream
-
- def initialize(text, name)
- super()
-
- @text = text
- @name = name
-
- @aliases = []
- @block_params = nil
- @call_seq = nil
- @dont_rename_initialize = false
- @is_alias_for = nil
- @params = nil
- @parent_name = nil
- @singleton = nil
- @token_stream = nil
- @visibility = :public
- end
-
- ##
- # Order by #singleton then #name
-
- def <=>(other)
- [@singleton ? 0 : 1, @name] <=> [other.singleton ? 0 : 1, other.name]
- end
-
- ##
- # Adds +method+ as an alias for this method
-
- def add_alias(method)
- @aliases << method
- end
-
- ##
- # HTML fragment reference for this method
-
- def aref
- type = singleton ? 'c' : 'i'
-
- "method-#{type}-#{CGI.escape name}"
- end
-
- ##
- # The call_seq or the param_seq with method name, if there is no call_seq.
- #
- # Use this for displaying a method's argument lists.
-
- def arglists
- if @call_seq then
- @call_seq
- elsif @params then
- "#{name}#{param_seq}"
- end
- end
-
- ##
- # HTML id-friendly method name
-
- def html_name
- @name.gsub(/[^a-z]+/, '-')
- end
-
- def inspect # :nodoc:
- alias_for = @is_alias_for ? " (alias for #{@is_alias_for.name})" : nil
- "#<%s:0x%x %s (%s)%s>" % [
- self.class, object_id,
- full_name,
- visibility,
- alias_for,
- ]
- end
-
- ##
- # Full method name including namespace
-
- def full_name
- @full_name ||= "#{@parent ? @parent.full_name : '(unknown)'}#{pretty_name}"
- end
-
- ##
- # Dumps this AnyMethod for use by ri. See also #marshal_load
-
- def marshal_dump
- aliases = @aliases.map do |a|
- [a.full_name, parse(a.comment)]
- end
-
- [ MARSHAL_VERSION,
- @name,
- full_name,
- @singleton,
- @visibility,
- parse(@comment),
- @call_seq,
- @block_params,
- aliases,
- @params,
- ]
- end
-
- ##
- # Loads this AnyMethod from +array+. For a loaded AnyMethod the following
- # methods will return cached values:
- #
- # * #full_name
- # * #parent_name
-
- def marshal_load(array)
- @dont_rename_initialize = nil
- @is_alias_for = nil
- @token_stream = nil
- @aliases = []
-
- @name = array[1]
- @full_name = array[2]
- @singleton = array[3]
- @visibility = array[4]
- @comment = array[5]
- @call_seq = array[6]
- @block_params = array[7]
- @params = array[9]
-
- @parent_name = if @full_name =~ /#/ then
- $`
- else
- name = @full_name.split('::')
- name.pop
- name.join '::'
- end
-
- array[8].each do |new_name, comment|
- add_alias RDoc::Alias.new(nil, @name, new_name, comment)
- end
- end
-
- ##
- # Method name
-
- def name
- return @name if @name
-
- @name = @call_seq[/^.*?\.(\w+)/, 1] || @call_seq if @call_seq
- end
-
- ##
- # Pretty parameter list for this method
-
- def param_seq
- params = @params.gsub(/\s*\#.*/, '')
- params = params.tr("\n", " ").squeeze(" ")
- params = "(#{params})" unless params[0] == ?(
-
- if @block_params then
- # If this method has explicit block parameters, remove any explicit
- # &block
- params.sub!(/,?\s*&\w+/, '')
-
- block = @block_params.gsub(/\s*\#.*/, '')
- block = block.tr("\n", " ").squeeze(" ")
- if block[0] == ?(
- block.sub!(/^\(/, '').sub!(/\)/, '')
- end
- params << " { |#{block}| ... }"
- end
-
- params
- end
-
- ##
- # Name of our parent with special handling for un-marshaled methods
-
- def parent_name
- @parent_name || super
- end
-
- ##
- # Path to this method
-
- def path
- "#{@parent.path}##{aref}"
- end
-
- ##
- # Method name with class/instance indicator
-
- def pretty_name
- "#{singleton ? '::' : '#'}#{@name}"
- end
-
- def pretty_print q # :nodoc:
- alias_for = @is_alias_for ? "alias for #{@is_alias_for.name}" : nil
-
- q.group 2, "[#{self.class.name} #{full_name} #{visibility}", "]" do
- if alias_for then
- q.breakable
- q.text alias_for
- end
-
- if text then
- q.breakable
- q.text "text:"
- q.breakable
- q.pp @text
- end
-
- unless comment.empty? then
- q.breakable
- q.text "comment:"
- q.breakable
- q.pp @comment
- end
- end
- end
-
- def to_s # :nodoc:
- "#{self.class.name}: #{full_name} (#{@text})\n#{@comment}"
- end
-
- ##
- # Type of method (class or instance)
-
- def type
- singleton ? 'class' : 'instance'
- end
-
-end
-