# File rdoc/generator.rb, line 824
def self.all_methods
@@all_methods
end
# File rdoc/generator.rb, line 836
def initialize(context, html_class, options)
# TODO: rethink the class hierarchy here...
@context = context
@html_class = html_class
@options = options
@@seq = @@seq.succ
@seq = @@seq
# HACK ugly
@template = options.template_class
@@all_methods << self
context.viewer = self
if (ts = @context.token_stream)
@source_code = markup_code(ts)
unless @options.inline_source
@src_url = create_source_code_file(@source_code)
@img_url = RDoc::Markup::ToHtml.gen_relative_url path, 'source.png'
end
end
AllReferences.add(name, self)
end
# File rdoc/generator.rb, line 996
def <=>(other)
@context <=> other.context
end
We rely on the fact that the first line of a source code listing has
# File xxxxx, line dddd
# File rdoc/generator.rb, line 1041
def add_line_numbers(src)
if src =~ /\A.*, line (\d+)/
first = $1.to_i - 1
last = first + src.count("\n")
size = last.to_s.length
fmt = "%#{size}d: "
is_first_line = true
line_num = first
src.gsub!(/^/) do
if is_first_line then
is_first_line = false
res = " " * (size+2)
else
res = sprintf(fmt, line_num)
end
line_num += 1
res
end
end
end
# File rdoc/generator.rb, line 1067
def aliases
@context.aliases
end
Returns a reference to outselves to be used as an href= the form depends on whether we’re all in one file or in multiple files
# File rdoc/generator.rb, line 867
def as_href(from_path)
if @options.all_one_file
"#" + path
else
RDoc::Markup::ToHtml.gen_relative_url from_path, path
end
end
# File rdoc/generator.rb, line 941
def call_seq
cs = @context.call_seq
if cs
cs.gsub(/\n/, "<br />\n")
else
nil
end
end
# File rdoc/generator.rb, line 976
def create_source_code_file(code_body)
meth_path = @html_class.path.sub(/\.html$/, '.src')
FileUtils.mkdir_p(meth_path)
file_path = ::File.join meth_path, "#{@seq}.html"
template = RDoc::TemplatePage.new(@template::SRC_PAGE)
open file_path, 'w' do |f|
values = {
'title' => CGI.escapeHTML(index_name),
'code' => code_body,
'style_url' => style_url(file_path, @options.css),
'charset' => @options.charset
}
template.write_html_on(f, values)
end
RDoc::Markup::ToHtml.gen_relative_url path, file_path
end
# File rdoc/generator.rb, line 929
def description
markup(@context.comment)
end
# File rdoc/generator.rb, line 1063
def document_self
@context.document_self
end
# File rdoc/generator.rb, line 1071
def find_symbol(symbol, method=nil)
res = @context.parent.find_symbol(symbol, method)
if res
res = res.viewer
end
res
end
# File rdoc/generator.rb, line 875
def formatter
@formatter ||= @options.formatter ||
RDoc::Markup::ToHtmlCrossref.new(path, self, @options.show_hash)
end
# File rdoc/generator.rb, line 905
def index_name
"#{@context.name} (#{@html_class.name})"
end
# File rdoc/generator.rb, line 880
def inspect
alias_for = if @context.is_alias_for then
" (alias_for #{@context.is_alias_for})"
else
nil
end
"#<%s:0x%x %s%s%s (%s)%s>" % [
self.class, object_id,
@context.parent.name,
@context.singleton ? '::' : '#',
name,
@context.visibility,
alias_for
]
end
Given a sequence of source tokens, mark up the source code to make it look purty.
# File rdoc/generator.rb, line 1004
def markup_code(tokens)
src = ""
tokens.each do |t|
next unless t
# style = STYLE_MAP[t.class]
style = case t
when RDoc::RubyToken::TkCONSTANT then "ruby-constant"
when RDoc::RubyToken::TkKW then "ruby-keyword kw"
when RDoc::RubyToken::TkIVAR then "ruby-ivar"
when RDoc::RubyToken::TkOp then "ruby-operator"
when RDoc::RubyToken::TkId then "ruby-identifier"
when RDoc::RubyToken::TkNode then "ruby-node"
when RDoc::RubyToken::TkCOMMENT then "ruby-comment cmt"
when RDoc::RubyToken::TkREGEXP then "ruby-regexp re"
when RDoc::RubyToken::TkSTRING then "ruby-value str"
when RDoc::RubyToken::TkVal then "ruby-value"
else
nil
end
text = CGI.escapeHTML(t.text)
if style
src << "<span class=\"#{style}\">#{text}</span>"
else
src << text
end
end
add_line_numbers(src) if @options.include_line_numbers
src
end
# File rdoc/generator.rb, line 950
def params
# params coming from a call-seq in 'C' will start with the
# method name
params = @context.params
if params !~ /^\w/
params = @context.params.gsub(/\s*\#.*/, '')
params = params.tr("\n", " ").squeeze(" ")
params = "(" + params + ")" unless params[0] == ((
if (block = @context.block_params)
# If this method has explicit block parameters, remove any
# explicit &block
params.sub!(/,?\s*&\w+/, '')
block.gsub!(/\s*\#.*/, '')
block = block.tr("\n", " ").squeeze(" ")
if block[0] == ((
block.sub!(/^\(/, '').sub!(/\)/, '')
end
params << " {|#{block.strip}| ...}"
end
end
CGI.escapeHTML(params)
end
# File rdoc/generator.rb, line 909
def parent_name
if @context.parent.parent
@context.parent.parent.full_name
else
nil
end
end
# File rdoc/generator.rb, line 921
def path
if @options.all_one_file
aref
else
@html_class.path + "#" + aref
end
end
# File rdoc/generator.rb, line 901
def section
@context.section
end
Commenting is here to help enhance the documentation. For example, sample code, or clarification of the documentation.
If you are posting code samples in your comments, please wrap them in "<pre><code class="ruby" > ... </code></pre>" markup in order to get syntax highlighting.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file a bug report so that it can be corrected for the next release. Thank you.