Class: Generators::HtmlClass

Inherits:
ContextUser show all
Defined in:
lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb,
lib/generators/templates/application/merb_stack/doc/rdoc/generators/merb_generator.rb

Overview

Wrap a ClassModule context

Constant Summary collapse

@@c_seq =
"C00000000"

Instance Attribute Summary collapse

Attributes inherited from ContextUser

#context

Instance Method Summary collapse

Methods inherited from ContextUser

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

Methods included from MarkUp

#cvs_url, #markup, #style_url

Constructor Details

#initialize(context, html_file, prefix, options) ⇒ HtmlClass

Returns a new instance of HtmlClass.



549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 549

def initialize(context, html_file, prefix, options)
    super(context, options)
    @@c_seq  = @@c_seq.succ
    @c_seq   = @@c_seq
    @html_file = html_file
    @is_module = context.is_module?
    @values    = {}

    context.viewer = self

    @path = http_url(context.full_name, prefix)

    collect_methods

    AllReferences.add(name, self)
end

Instance Attribute Details

#pathObject (readonly)

Returns the value of attribute path.



547
548
549
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 547

def path
  @path
end

Instance Method Details

#<=>(other) ⇒ Object



736
737
738
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 736

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

#arefObject



580
581
582
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 580

def aref
    @c_seq
end

#build_attribute_list(section) ⇒ Object



666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 666

def build_attribute_list(section)
    atts = @context.attributes.sort
    res = []
    atts.each do |att|
        next unless att.section == section
        if att.visibility == :public || att.visibility == :protected || @options.show_all
            entry = {
                "name"   => CGI.escapeHTML(att.name), 
                "rw"     => att.rw, 
                "a_desc" => markup(att.comment, true)
            }
            unless att.visibility == :public || att.visibility == :protected
                entry["rw"] << "-"
            end
            res << entry
        end
    end
    res
end

#class_attribute_valuesObject



686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 686

def class_attribute_values
    h_name = CGI.escapeHTML(name)

    @values["classmod"]  = @is_module ? "Module" : "Class"
    @values["title"]     = "#{@values['classmod']}: #{h_name}"

    c = @context
    c = c.parent while c and !c.diagram
    if c && c.diagram
        @values["diagram"] = diagram_reference(c.diagram)
    end

    @values["full_name"] = h_name
    @values["class_seq"] = seq
    parent_class = @context.superclass

    if parent_class
        @values["parent"] = CGI.escapeHTML(parent_class)

        if parent_name
            lookup = parent_name + "::" + parent_class
        else
            lookup = parent_class
        end

        parent_url = AllReferences[lookup] || AllReferences[parent_class]

        if parent_url and parent_url.document_self
            @values["par_url"] = parent_url.path
        end
    end

    files = []
    @context.in_files.each do |f|
        res = {}
        full_path = CGI.escapeHTML(f.file_absolute_name)

        res["full_path"]     = full_path
        res["full_path_url"] = f.viewer.path if f.document_self

        if @options.webcvs
            res["cvsurl"] = cvs_url( @options.webcvs, full_path )
        end

        files << res
    end

    @values['infiles'] = files
end

#full_nameObject



598
599
600
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 598

def full_name
    @context.full_name
end

#http_url(full_name, prefix) ⇒ Object

return the relative file name to store this class in, which is also its url



568
569
570
571
572
573
574
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 568

def http_url(full_name, prefix)
    path = full_name.dup
    if path['<<']
        path.gsub!(/<<\s*(\w*)/) { "from-#$1" }
    end
    File.join(prefix, path.split("::")) + ".html"
end

#nameObject



594
595
596
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 594

def name
    @context.full_name.gsub("#{scope}::", '')
end

#parent_nameObject



602
603
604
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 602

def parent_name
    @context.parent.full_name
end

#scopeObject



584
585
586
587
588
589
590
591
592
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 584

def scope
    a = @context.full_name.split("::")
    if a.length > 1
        a.pop
        a.join("::")
    else
        "" 
    end
end

#seqObject



576
577
578
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 576

def seq
    @c_seq
end

#value_hashObject



614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 614

def value_hash
    class_attribute_values
    add_table_of_sections

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

    # Convert README to html
    unless File.exist?('files/README.html')
      File.open('files/README.html', 'w') do |file|
        file << markup(File.read(File.expand_path(@options.main_page)))
      end
    end

    d = markup(@context.comment)
    @values["description"] = d unless d.empty?

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

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

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

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

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

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

        al = build_attribute_list(section)
        secdata["attributes"] = al unless al.empty?

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

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

        secdata
    end

    @values
end

#write_on(f) ⇒ Object



606
607
608
609
610
611
612
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 606

def write_on(f)
    value_hash
    template = TemplatePage.new(RDoc::Page::BODY,
    RDoc::Page::CLASS_PAGE,
    RDoc::Page::METHOD_LIST)
    template.write_html_on(f, @values)
end