cuporter 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.textile CHANGED
@@ -60,9 +60,9 @@ h3. Command Lines
60
60
  h4. help
61
61
 
62
62
  <pre>
63
- $ ./bin/cuporter.rb -h
63
+ $ ./bin/cuporter -h
64
64
 
65
- Usage: cuporter.rb [options]
65
+ Usage: cuporter [options]
66
66
 
67
67
  -i, --in DIR directory of *.feature files
68
68
  Default: features/**/*.feature
@@ -80,11 +80,11 @@ h4. help
80
80
  h4. run script directly
81
81
 
82
82
  <pre>
83
- $ ./bin/cuporter.rb -i fixtures/self_text # pretty-print demo report to stdout
83
+ $ ./bin/cuporter -i fixtures/self_text # pretty-print demo report to stdout
84
84
 
85
- $ ./bin/cuporter.rb -f html -o feature_tag_report.html # default input features/**/*.feature to named output file
85
+ $ ./bin/cuporter -f html -o feature_tag_report.html # default input features/**/*.feature to named output file
86
86
 
87
- $ ./bin/cuporter.rb -f html --numbers -o feature_tag_report.html # same, but number the scenarios and example rows
87
+ $ ./bin/cuporter -f html --numbers -o feature_tag_report.html # same, but number the scenarios and example rows
88
88
  </pre>
89
89
 
90
90
  h4. run via rake
data/Rakefile CHANGED
@@ -56,7 +56,7 @@ namespace :cuporter do
56
56
 
57
57
  spec = Gem::Specification.new do |s|
58
58
  s.name = 'cuporter'
59
- s.version = '0.2.0'
59
+ s.version = '0.2.1'
60
60
  s.rubyforge_project = s.name
61
61
 
62
62
  s.platform = Gem::Platform::RUBY
data/lib/cuporter.rb CHANGED
@@ -11,4 +11,5 @@ require 'cuporter/formatters/writer'
11
11
  require 'cuporter/formatters/text_methods'
12
12
  require 'cuporter/formatters/text'
13
13
  require 'cuporter/formatters/csv'
14
+ require 'cuporter/formatters/html_node_writer'
14
15
  require 'cuporter/formatters/html'
@@ -1,48 +1,11 @@
1
1
  # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
2
  require 'rubygems'
3
3
  require 'erb'
4
- require 'builder'
5
4
 
6
5
  module Cuporter
7
6
  module Formatters
8
7
  class Html < Writer
9
8
 
10
- NODE_CLASS = [:tag, :feature, :scenario, :example_set, :example]
11
-
12
- def write_nodes
13
- @report.children.each do |tag_node|
14
- tag_node.number_all_descendants if @number_scenarios
15
- write_node(tag_node, 0)
16
- end
17
- builder
18
- end
19
-
20
- def builder
21
- @builder ||= Builder::XmlMarkup.new
22
- end
23
-
24
- def write_node(node, indent_level)
25
- builder.li(:class => NODE_CLASS[indent_level]) do |list_item|
26
- list_item.span("#{node.number}.", :class => :number) if node.number
27
- list_item.span(node.name, :class => "#{NODE_CLASS[indent_level]}_name" )
28
-
29
- if node.has_children?
30
- list_item.ul(:class => "#{NODE_CLASS[indent_level]}_children") do |list|
31
- node.children.each do |child|
32
- if child.has_children?
33
- write_node(child, indent_level + 1)
34
- else
35
- list.li() do |item|
36
- item.span("#{child.number}.", :class => :number) if child.number
37
- item.span(child.name, :class => "#{NODE_CLASS[indent_level + 1]}_name")
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
45
-
46
9
  def inline_style
47
10
  File.read("lib/cuporter/formatters/cuporter.css")
48
11
  end
@@ -59,7 +22,7 @@ module Cuporter
59
22
  @output.puts rhtml.result(get_binding).reject {|line| /^\s+$/ =~ line}
60
23
  end
61
24
 
62
- RHTML = %{
25
+ RHTML = %{
63
26
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
64
27
  <html xmlns="http://www.w3.org/1999/xhtml">
65
28
  <head>
@@ -69,13 +32,18 @@ module Cuporter
69
32
  </style>
70
33
  </head>
71
34
  <body>
35
+ <div class="cuporter_header">
36
+ <div id="label">
37
+ <h1>Cucumber Tags</h1>
38
+ </div>
39
+ </div>
72
40
  <ul class="tag_list">
73
- <%= write_nodes%>
41
+ <%= HtmlNodeWriter.new.write_nodes(@report, @number_scenarios)%>
74
42
  </ul>
75
43
  </body>
76
44
  </html>
77
- }
78
-
45
+ }
46
+
79
47
 
80
48
  end
81
49
  end
@@ -0,0 +1,96 @@
1
+ # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
2
+ require 'rubygems'
3
+ require 'builder'
4
+
5
+ module Cuporter
6
+ module Formatters
7
+ class HtmlNodeWriter
8
+
9
+ attr_reader :builder
10
+
11
+ def initialize
12
+ @builder = Builder::XmlMarkup.new
13
+ end
14
+
15
+ def write_nodes(report, number_scenarios)
16
+ report.children.each do |tag_node|
17
+ tag_node.number_all_descendants if number_scenarios
18
+ write_node(tag_node)
19
+ end
20
+ builder
21
+ end
22
+
23
+ def write_node(node)
24
+ builder.li(:class => node_class(node.name)) do
25
+ write_node_name(node)
26
+ write_children(node)
27
+ end
28
+ end
29
+
30
+ def write_node_name(node)
31
+ builder.span("#{node.number}.", :class => :number) if node.number
32
+ builder.div(node.name, :class => "#{node_class(node.name)}_name")
33
+ end
34
+
35
+ def write_children(node)
36
+ return if node.children.empty?
37
+ if node.is_a? ExampleSetNode
38
+ write_children_in_table(node.children)
39
+ else
40
+ write_children_in_list(node.children)
41
+ end
42
+ end
43
+
44
+ def write_children_in_table(children)
45
+ builder.div(:class => :example_rows) do
46
+ builder.table do
47
+ builder.thead {to_row(children.first)}
48
+ builder.tbody do
49
+ children[1..-1].each do |child|
50
+ to_row(child, :class => :example)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+ def to_row(node, attributes = {})
58
+ builder.tr(attributes) do |row|
59
+ number_string = node.number ? "#{node.number}." : ""
60
+ row.td(number_string, :class => :number)
61
+ node.name.sub(/^\|/,"").split("|").each {|s| row.td(s.strip, :class => :val) }
62
+ end
63
+ end
64
+
65
+ def write_children_in_list(children)
66
+ builder.ul do
67
+ children.each do |child|
68
+ if child.has_children?
69
+ write_node(child)
70
+ else
71
+ builder.li() { write_node_name(child) }
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ def node_class(name)
78
+ case name
79
+ when FeatureParser::TAG_LINE
80
+ :tag
81
+ when FeatureParser::FEATURE_LINE
82
+ :feature
83
+ when FeatureParser::SCENARIO_LINE
84
+ :scenario
85
+ when FeatureParser::SCENARIO_OUTLINE_LINE
86
+ :scenario_outline
87
+ when FeatureParser::SCENARIO_SET_LINE, FeatureParser::EXAMPLE_SET_LINE
88
+ :example_set
89
+ else
90
+ :example
91
+ end
92
+ end
93
+
94
+ end
95
+ end
96
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tim Camper
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-09-05 00:00:00 -05:00
17
+ date: 2010-09-06 00:00:00 -04:00
18
18
  default_executable: cuporter
19
19
  dependencies: []
20
20
 
@@ -34,6 +34,7 @@ files:
34
34
  - lib/cuporter/example_set_node.rb
35
35
  - lib/cuporter/formatters/csv.rb
36
36
  - lib/cuporter/formatters/text.rb
37
+ - lib/cuporter/formatters/html_node_writer.rb
37
38
  - lib/cuporter/formatters/html.rb
38
39
  - lib/cuporter/formatters/writer.rb
39
40
  - lib/cuporter/formatters/text_methods.rb