class Object

Public Instance Methods

add_to_data(test_name, package_name, class_name, data) click to toggle source
# File lib/junitdoc.rb, line 56
def add_to_data test_name, package_name, class_name, data
  data[package_name] ||= {}
  data[package_name][class_name] ||= []
  data[package_name][class_name] << test_name
end
main() click to toggle source
# File lib/junitdoc.rb, line 4
def main
  files = Dir.glob ARGV
  data = process_files files
  doc = render_template data
  puts doc
end
open_document(fn) click to toggle source
# File lib/junitdoc.rb, line 29
def open_document fn
  File.open(fn) { |f| Nokogiri::XML(f) }
end
parse_class_name(s) click to toggle source
# File lib/junitdoc.rb, line 48
def parse_class_name s
  s.rpartition('.').last
end
parse_package_name(s) click to toggle source
# File lib/junitdoc.rb, line 52
def parse_package_name s
  s.rpartition('.').first
end
process_file(fn, data) click to toggle source
# File lib/junitdoc.rb, line 22
def process_file fn, data
  doc = open_document fn
  doc.xpath('//testcase').each do |testcase|
    process_testcase testcase, data
  end
end
process_files(files) click to toggle source
# File lib/junitdoc.rb, line 11
def process_files files
  data = {}
  files.each { |fn| process_file fn, data }
  data
end
process_testcase(testcase, data) click to toggle source
# File lib/junitdoc.rb, line 33
def process_testcase testcase, data
  test_name = sentencize testcase[:name]
  package_name = parse_package_name testcase[:classname]
  class_name = titlize parse_class_name(testcase[:classname])
  add_to_data test_name, package_name, class_name, data
end
render_template(data) click to toggle source
# File lib/junitdoc.rb, line 17
def render_template data
  engine = Haml::Engine.new(template)
  engine.render 'teh data', :data => data
end
sentencize(s) click to toggle source
# File lib/junitdoc.rb, line 40
def sentencize s
  s.split(/(?=[A-Z0-9])/).map(&:downcase).join ' '
end
template() click to toggle source
# File lib/junitdoc.rb, line 62
def template
%q(
!!! 5
%html{:lang => 'en'}
  %head
    %title JUnit Test Descriptions
    %style body { font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif; margin-left: 20px }
    %style h1 { font-size: 24px; margin-bottom: 0px }
    %style h2 { margin-left: 0px; margin-bottom: 0px; font-size: 18px }
    %style h2 span { font-size: 12px }
    %style ul { margin-top: 0px }
  %body
    %header
      %h1 JUnit Test Descriptions
    %section
      - data.each do |package_name, classes|
        - classes.each do |class_name, tests|
          %h2<
            = class_name
            %span
              = "(#{package_name})"
          %ul
            - tests.each do |test_name|
              %li<
                = test_name
  )
end
titlize(s) click to toggle source
# File lib/junitdoc.rb, line 44
def titlize s
  s.split(/(?=[A-Z0-9])/)[0...-1].join ' '
end