Sha256: 4e0228f1459a6568236d1b5b599ee24972adeea70ab3b95ea2ef064d6b78bc32

Contents?: true

Size: 842 Bytes

Versions: 10

Compression:

Stored size: 842 Bytes

Contents

# frozen_string_literal: true

module Synvert::Core
  # Condition checks if nql or rules matches.
  class Rewriter::Condition
    # Initialize a Condition.
    #
    # @param instance [Synvert::Core::Rewriter::Instance]
    # @param nql_or_rules [String|Hash]
    # @yield run when condition matches
    def initialize(instance, nql_or_rules, &block)
      @instance = instance
      @node_query = NodeQuery.new(nql_or_rules, adapter: instance.current_parser)
      @block = block
    end

    # If condition matches, run the block code.
    def process
      @instance.instance_eval(&@block) if match?
    end

    protected

    # Check if condition matches
    #
    # @abstract
    def match?
      raise NotImplementedError, 'must be implemented by subclasses'
    end

    def target_node
      @instance.current_node
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
synvert-core-2.2.2 lib/synvert/core/rewriter/condition.rb
synvert-core-2.2.1 lib/synvert/core/rewriter/condition.rb
synvert-core-2.2.0 lib/synvert/core/rewriter/condition.rb
synvert-core-2.1.2 lib/synvert/core/rewriter/condition.rb
synvert-core-2.1.1 lib/synvert/core/rewriter/condition.rb
synvert-core-2.1.0 lib/synvert/core/rewriter/condition.rb
synvert-core-2.0.3 lib/synvert/core/rewriter/condition.rb
synvert-core-2.0.2 lib/synvert/core/rewriter/condition.rb
synvert-core-2.0.1 lib/synvert/core/rewriter/condition.rb
synvert-core-2.0.0 lib/synvert/core/rewriter/condition.rb