Sha256: 4e736d709c44be4929c5f8f7e00f74106a257c4dd27eaccbda4a4c429b4df2a7

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 KB

Contents

module ATP
  module Processors
    class ConditionExtractor < Processor
      attr_reader :results, :conditions

      def run(nodes)
        @results = []
        @conditions = []
        process_all(nodes)
        @results
      end

      def on_boolean_condition(node)
        children = node.children.dup
        name = children.shift
        state = children.shift
        conditions << node.updated(nil, [name, state])
        process_all(children)
        conditions.pop
      end
      alias_method :on_flow_flag, :on_boolean_condition
      alias_method :on_test_result, :on_boolean_condition
      alias_method :on_test_executed, :on_boolean_condition
      alias_method :on_job, :on_boolean_condition

      def on_condition(node)
        children = node.children.dup
        name = children.shift
        conditions << node.updated(nil, [name])
        process_all(children)
        conditions.pop
      end

      def on_test(node)
        results << [conditions.uniq, node]
      end
      alias_method :on_group, :on_test
      alias_method :on_log, :on_test
      alias_method :on_enable_flow_flag, :on_test
      alias_method :on_disable_flow_flag, :on_test
      alias_method :on_cz, :on_test
      alias_method :on_set_result, :on_test
      alias_method :on_render, :on_test
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
atp-0.3.3 lib/atp/processors/condition_extractor.rb
atp-0.3.2 lib/atp/processors/condition_extractor.rb
atp-0.3.1 lib/atp/processors/condition_extractor.rb
atp-0.3.0 lib/atp/processors/condition_extractor.rb