cuporter 0.3.2 → 0.3.3
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 +123 -44
- data/Rakefile +5 -5
- data/bin/cuporter +19 -11
- data/lib/cuporter.rb +15 -26
- data/lib/cuporter/cli/options.rb +95 -22
- data/lib/cuporter/document.rb +23 -0
- data/lib/cuporter/document/html_document.rb +82 -0
- data/lib/cuporter/extensions/nokogiri.rb +46 -0
- data/lib/cuporter/feature_parser.rb +38 -19
- data/lib/cuporter/filter.rb +1 -0
- data/lib/cuporter/formatters/csv.rb +69 -0
- data/lib/cuporter/formatters/text.rb +166 -0
- data/lib/cuporter/formatters/xml_to_html.xslt +315 -0
- data/lib/cuporter/node.rb +7 -83
- data/lib/cuporter/node/node_base.rb +114 -0
- data/lib/cuporter/node/numbering.rb +32 -0
- data/lib/cuporter/node/sorting.rb +27 -0
- data/lib/cuporter/node/tagged_node.rb +22 -0
- data/lib/cuporter/node/totalling.rb +19 -0
- data/lib/cuporter/node/types.rb +158 -0
- data/lib/cuporter/node_parser.rb +62 -0
- data/lib/cuporter/report/feature_report.rb +23 -0
- data/lib/cuporter/report/report_base.rb +69 -0
- data/lib/cuporter/report/tag_report.rb +27 -7
- data/lib/cuporter/report/tree_report.rb +24 -0
- data/lib/cuporter/tag_nodes_parser.rb +94 -0
- data/public/images/ajax-loader.gif +0 -0
- data/public/images/file.gif +0 -0
- data/public/images/folder-closed.gif +0 -0
- data/public/images/folder.gif +0 -0
- data/public/images/minus.gif +0 -0
- data/public/images/plus.gif +0 -0
- data/public/images/treeview-black-line.gif +0 -0
- data/public/images/treeview-black.gif +0 -0
- data/public/images/treeview-default-line.gif +0 -0
- data/public/images/treeview-default.gif +0 -0
- data/public/images/treeview-famfamfam-line.gif +0 -0
- data/public/images/treeview-famfamfam.gif +0 -0
- data/public/images/treeview-gray-line.gif +0 -0
- data/public/images/treeview-gray.gif +0 -0
- data/public/images/treeview-red-line.gif +0 -0
- data/public/images/treeview-red.gif +0 -0
- data/public/javascripts/expand-collapse.js +47 -0
- data/public/javascripts/jquery-min.js +167 -0
- data/public/javascripts/jquery.treeview.js +267 -0
- data/public/javascripts/treeview-loader.js +11 -0
- data/public/stylesheets/cuporter.css +101 -0
- data/{lib/cuporter/formatter/name_report/style.css → public/stylesheets/feature_style.css} +17 -18
- data/public/stylesheets/jquery.treeview.css +75 -0
- data/{lib/cuporter/formatter/tag_report/style.css → public/stylesheets/tag_style.css} +17 -22
- data/public/stylesheets/tree_style.css +104 -0
- metadata +52 -37
- data/lib/cuporter/example_set_node.rb +0 -15
- data/lib/cuporter/formatter/csv_text_methods.rb +0 -20
- data/lib/cuporter/formatter/cuporter.css +0 -64
- data/lib/cuporter/formatter/html_methods.rb +0 -122
- data/lib/cuporter/formatter/html_node_writer.rb +0 -104
- data/lib/cuporter/formatter/jquery-min.js +0 -154
- data/lib/cuporter/formatter/name_report/csv.rb +0 -12
- data/lib/cuporter/formatter/name_report/html.rb +0 -48
- data/lib/cuporter/formatter/name_report/html_node_writer.rb +0 -18
- data/lib/cuporter/formatter/name_report/text.rb +0 -16
- data/lib/cuporter/formatter/name_report/text_node_writer.rb +0 -16
- data/lib/cuporter/formatter/pretty_text_methods.rb +0 -22
- data/lib/cuporter/formatter/tag_report/csv.rb +0 -12
- data/lib/cuporter/formatter/tag_report/html.rb +0 -35
- data/lib/cuporter/formatter/tag_report/html_node_writer.rb +0 -19
- data/lib/cuporter/formatter/tag_report/text.rb +0 -14
- data/lib/cuporter/formatter/tag_report/text_node_writer.rb +0 -17
- data/lib/cuporter/formatter/text_methods.rb +0 -19
- data/lib/cuporter/formatter/writer.rb +0 -33
- data/lib/cuporter/name_list_parser.rb +0 -44
- data/lib/cuporter/node_numberer.rb +0 -18
- data/lib/cuporter/report/name_report.rb +0 -19
- data/lib/cuporter/report/report.rb +0 -22
- data/lib/cuporter/tag_list_node.rb +0 -54
- data/lib/cuporter/tag_list_parser.rb +0 -39
| @@ -1,44 +0,0 @@ | |
| 1 | 
            -
            # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Cuporter
         | 
| 4 | 
            -
              class NameListParser < FeatureParser
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                # ++sub_expression++ is the paren group in the regex, dereferenced with $1 in the caller
         | 
| 7 | 
            -
                def new_feature_node(sub_expression)
         | 
| 8 | 
            -
                  TagListNode.new(sub_expression, @current_tags, @filter)
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def handle_scenario_line(sub_expression)
         | 
| 12 | 
            -
                  @feature.filter_child(Node.new(sub_expression), @current_tags)
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def new_scenario_outline_node(sub_expression)
         | 
| 16 | 
            -
                  TagListNode.new(sub_expression, @current_tags, @filter)
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                def handle_example_set_line
         | 
| 20 | 
            -
                  @scenario_outline.filter_child(@example_set, @example_set.tags)
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                def new_example_set_node(sub_expression)
         | 
| 24 | 
            -
                  ExampleSetNode.new(sub_expression, @feature.tags | @current_tags, @filter)
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                def close_scenario_outline
         | 
| 28 | 
            -
                  if @scenario_outline
         | 
| 29 | 
            -
                    if @example_set
         | 
| 30 | 
            -
                      @scenario_outline.filter_child(@example_set, @example_set.tags) if @example_set
         | 
| 31 | 
            -
                      @example_set = nil
         | 
| 32 | 
            -
                    end
         | 
| 33 | 
            -
                    @feature.add_child(@scenario_outline) if @scenario_outline.has_children?
         | 
| 34 | 
            -
                    @scenario_outline = nil
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                def initialize(file, filter)
         | 
| 39 | 
            -
                  super(file)
         | 
| 40 | 
            -
                  @filter = filter
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
              end
         | 
| 44 | 
            -
            end
         | 
| @@ -1,18 +0,0 @@ | |
| 1 | 
            -
            module Cuporter
         | 
| 2 | 
            -
              class NodeNumberer
         | 
| 3 | 
            -
                
         | 
| 4 | 
            -
                attr_reader :total
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                def initialize
         | 
| 7 | 
            -
                  @total = 0
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def number(node)
         | 
| 11 | 
            -
                  node.children.each do |child|
         | 
| 12 | 
            -
                    child.number = @total += 1 if child.numerable?
         | 
| 13 | 
            -
                    number(child)
         | 
| 14 | 
            -
                  end
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
            end
         | 
| @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
         | 
| 2 | 
            -
            module Cuporter
         | 
| 3 | 
            -
              class NameReport < Report
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def report_node
         | 
| 6 | 
            -
                  names = TagListNode.new("report", @filter)
         | 
| 7 | 
            -
                  files.each do |file|
         | 
| 8 | 
            -
                    feature = FeatureParser.name_list(file, @filter)
         | 
| 9 | 
            -
                    if feature && feature.has_children?
         | 
| 10 | 
            -
                      names.add_child(feature)
         | 
| 11 | 
            -
                    end
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
                  names.sort_all_descendants!
         | 
| 14 | 
            -
                  names.number_all_descendants
         | 
| 15 | 
            -
                  names
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
            end
         | 
| @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
         | 
| 2 | 
            -
            module Cuporter
         | 
| 3 | 
            -
              class Report
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                attr_reader :filter, :title
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                def initialize(input_file_pattern, filter_args = nil, title = nil)
         | 
| 8 | 
            -
                  @input_file_pattern = input_file_pattern
         | 
| 9 | 
            -
                  @filter = Filter.new(filter_args || {})
         | 
| 10 | 
            -
                  @title = title
         | 
| 11 | 
            -
                end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                def files
         | 
| 14 | 
            -
                  Dir[@input_file_pattern].collect {|f| File.expand_path f}
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                def self.create(type, input_file_pattern, filter_args = nil, title = nil)
         | 
| 18 | 
            -
                  klass = Cuporter.const_get("#{type.downcase}Report".to_class_name)
         | 
| 19 | 
            -
                  klass.new(input_file_pattern, filter_args, title)
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         | 
| @@ -1,54 +0,0 @@ | |
| 1 | 
            -
            # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
         | 
| 2 | 
            -
            module Cuporter
         | 
| 3 | 
            -
              # a node with a list of tags that can be applied to all children
         | 
| 4 | 
            -
              class TagListNode < Node
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                attr_reader :tags
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def initialize(name, tags, filter = {})
         | 
| 9 | 
            -
                  super(name)
         | 
| 10 | 
            -
                  @tags = tags
         | 
| 11 | 
            -
                  @filter = filter
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                def has_tags?
         | 
| 15 | 
            -
                  @tags.size > 0
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                def filter_child(node, node_tags)
         | 
| 19 | 
            -
                  add_child(node) if @filter.pass?(tags | node_tags)
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                def add_to_tag_nodes(node)
         | 
| 23 | 
            -
                  (tags | node.tags).each do |tag|
         | 
| 24 | 
            -
                    tag_node = find_or_create_child(tag)
         | 
| 25 | 
            -
                    tag_node.add_child(node)
         | 
| 26 | 
            -
                  end
         | 
| 27 | 
            -
                end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                # Have my children adopt the other node's grandchildren.
         | 
| 30 | 
            -
                #
         | 
| 31 | 
            -
                # Copy children of other node's top-level, direct descendants to this 
         | 
| 32 | 
            -
                # node's direct descendants of the same name.
         | 
| 33 | 
            -
                def merge_tag_nodes(other)
         | 
| 34 | 
            -
                  other.children.each do |other_tag_node|
         | 
| 35 | 
            -
                    tag_node                = find_or_create_child(other_tag_node.name)
         | 
| 36 | 
            -
                    new_grandchild          = Node.new(other.name)
         | 
| 37 | 
            -
                    new_grandchild.children = other_tag_node.children
         | 
| 38 | 
            -
                    new_grandchild.file     = other.file
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                    tag_node.add_child(new_grandchild)
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
                def find_or_create_child(name)
         | 
| 45 | 
            -
                  child_node = self[name]
         | 
| 46 | 
            -
                  unless child_node
         | 
| 47 | 
            -
                    children << Node.new(name)
         | 
| 48 | 
            -
                    child_node = children.last
         | 
| 49 | 
            -
                  end
         | 
| 50 | 
            -
                  child_node
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
              end
         | 
| 54 | 
            -
            end
         | 
| @@ -1,39 +0,0 @@ | |
| 1 | 
            -
            # Copyright 2010 ThoughtWorks, Inc. Licensed under the MIT License
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Cuporter
         | 
| 4 | 
            -
              class TagListParser < FeatureParser
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                # ++sub_expression++ is the paren group in the regex, dereferenced with $1 in the caller
         | 
| 7 | 
            -
                def new_feature_node(sub_expression)
         | 
| 8 | 
            -
                  TagListNode.new(sub_expression, @current_tags)
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def handle_scenario_line(sub_expression)
         | 
| 12 | 
            -
                  @feature.add_to_tag_nodes(TagListNode.new(sub_expression, @current_tags))
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def new_scenario_outline_node(sub_expression)
         | 
| 16 | 
            -
                  TagListNode.new(sub_expression, @current_tags)
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                def handle_example_set_line
         | 
| 20 | 
            -
                  @scenario_outline.add_to_tag_nodes(@example_set)
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                def new_example_set_node(sub_expression)
         | 
| 24 | 
            -
                  ExampleSetNode.new(sub_expression, @feature.tags | @current_tags)
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                def close_scenario_outline
         | 
| 28 | 
            -
                  if @scenario_outline
         | 
| 29 | 
            -
                    if @example_set
         | 
| 30 | 
            -
                      @scenario_outline.add_to_tag_nodes(@example_set) if @example_set
         | 
| 31 | 
            -
                      @example_set = nil
         | 
| 32 | 
            -
                    end
         | 
| 33 | 
            -
                    @feature.merge_tag_nodes(@scenario_outline)
         | 
| 34 | 
            -
                    @scenario_outline = nil
         | 
| 35 | 
            -
                  end
         | 
| 36 | 
            -
                end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
            end
         |