cuporter 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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