# File rdoc/generators/html_generator.rb, line 1044
def HtmlMethod.all_methods
@@all_methods
end
# File rdoc/generators/html_generator.rb, line 914
def initialize(context, html_class, options)
@context = context
@html_class = html_class
@options = options
@@seq = @@seq.succ
@seq = @@seq
@@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 = HTMLGenerator.gen_url(path, 'source.png')
end
end
AllReferences.add(name, self)
end
# File rdoc/generators/html_generator.rb, line 1048
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/generators/html_generator.rb, line 1095
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
real_fmt = "%#{size}d: "
fmt = " " * (size+2)
src.gsub!(/^/) do
res = sprintf(fmt, first)
first += 1
fmt = real_fmt
res
end
end
end
# File rdoc/generators/html_generator.rb, line 1115
def aliases
@context.aliases
end
return 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/generators/html_generator.rb, line 939
def as_href(from_path)
if @options.all_one_file
"#" + path
else
HTMLGenerator.gen_url(from_path, path)
end
end
# File rdoc/generators/html_generator.rb, line 991
def call_seq
cs = @context.call_seq
if cs
cs.gsub(/\n/, "<br />\n")
else
nil
end
end
# File rdoc/generators/html_generator.rb, line 1026
def create_source_code_file(code_body)
meth_path = @html_class.path.sub(/\.html$/, '.src')
File.makedirs(meth_path)
file_path = File.join(meth_path, @seq) + ".html"
template = TemplatePage.new(RDoc::Page::SRC_PAGE)
File.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
HTMLGenerator.gen_url(path, file_path)
end
# File rdoc/generators/html_generator.rb, line 979
def description
markup(@context.comment)
end
# File rdoc/generators/html_generator.rb, line 1111
def document_self
@context.document_self
end
# File rdoc/generators/html_generator.rb, line 1119
def find_symbol(symbol, method=nil)
res = @context.parent.find_symbol(symbol, method)
if res
res = res.viewer
end
res
end
# File rdoc/generators/html_generator.rb, line 955
def index_name
"#{@context.name} (#{@html_class.name})"
end
Given a sequence of source tokens, mark up the source code to make it look purty.
# File rdoc/generators/html_generator.rb, line 1057
def markup_code(tokens)
src = ""
tokens.each do |t|
next unless t
# p t.class
# style = STYLE_MAP[t.class]
style = case t
when RubyToken::TkCONSTANT then "ruby-constant"
when RubyToken::TkKW then "ruby-keyword kw"
when RubyToken::TkIVAR then "ruby-ivar"
when RubyToken::TkOp then "ruby-operator"
when RubyToken::TkId then "ruby-identifier"
when RubyToken::TkNode then "ruby-node"
when RubyToken::TkCOMMENT then "ruby-comment cmt"
when RubyToken::TkREGEXP then "ruby-regexp re"
when RubyToken::TkSTRING then "ruby-value str"
when 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.instance.include_line_numbers
src
end
# File rdoc/generators/html_generator.rb, line 947
def name
@context.name
end
# File rdoc/generators/html_generator.rb, line 1000
def params
# params coming from a call-seq in 'C' will start with the
# method name
p = @context.params
if p !~ /^\w/
p = @context.params.gsub(/\s*\#.*/, '')
p = p.tr("\n", " ").squeeze(" ")
p = "(" + p + ")" unless p[0] == ?(
if (block = @context.block_params)
# If this method has explicit block parameters, remove any
# explicit &block
p.sub!(/,?\s*&\w+/, '')
block.gsub!(/\s*\#.*/, '')
block = block.tr("\n", " ").squeeze(" ")
if block[0] == ?(
block.sub!(/^\(/, '').sub!(/\)/, '')
end
p << " {|#{block.strip}| ...}"
end
end
CGI.escapeHTML(p)
end
# File rdoc/generators/html_generator.rb, line 959
def parent_name
if @context.parent.parent
@context.parent.parent.full_name
else
nil
end
end
# File rdoc/generators/html_generator.rb, line 971
def path
if @options.all_one_file
aref
else
@html_class.path + "#" + aref
end
end
# File rdoc/generators/html_generator.rb, line 951
def section
@context.section
end