class Piggly::Reporter::Procedure
Public Class Methods
new(config, profile)
click to toggle source
# File lib/piggly/reporter/procedure.rb, line 6 def initialize(config, profile) @config, @profile = config, profile end
Public Instance Methods
report(procedure)
click to toggle source
# File lib/piggly/reporter/procedure.rb, line 10 def report(procedure) io = File.open(report_path(procedure.source_path(@config), ".html"), "w") begin compiler = Compiler::CoverageReport.new(@config) data = compiler.compile(procedure, @profile) html(io) do tag :html, :xmlns => "http://www.w3.org/1999/xhtml" do tag :head do tag :title, "Code Coverage: #{procedure.name}" tag :meta, :charset => "utf-8" tag :link, :rel => "stylesheet", :type => "text/css", :href => "piggly.css" tag :script, "<!-- -->", :type => "text/javascript", :src => "highlight.js" end tag :body do tag :div, :class => "header" do aggregate(procedure.name, @profile.summary(procedure)) end tag :div, :class => "container" do tag :div, :class => "listing" do tag :table do tag :tr do tag :td, " ", :class => "signature" tag :td, signature(procedure), :class => "signature" end tag :tr do tag :td, data[:lines].to_a.map{|n| %[<a href="#L#{n}" id="L#{n}">#{n}</a>] }.join("\n"), :class => "lines" tag :td, data[:html], :class => "code" end end end toc(@profile[procedure]) end timestamp tag :a, "Return to index", :href => "index.html", :class => "return" end end end ensure io.close end end
Private Instance Methods
signature(procedure)
click to toggle source
# File lib/piggly/reporter/procedure.rb, line 62 def signature(procedure) string = "<span class='tK'>CREATE FUNCTION</span> <b><span class='tI'>#{procedure.name}</span></b>" if procedure.arg_names.size <= 1 string << " ( " separator = ", " spacer = " " else string << "\n\t( " separator = ",\n\t " spacer = "\t" end arguments = procedure.arg_types.zip(procedure.arg_modes, procedure.arg_names).map do |atype, amode, aname| amode &&= "<span class='tK'>#{amode.upcase}</span>#{spacer}" aname &&= "<span class='tI'>#{aname}</span>#{spacer}" "#{amode}#{aname}<span class='tD'>#{atype}</span>" end.join(separator) string << arguments << " )" string << "\n<span class='tK'>RETURNS#{procedure.setof ? ' SETOF' : ''}</span>" if procedure.type.table? fields = procedure.type.types.zip(procedure.type.names).map do |rtype, rname| rname = "<span class='tI'>#{rname}</span>\t" rtype = "<span class='tD'>#{rtype}</span>" "#{rname}#{rtype}" end.join(",\n\t") string << " <span class='tK'>TABLE</span> (\n\t" << fields << " )" else string << " <span class='tD'>#{procedure.type.shorten}</span>" end string << "\n <span class='tK'>SECURITY DEFINER</span>" if procedure.secdef string << "\n <span class='tK'>STRICT</span>" if procedure.strict string << "\n <span class='tK'>#{procedure.volatility.upcase}</span>" string end
toc(tags)
click to toggle source
# File lib/piggly/reporter/procedure.rb, line 103 def toc(tags) todo = tags.reject{|t| t.complete? } tag :div, :class => 'toc' do tag :strong, 'Notes' tag :ol do todo.each do |t| tag(:li, :class => t.type) do tag :a, t.description, :href => "#T#{t.id}", :onMouseOver => "highlight('T#{t.id}')" end end end unless todo.empty? end end