Class: Generators::HtmlMethod

Inherits:
Object
  • Object
show all
Includes:
MarkUp
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

Constant Summary collapse

@@m_seq =
"M000000"
@@all_methods =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from MarkUp

#cvs_url, #markup, #style_url

Constructor Details

#initialize(context, html_class, options) ⇒ HtmlMethod

Returns a new instance of HtmlMethod.



922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 922

def initialize(context, html_class, options)
    @context    = context
    @html_class = html_class
    @options    = options
    @@m_seq       = @@m_seq.succ
    @m_seq        = @@m_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 = MERBGenerator.gen_url(path, 'source.png')
        #end
    end
    AllReferences.add(name, self)
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



909
910
911
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 909

def context
  @context
end

#img_urlObject (readonly)

Returns the value of attribute img_url.



911
912
913
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 911

def img_url
  @img_url
end

#source_codeObject (readonly)

Returns the value of attribute source_code.



912
913
914
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 912

def source_code
  @source_code
end

#src_urlObject (readonly)

Returns the value of attribute src_url.



910
911
912
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 910

def src_url
  @src_url
end

Class Method Details

.all_methodsObject



1043
1044
1045
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1043

def HtmlMethod.all_methods
    @@all_methods
end

.resetObject



918
919
920
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 918

def HtmlMethod::reset
    @@all_methods = []
end

Instance Method Details

#<=>(other) ⇒ Object



1047
1048
1049
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1047

def <=>(other)
    @context <=> other.context
end

#add_line_numbers(src) ⇒ Object

we rely on the fact that the first line of a source code listing has

# File xxxxx, line dddd


1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1094

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

#aliasesObject



1114
1115
1116
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1114

def aliases
    @context.aliases
end

#arefObject



946
947
948
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 946

def aref
    @m_seq
end

#call_seqObject



990
991
992
993
994
995
996
997
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 990

def call_seq
    cs = @context.call_seq
    if cs
        cs.gsub(/\n/, "<br />\n")
    else
        nil
    end
end

#create_source_code_file(code_body) ⇒ Object



1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1025

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(name),
            'code'      => code_body,
            'style_url' => style_url(file_path, @options.css),
            'charset'   => @options.charset
        }
        template.write_html_on(f, values)
    end
    file_path
end

#descriptionObject



978
979
980
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 978

def description
    markup(@context.comment)
end

#document_selfObject



1110
1111
1112
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1110

def document_self
    @context.document_self
end

#find_symbol(symbol, method = nil) ⇒ Object



1118
1119
1120
1121
1122
1123
1124
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1118

def find_symbol(symbol, method=nil)
    res = @context.parent.find_symbol(symbol, method)
    if res
        res = res.viewer
    end
    res
end

#markup_code(tokens) ⇒ Object



1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 1056

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)
    src
end

#nameObject

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



958
959
960
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 958

def name
    @context.name
end

#paramsObject



999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 999

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

#parent_nameObject



966
967
968
969
970
971
972
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 966

def parent_name
    if @context.parent.parent
        @context.parent.parent.full_name
    else
        nil
    end
end

#pathObject



974
975
976
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 974

def path
    @html_class.path
end

#scopeObject



950
951
952
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 950

def scope
    @html_class.full_name
end

#sectionObject



962
963
964
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 962

def section
    @context.section
end

#seqObject



942
943
944
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 942

def seq
    @m_seq
end

#singletonObject



986
987
988
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 986

def singleton
    @context.singleton
end

#visibilityObject



982
983
984
# File 'lib/generators/templates/application/merb_core/doc/rdoc/generators/merb_generator.rb', line 982

def visibility
    @context.visibility
end