Class: Ape::Reporter

Inherits:
Erubis::Context
  • Object
show all
Includes:
Util
Defined in:
lib/ape/reporter.rb

Direct Known Subclasses

AtomReporter, HtmlReporter, TextReporter

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Util

included

Instance Attribute Details

#debugObject

Returns the value of attribute debug.



7
8
9
# File 'lib/ape/reporter.rb', line 7

def debug
  @debug
end

#dialogsObject

Returns the value of attribute dialogs.



7
8
9
# File 'lib/ape/reporter.rb', line 7

def dialogs
  @dialogs
end

#dianumObject

Returns the value of attribute dianum.



7
8
9
# File 'lib/ape/reporter.rb', line 7

def dianum
  @dianum
end

#diarefsObject

Returns the value of attribute diarefs.



7
8
9
# File 'lib/ape/reporter.rb', line 7

def diarefs
  @diarefs
end

Returns the value of attribute footer.



7
8
9
# File 'lib/ape/reporter.rb', line 7

def footer
  @footer
end

#headerObject

Returns the value of attribute header.



7
8
9
# File 'lib/ape/reporter.rb', line 7

def header
  @header
end

#serverObject

Returns the value of attribute server.



7
8
9
# File 'lib/ape/reporter.rb', line 7

def server
  @server
end

Class Method Details

.instance(key, opts = {}) ⇒ Object

Raises:

  • (StandardError)


13
14
15
16
17
18
19
20
21
22
# File 'lib/ape/reporter.rb', line 13

def self.instance(key, opts = {})
  reporter = resolve_plugin(key, 'reporters', 'reporter')
  raise StandardError, "Unknown reporter: #{key}, outputs supported: #{supported_outputs}" unless reporter
  reporter.debug = opts[:debug] || false
  reporter.server = opts[:server] || false
  reporter.dialogs = {}
  reporter.diarefs = {}
  reporter.dianum = 1
  reporter
end

.supported_outputsObject



24
25
26
27
28
29
# File 'lib/ape/reporter.rb', line 24

def self.supported_outputs
  Dir[File.join(File.dirname(__FILE__), 'reporters/*.rb'),
      File.join(Ape.home, 'reporters/*.rb')].map { |file|        
    file.gsub(/(.+\/reporters\/)(.+)(_reporter.rb)/, '\2').gsub(/_/, '')
  }.sort.join(", ").downcase
end

Instance Method Details

#add(*args) ⇒ Object

This method saves the messages that the validators send

=== Parameters
  * args[0] must be allways a reference to the validator.
  * args[1] should be the severity of the message, but it could be an array if several steps are recorded at once.
  * args[2] is the message to show.
  * args[3] is the message group key if it exits


38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ape/reporter.rb', line 38

def add(*args)
  if (args.length == 2 && args[1].kind_of?(Array))
    steps << args[1]
  elsif (args.length == 3)
    steps << {:severity => args[1], :message => args[2]}
  else
    steps << {:severity => :debug, :message => args[3]}
    show_crumbs(args[3]) if debug
    steps << {:severity => args[1], :message => args[2], :key => args[3]}        
  end
  puts "#{steps[-1][:severity].to_s.upcase}: #{steps[-1][:message]}" if debug && !steps[-1].kind_of?(Array)
end

#error(validator, message, crumb_key = nil) ⇒ Object



66
67
68
69
70
71
72
# File 'lib/ape/reporter.rb', line 66

def error(validator, message, crumb_key=nil)
  unless crumb_key
    add(validator, :error, message)
  else
    add(validator, :error, message, crumb_key)
  end
end

#errorsObject



132
133
134
# File 'lib/ape/reporter.rb', line 132

def errors
  select(:error)
end

#info(validator, message) ⇒ Object



82
83
84
# File 'lib/ape/reporter.rb', line 82

def info(validator, message)
  add(validator, :info, message)
end

#infosObject



124
125
126
# File 'lib/ape/reporter.rb', line 124

def infos
  select(:info)
end

#line(output = STDOUT) ⇒ Object



94
95
96
97
# File 'lib/ape/reporter.rb', line 94

def line(output=STDOUT)     
  printf(output, "%2d. ", @lnum ||= 1)
  @lnum += 1
end

#list_item(message) ⇒ Object



90
91
92
# File 'lib/ape/reporter.rb', line 90

def list_item(message)
  steps[-1] << {:severity => :debug, :message => message}
end

#save_dialog(name, actor) ⇒ Object



99
100
101
# File 'lib/ape/reporter.rb', line 99

def save_dialog(name, actor)
  dialogs[name] = actor.crumbs
end

#security_warning(validator) ⇒ Object



51
52
53
54
55
56
# File 'lib/ape/reporter.rb', line 51

def security_warning(validator)
  unless (@sec_warning_writed)
    warning(validator, "Sending authentication information over an open channel is not a good security practice.", name)
    @sec_warning_writed = true
  end
end

#show_crumbs(key) ⇒ Object



103
104
105
106
107
# File 'lib/ape/reporter.rb', line 103

def show_crumbs(key)     
  dialogs[key].each do |d|
    puts "Dialog: #{d}"
  end      
end

#show_message(crumb, tf) ⇒ Object



109
110
111
112
113
114
115
116
117
118
# File 'lib/ape/reporter.rb', line 109

def show_message(crumb, tf)
  message = crumb[1 .. -1]
  message.gsub!(/^\s*"/, '')
  message.gsub!(/"\s*$/, '')
  message.gsub!(/\\"/, '"')
  message = Escaper.escape message
  message.gsub!(/(\\r\\n|\\n|\\r)/, "\n<br/>")      
  message.gsub!(/\\t/, '&#xa0;&#xa0;&#xa0;&#xa0;')
  "<div class=\"#{tf.to_s}\">#{message}</div>"      
end

#start_list(validator, message) ⇒ Object



86
87
88
# File 'lib/ape/reporter.rb', line 86

def start_list(validator, message)
  add(validator, [ message + ":" ])
end

#stepsObject



9
10
11
# File 'lib/ape/reporter.rb', line 9

def steps
  @steps ||= []
end

#success(validator, message, crumb_key = nil) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/ape/reporter.rb', line 74

def success(validator, message, crumb_key=nil)
  unless crumb_key
    add(validator, :success, message)
  else
    add(validator, :success, message, crumb_key)
  end
end

#successesObject



120
121
122
# File 'lib/ape/reporter.rb', line 120

def successes
  select(:success)
end

#warning(validator, message, crumb_key = nil) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/ape/reporter.rb', line 58

def warning(validator, message, crumb_key=nil)
  unless crumb_key
    add(validator, :warning, message)
  else
    add(validator, :warning, message, crumb_key)
  end
end

#warningsObject



128
129
130
# File 'lib/ape/reporter.rb', line 128

def warnings
  select(:warning)
end