class Jacoco::SAXParser

Sax parser for quickly finding class elements in Jacoco report

Attributes

class_names[RW]
classes[RW]

Public Class Methods

new(classes) click to toggle source
Calls superclass method
# File lib/jacoco/sax_parser.rb, line 10
def initialize(classes)
  super()
  @class_names      = classes
  @classes          = []
  @current_class    = nil
  @subelement_index = 0
end

Public Instance Methods

characters(string) click to toggle source
# File lib/jacoco/sax_parser.rb, line 52
def characters(string); end
end_element(name) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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 = []) click to toggle source
# 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