Class Generators::HtmlMethod
In: generators/html_generator.rb
Parent: Object

Methods

Included Modules

MarkUp

Attributes

context  [R] 
img_url  [R] 
source_code  [R] 
src_url  [R] 

Public Class methods

[Source]

      # File generators/html_generator.rb, line 1090
1090:     def HtmlMethod.all_methods
1091:       @@all_methods
1092:     end

[Source]

     # File generators/html_generator.rb, line 959
959:     def initialize(context, html_class, options)
960:       @context    = context
961:       @html_class = html_class
962:       @options    = options
963:       @@seq       = @@seq.succ
964:       @seq        = @@seq
965:       @@all_methods << self
966: 
967:       context.viewer = self
968: 
969:       if (ts = @context.token_stream)
970:         @source_code = markup_code(ts)
971:         unless @options.inline_source
972:           @src_url = create_source_code_file(@source_code)
973:           @img_url = HTMLGenerator.gen_url(path, 'source.png')
974:         end
975:       end
976: 
977:       AllReferences.add(name, self)
978:     end

[Source]

     # File generators/html_generator.rb, line 955
955:     def HtmlMethod::reset
956:       @@all_methods = []
957:     end

Public Instance methods

[Source]

      # File generators/html_generator.rb, line 1094
1094:     def <=>(other)
1095:       @context <=> other.context
1096:     end

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

   # File xxxxx, line dddd

[Source]

      # File generators/html_generator.rb, line 1141
1141:     def add_line_numbers(src)
1142:       if src =~ /\A.*, line (\d+)/
1143:         first = $1.to_i - 1
1144:         last  = first + src.count("\n")
1145:         size = last.to_s.length
1146:         real_fmt = "%#{size}d: "
1147:         fmt = " " * (size+2)
1148:         src.gsub!(/^/) do
1149:           res = sprintf(fmt, first) 
1150:           first += 1
1151:           fmt = real_fmt
1152:           res
1153:         end
1154:       end
1155:     end

[Source]

      # File generators/html_generator.rb, line 1161
1161:     def aliases
1162:       @context.aliases
1163:     end

[Source]

      # File generators/html_generator.rb, line 1012
1012:     def aref
1013:       @seq
1014:     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

[Source]

     # File generators/html_generator.rb, line 984
984:     def as_href(from_path)
985:       if @options.all_one_file
986:         "#" + path
987:       else
988:         HTMLGenerator.gen_url(from_path, path)
989:       end
990:     end

[Source]

      # File generators/html_generator.rb, line 1036
1036:     def call_seq
1037:       cs = @context.call_seq
1038:       if cs
1039:         cs.gsub(/\n/, "<br />\n")
1040:       else
1041:         nil
1042:       end
1043:     end

[Source]

      # File generators/html_generator.rb, line 1071
1071:     def create_source_code_file(code_body)
1072:       template_regexp = Regexp.new("\\." + @options.template + "$")
1073:       meth_path = @html_class.path.sub(template_regexp, '.src')
1074:       File.makedirs(meth_path)
1075:       file_path = File.join(meth_path, @seq) + '.' + @options.template
1076: 
1077:       template = TemplatePage.new(RDoc::Page::SRC_PAGE)
1078:       File.open(file_path, "w") do |f|
1079:         values = {
1080:           'title'     => CGI.escapeHTML(index_name),
1081:           'code'      => code_body,
1082:           'style_url' => style_url(file_path, @options.css),
1083:           'charset'   => @options.charset
1084:         }
1085:         template.write_html_on(f, values)
1086:       end
1087:       HTMLGenerator.gen_url(path, file_path)
1088:     end

[Source]

      # File generators/html_generator.rb, line 1024
1024:     def description
1025:       markup(@context.comment)
1026:     end

[Source]

      # File generators/html_generator.rb, line 1157
1157:     def document_self
1158:       @context.document_self
1159:     end

Find a filenames in ourselves or our parent

[Source]

      # File generators/html_generator.rb, line 1174
1174:     def find_file(file, method=nil)
1175:       res = @context.parent.find_file(file, method)
1176:       if res
1177:         res = res.viewer
1178:       end
1179:       res
1180:     end

[Source]

      # File generators/html_generator.rb, line 1165
1165:     def find_symbol(symbol, method=nil)
1166:       res = @context.parent.find_symbol(symbol, method, @options.ignore_case)
1167:       if res
1168:         res = res.viewer
1169:       end
1170:       res
1171:     end

[Source]

      # File generators/html_generator.rb, line 1000
1000:     def index_name
1001:       "#{@context.name} (#{@html_class.name})"
1002:     end

Given a sequence of source tokens, mark up the source code to make it look purty.

[Source]

      # File generators/html_generator.rb, line 1103
1103:     def markup_code(tokens)
1104:       src = ""
1105:       tokens.each do |t|
1106:         next unless t
1107:         #    p t.class
1108: #        style = STYLE_MAP[t.class]
1109:         style = case t
1110:                 when RubyToken::TkCONSTANT then "ruby-constant"
1111:                 when RubyToken::TkKW       then "ruby-keyword kw"
1112:                 when RubyToken::TkIVAR     then "ruby-ivar"
1113:                 when RubyToken::TkOp       then "ruby-operator"
1114:                 when RubyToken::TkId       then "ruby-identifier"
1115:                 when RubyToken::TkNode     then "ruby-node"
1116:                 when RubyToken::TkCOMMENT  then "ruby-comment cmt"
1117:                 when RubyToken::TkREGEXP   then "ruby-regexp re"
1118:                 when RubyToken::TkSTRING   then "ruby-value str"
1119:                 when RubyToken::TkVal      then "ruby-value"
1120:                 else
1121:                     nil
1122:                 end
1123: 
1124:         text = CGI.escapeHTML(t.text)
1125: 
1126:         if style
1127:           src << "<span class=\"#{style}\">#{text}</span>"
1128:         else
1129:           src << text
1130:         end
1131:       end
1132: 
1133:       add_line_numbers(src) if Options.instance.include_line_numbers
1134:       src
1135:     end

[Source]

     # File generators/html_generator.rb, line 992
992:     def name
993:       @context.name
994:     end

[Source]

      # File generators/html_generator.rb, line 1045
1045:     def params
1046:       # params coming from a call-seq in 'C' will start with the
1047:       # method name
1048:       p = @context.params
1049:       if p !~ /^\w/
1050:         p = @context.params.gsub(/\s*\#.*/, '')
1051:         p = p.tr("\n", " ").squeeze(" ")
1052:         p = "(" + p + ")" unless p[0] == ?(
1053:         
1054:         if (block = @context.block_params)
1055:          # If this method has explicit block parameters, remove any
1056:          # explicit &block
1057: 
1058:          p.sub!(/,?\s*&\w+/, '')
1059: 
1060:           block.gsub!(/\s*\#.*/, '')
1061:           block = block.tr("\n", " ").squeeze(" ")
1062:           if block[0] == ?(
1063:             block.sub!(/^\(/, '').sub!(/\)/, '')
1064:           end
1065:           p << " {|#{block.strip}| ...}"
1066:         end
1067:       end
1068:       CGI.escapeHTML(p)
1069:     end

[Source]

      # File generators/html_generator.rb, line 1004
1004:     def parent_name
1005:       if @context.parent.parent
1006:         @context.parent.parent.full_name
1007:       else
1008:         nil
1009:       end
1010:     end

[Source]

      # File generators/html_generator.rb, line 1016
1016:     def path
1017:       if @options.all_one_file
1018:         aref
1019:       else
1020:         @html_class.path + "#" + aref
1021:       end
1022:     end

[Source]

     # File generators/html_generator.rb, line 996
996:     def section
997:       @context.section
998:     end

[Source]

      # File generators/html_generator.rb, line 1032
1032:     def singleton
1033:       @context.singleton
1034:     end

[Source]

      # File generators/html_generator.rb, line 1028
1028:     def visibility
1029:       @context.visibility
1030:     end

[Validate]