Class: Chartspec::Printer

Inherits:
Object
  • Object
show all
Includes:
ERB::Util
Defined in:
lib/chartspec/printer.rb

Instance Method Summary collapse

Constructor Details

#initialize(output) ⇒ Printer

Returns a new instance of Printer.



7
8
9
10
# File 'lib/chartspec/printer.rb', line 7

def initialize(output)
  @output = output
  @assets_path = File.expand_path("../../../vendor/assets", __FILE__)
end

Instance Method Details

#flushObject



17
18
19
# File 'lib/chartspec/printer.rb', line 17

def flush
  @output.flush
end


96
97
98
# File 'lib/chartspec/printer.rb', line 96

def print_chart_script file, chart, data = {}
  @output.puts "<script>draw_chart('#{chart}', #{data.values.to_json}, #{data.keys.to_json});</script>"
end


53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/chartspec/printer.rb', line 53

def print_example_failed(example_id, filepath, description, run_time, error, backtrace, turnip = nil)
  formatted_run_time = "%.5f" % run_time
  @output.puts "<div><div class='pull-right'>#{formatted_run_time}s</div><div class='bg-danger' style='border-bottom: 1px dotted #cccccc;'>&nbsp;!&nbsp; <b class='text-danger'>"
  if turnip
    line = backtrace.find do |bt|
      bt.match(/#{filepath}:(\d+)/)
    end
    @failed_line_number = Regexp.last_match[1].to_i if line
    
    @output.puts "<table class='table table-condensed'>"
    turnip[:steps].each do |step|
      style = case
      when step.line == @failed_line_number then 'danger'
      when step.line < (@failed_line_number || 0) then 'success'
      else 'text-muted'
      end
      @output.puts "<tr class='#{style}'><th>#{h step.keyword}#{h step.description}</th></tr>"
    end
    @output.puts "</table>"
  else
    @output.puts h(description)
  end
  @output.puts "</b></div><blockquote class='small'><div class='text-danger'>#{error}</div><a href='#backtrace_#{example_id}' class='show_backtrace'>Show backtrace</a><small id='backtrace_#{example_id}' class='hide'>"
    backtrace.each do |btl|
      @output.puts "#{h btl}<br />"
    end
  @output.puts "</small></blockquote>"
end


38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/chartspec/printer.rb', line 38

def print_example_passed(description, run_time, turnip = nil)
  formatted_run_time = "%.5f" % run_time
  @output.puts "<div><div class='pull-right'>#{formatted_run_time}s</div><div class='text-success' style='border-bottom: 1px dotted #cccccc;'>&check; <b class='text-success'>"
  if turnip
    @output.puts "<table class='table table-condensed'>"
    turnip[:steps].each do |step|
      @output.puts "<tr class='success'><th>#{h step.keyword}#{h step.description}<th></tr>"
    end
    @output.puts "</table>"
  else
    @output.puts h(description)
  end
  @output.puts "</b></div></div>"
end


82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/chartspec/printer.rb', line 82

def print_example_pending(description, pending_message, turnip = nil)
  @output.puts "<div><div class='pull-right'>(PENDING: #{h(pending_message)})</div><div class='bg-warning' style='border-bottom: 1px dotted #cccccc;'> &nbsp;*&nbsp; <b class='text-warning'>"
  if turnip
    @output.puts "<table class='table table-condensed'>"
    turnip[:steps].each do |step|
      @output.puts "<tr class='warning'><th>#{h step.keyword}#{h step.description}</th></tr>"
    end
    @output.puts "</table>"
  else
    @output.puts h(description)
  end
  @output.puts "</b></div></div>"
end


34
35
36
# File 'lib/chartspec/printer.rb', line 34

def print_group_end
  @output.puts "</div></li></ul>"
end


25
26
27
28
29
30
31
32
# File 'lib/chartspec/printer.rb', line 25

def print_group_start(group_id, chart, title, parents_count)
  @output.puts "<ul id='group_#{group_id}' class='media-list'><li class='media'>"
  parents_count.times do 
    @output.puts "<span class='media-left'>&nbsp;</span>"
  end
  @output.puts "<div class='media-body' style='width:100%;'><h4 class='media-heading'>#{title}</h4>"
  @output.puts "<div class='thumbnail hide'><div id='chart_#{group_id}' data-chart='#{chart}' style='height:100px; width:100%;'></div></div>"
end


21
22
23
# File 'lib/chartspec/printer.rb', line 21

def print_html_end
  @output.puts "</div></body></html>"
end


12
13
14
15
# File 'lib/chartspec/printer.rb', line 12

def print_html_start
  chartspec_header = ERB.new File.new(File.expand_path("../../../templates/chartspec.html.erb", __FILE__)).read
  @output.puts chartspec_header.result(binding)
end