Sha256: 25557c78f307f9f6b337db12ba2893cbbca9d642ce48764d5b52cae39c1d5d02

Contents?: true

Size: 1.01 KB

Versions: 41

Compression:

Stored size: 1.01 KB

Contents

module OrigenTesters::ATP
  module Processors
    # Removes embedded else nodes and converts them to the equivalent inverse condition
    # node at the same level as the parent node
    class ElseRemover < Processor
      def run(node)
        process(node)
      end

      def on_condition_node(node)
        if e = node.find(:else)
          n1 = node.remove(e)
          if node.type.to_s =~ /if_/
            type = node.type.to_s.sub('if_', 'unless_').to_sym
          elsif node.type.to_s =~ /unless_/
            type = node.type.to_s.sub('unless_', 'if_').to_sym
          else
            fail "Don't know how to inverse: #{node.type}"
          end
          n2 = e.updated(type, [n1.to_a[0]] + e.children)
          node.updated(:inline, [n1, n2])
        else
          node.updated(nil, process_all(node.children))
        end
      end
      OrigenTesters::ATP::Flow::CONDITION_NODE_TYPES.each do |type|
        alias_method "on_#{type}", :on_condition_node unless method_defined?("on_#{type}")
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
origen_testers-0.52.9 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.8 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.7 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.6 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.5 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.4 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.3 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.1 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.52.0 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.51.5 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.51.4 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.51.3 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.51.2 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.51.1 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.51.0 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.50.0 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.49.4 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.49.3 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.49.2 lib/origen_testers/atp/processors/else_remover.rb
origen_testers-0.49.1 lib/origen_testers/atp/processors/else_remover.rb