Class: Jacoco::SAXParser

Inherits:
Nokogiri::XML::SAX::Document
  • Object
show all
Defined in:
lib/jacoco/sax_parser.rb

Overview

Sax parser for quickly finding class elements in Jacoco report

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(classes) ⇒ SAXParser

Returns a new instance of SAXParser.



10
11
12
13
14
15
16
# File 'lib/jacoco/sax_parser.rb', line 10

def initialize(classes)
  super()
  @class_names      = classes
  @classes          = []
  @current_class    = nil
  @subelement_index = 0
end

Instance Attribute Details

#class_namesObject

Returns the value of attribute class_names.



8
9
10
# File 'lib/jacoco/sax_parser.rb', line 8

def class_names
  @class_names
end

#classesObject

Returns the value of attribute classes.



8
9
10
# File 'lib/jacoco/sax_parser.rb', line 8

def classes
  @classes
end

Instance Method Details

#characters(string) ⇒ Object



52
# File 'lib/jacoco/sax_parser.rb', line 52

def characters(string); end

#end_element(name) ⇒ Object



54
55
56
57
# File 'lib/jacoco/sax_parser.rb', line 54

def end_element(name)
  @subelement_index -= 1
  @current_class = nil if name.eql? 'class'
end

#start_class(attrs) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/jacoco/sax_parser.rb', line 40

def start_class(attrs)
  @subelement_index = 0

  return unless @class_names.include?(Hash[attrs]['name'])

  c              = Jacoco::Class.new
  c.name         = Hash[attrs]['name']
  c.counters     = []
  @current_class = c
  @classes.push c
end

#start_counter(attrs) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/jacoco/sax_parser.rb', line 29

def start_counter(attrs)
  return unless !@current_class.nil? && @subelement_index == 1

  counter         = Jacoco::Counter.new
  counter.type    = Hash[attrs]['type']
  counter.missed  = Hash[attrs]['missed'].to_i
  counter.covered = Hash[attrs]['covered'].to_i

  @current_class.counters.push(counter)
end

#start_element(name, attrs = []) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/jacoco/sax_parser.rb', line 18

def start_element(name, attrs = [])
  case name
  when 'class'
    start_class(attrs)
  when 'counter'
    start_counter(attrs)
  end

  @subelement_index += 1
end