Class: RDoc::Generator::File

Inherits:
Context
  • Object
show all
Defined in:
lib/rdoc/generator.rb

Overview

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.

Instance Attribute Summary collapse

Attributes inherited from Context

#context

Instance Method Summary collapse

Methods inherited from Context

#add_table_of_sections, #aref_to, #as_href, #build_alias_summary_list, build_class_list, #build_class_list, #build_constants_summary_list, #build_include_list, build_indicies, #build_method_detail_list, #build_method_summary_list, #build_requires_list, #collect_methods, #diagram_reference, #document_self, #find_symbol, #href, #potentially_referenced_list, #url

Methods included from MarkUp

#cvs_url, #markup, #style_url

Constructor Details

#initialize(context, options, file_dir) ⇒ File

Returns a new instance of File.



683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
# File 'lib/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

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



680
681
682
# File 'lib/rdoc/generator.rb', line 680

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path.



679
680
681
# File 'lib/rdoc/generator.rb', line 679

def path
  @path
end

#valuesObject (readonly)

Returns the value of attribute values.



681
682
683
# File 'lib/rdoc/generator.rb', line 681

def values
  @values
end

Instance Method Details

#<=>(other) ⇒ Object



803
804
805
# File 'lib/rdoc/generator.rb', line 803

def <=>(other)
  self.name <=> other.name
end

#file_attribute_valuesObject



784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
# File 'lib/rdoc/generator.rb', line 784

def file_attribute_values
  full_path = @context.file_absolute_name
  short_name = ::File.basename full_path

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

  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_labelObject



705
706
707
708
709
# File 'lib/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) ⇒ Object



701
702
703
# File 'lib/rdoc/generator.rb', line 701

def http_url(file_dir)
  ::File.join file_dir, "#{@context.file_relative_name.tr '.', '_'}.html"
end

#index_nameObject



711
712
713
# File 'lib/rdoc/generator.rb', line 711

def index_name
  name
end

#parent_nameObject



715
716
717
# File 'lib/rdoc/generator.rb', line 715

def parent_name
  nil
end

#value_hashObject



719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
# File 'lib/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)
    @values["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)
    @values["constants"] = co unless co.empty?

    secdata
  end

  @values
end

#write_on(f) ⇒ Object



774
775
776
777
778
779
780
781
782
# File 'lib/rdoc/generator.rb', line 774

def write_on(f)
  value_hash

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

  template.write_html_on(f, @values)
end