Module Merb::Dispatcher::DefaultExceptionHelper
In: merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb

:api: private

Methods

Public Instance methods

:api: private

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 13
13:         def error_codes(exception)
14:           if @show_details
15:             message, message_details = exception.message.split("\n", 2)
16:             "<h2>#{escape_html(message)}</h2><p>#{escape_html(message_details)}</p>"
17:           else
18:             "<h2>Sorry about that...</h2>"
19:           end
20:         end

:api: private

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 23
23:         def frame_details(line)
24:           if (match = line.match(/^(.+):(\d+):(.+)$/))
25:             filename = match[1]
26:             lineno = match[2]
27:             location = match[3]
28:             if filename.index(Merb.framework_root) == 0
29:               type = "framework"
30:               shortname = Pathname.new(filename).relative_path_from(Pathname.new(Merb.framework_root))
31:             elsif filename.index(Merb.root) == 0
32:               type = "app"
33:               shortname = Pathname.new(filename).relative_path_from(Pathname.new(Merb.root))
34:             elsif path = Gem.path.find {|p| filename.index(p) == 0}
35:               type = "gem"
36:               shortname = Pathname.new(filename).relative_path_from(Pathname.new(path))
37:             else
38:               type = "other"
39:               shortname = filename
40:             end
41:             [type, shortname, filename, lineno, location]
42:           else
43:             ['', '', '', nil, nil]
44:           end
45:         end

:api: private

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 8
 8:         def humanize_exception(e)
 9:           e.class.name.split("::").last.gsub(/([a-z])([A-Z])/, '\1 \2')
10:         end

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 67
67:         def jar?(filename)
68:           filename.match(/jar\!/)
69:         end

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 97
97:         def jar?(filename)
98:           filename.match(/jar\!/)
99:         end

:api: private

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 48
48:         def listing(key, value, arr)
49:           ret   =  []
50:           ret   << "<table class=\"listing\" style=\"display: none\">"
51:           ret   << "  <thead>"
52:           ret   << "    <tr><th width='25%'>#{key}</th><th width='75%'>#{value}</th></tr>"
53:           ret   << "  </thead>"
54:           ret   << "  <tbody>"
55:           (arr || []).each_with_index do |(key, val), i|
56:             klass = i % 2 == 0 ? "even" : "odd"
57:             ret << "    <tr class=\"#{klass}\"><td>#{key}</td><td>#{val.inspect}</td></tr>"
58:           end
59:           if arr.blank?
60:             ret << "    <tr class='odd'><td colspan='2'>None</td></tr>"
61:           end
62:           ret   << "  </tbody>"
63:           ret   << "</table>"
64:           ret.join("\n")
65:         end

:api: private

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 77
77:         def render_source(filename, line)
78:           line = line.to_i
79:           ret   =  []
80:           ret   << "<tr class='source'>"
81:           ret   << "  <td class='collapse'></td>"
82:           str   =  "  <td class='code' colspan='2'><div>"
83:         
84:           __caller_lines__(filename, line, 5) do |lline, lcode|
85:             str << "<a href='txmt://open?url=file://#{filename}&amp;line=#{lline}'>#{lline}</a>"
86:             str << "<em>" if line == lline
87:             str << Erubis::XmlHelper.escape_xml(lcode)
88:             str << "</em>" if line == lline
89:             str << "\n"
90:           end
91:           str   << "</div></td>"
92:           ret   << str
93:           ret   << "</tr>"
94:           ret.join("\n")
95:         end

:api: private

[Source]

    # File merb-core/lib/merb-core/dispatch/default_exception/default_exception.rb, line 72
72:         def textmate_url(filename, line)
73:           "<a href='txmt://open?url=file://#{filename}&amp;line=#{line}'>#{line}</a>"
74:         end

[Validate]