In Files

  • rdoc/generator.rb

Files

Class/Module Index [+]

Quicksearch

RDoc::Generator::File

Handles the mapping of a file's information to HTML. In reality, a file corresponds to a TopLevel object, containing modules, classes, and top-level methods. In theory it could contain attributes and aliases, but we ignore these for now.

Attributes

name[R]
path[R]
values[R]

Public Class Methods

new(context, options, file_dir) click to toggle source
 
               # File rdoc/generator.rb, line 683
def initialize(context, options, file_dir)
  super context, options

  @values = {}

  if options.all_one_file
    @path = filename_to_label
  else
    @path = http_url(file_dir)
  end

  @name = @context.file_relative_name

  collect_methods
  AllReferences.add(name, self)
  context.viewer = self
end
            

Public Instance Methods

<=>(other) click to toggle source
 
               # File rdoc/generator.rb, line 809
def <=>(other)
  self.name <=> other.name
end
            
file_attribute_values() click to toggle source
 
               # File rdoc/generator.rb, line 790
def file_attribute_values
  full_path = @context.file_absolute_name
  short_name = ::File.basename full_path

  @values["title"] = CGI.escapeHTML("File: #{short_name} [#{@options.title}]")

  if @context.diagram then
    @values["diagram"] = diagram_reference(@context.diagram)
  end

  @values["short_name"]   = CGI.escapeHTML(short_name)
  @values["full_path"]    = CGI.escapeHTML(full_path)
  @values["dtm_modified"] = @context.file_stat.mtime.to_s

  if @options.webcvs then
    @values["cvsurl"] = cvs_url @options.webcvs, @values["full_path"]
  end
end
            
filename_to_label() click to toggle source
 
               # File rdoc/generator.rb, line 705
def filename_to_label
  @context.file_relative_name.gsub(/%|\/|\?|\#/) do
    ('%%%x' % $&[0]).unpack('C')
  end
end
            
http_url(file_dir) click to toggle source
 
               # File rdoc/generator.rb, line 701
def http_url(file_dir)
  ::File.join file_dir, "#{@context.file_relative_name.tr '.', '_'}.html"
end
            
index_name() click to toggle source
 
               # File rdoc/generator.rb, line 711
def index_name
  name
end
            
parent_name() click to toggle source
 
               # File rdoc/generator.rb, line 715
def parent_name
  nil
end
            
value_hash() click to toggle source
 
               # File rdoc/generator.rb, line 719
def value_hash
  file_attribute_values
  add_table_of_sections

  @values["charset"]   = @options.charset
  @values["href"]      = path
  @values["style_url"] = style_url(path, @options.css)

  if @context.comment
    d = markup(@context.comment)
    @values["description"] = d if d.size > 0
  end

  ml = build_method_summary_list
  @values["methods"] = ml unless ml.empty?

  il = build_include_list(@context)
  @values["includes"] = il unless il.empty?

  rl = build_requires_list(@context)
  @values["requires"] = rl unless rl.empty?

  if @options.promiscuous
    file_context = nil
  else
    file_context = @context
  end


  @values["sections"] = @context.sections.map do |section|

    secdata = {
      "sectitle" => section.title,
      "secsequence" => section.sequence,
      "seccomment" => markup(section.comment)
    }

    cl = build_class_list(0, @context, section, file_context)
    secdata["classlist"] = cl unless cl.empty?

    mdl = build_method_detail_list(section)
    secdata["method_list"] = mdl unless mdl.empty?

    al = build_alias_summary_list(section)
    secdata["aliases"] = al unless al.empty?

    co = build_constants_summary_list(section)
    secdata["constants"] = co unless co.empty?

    secdata
  end

  @values
end
            
write_on(f, file_list, class_list, method_list, overrides = {}) click to toggle source
 
               # File rdoc/generator.rb, line 774
def write_on(f, file_list, class_list, method_list, overrides = {})
  value_hash

  @values['file_list'] = file_list
  @values['class_list'] = class_list
  @values['method_list'] = method_list

  @values.update overrides

  template = RDoc::TemplatePage.new(@template::BODY,
                                    @template::FILE_PAGE,
                                    @template::METHOD_LIST)

  template.write_html_on(f, @values)
end