Sha256: 3ec35f78b80d1a75a1eadab898cf8533db34c420176c65030fb5c6dcb64b8853

Contents?: true

Size: 695 Bytes

Versions: 14

Compression:

Stored size: 695 Bytes

Contents

# frozen_string_literal: true

module Synvert::Core
  # Condition checks if rules matches.
  class Rewriter::Condition
    # Initialize a Condition.
    #
    # @param instance [Synvert::Core::Rewriter::Instance]
    # @param rules [Hash]
    # @yield run when condition matches
    def initialize(instance, rules, &block)
      @instance = instance
      @rules = rules
      @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
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
synvert-core-1.5.0 lib/synvert/core/rewriter/condition.rb
synvert-core-1.4.0 lib/synvert/core/rewriter/condition.rb
synvert-core-1.3.1 lib/synvert/core/rewriter/condition.rb
synvert-core-1.3.0 lib/synvert/core/rewriter/condition.rb
synvert-core-1.2.1 lib/synvert/core/rewriter/condition.rb
synvert-core-1.2.0 lib/synvert/core/rewriter/condition.rb
synvert-core-1.1.1 lib/synvert/core/rewriter/condition.rb
synvert-core-1.1.0 lib/synvert/core/rewriter/condition.rb
synvert-core-1.0.5 lib/synvert/core/rewriter/condition.rb
synvert-core-1.0.4 lib/synvert/core/rewriter/condition.rb
synvert-core-1.0.3 lib/synvert/core/rewriter/condition.rb
synvert-core-1.0.2 lib/synvert/core/rewriter/condition.rb
synvert-core-1.0.1 lib/synvert/core/rewriter/condition.rb
synvert-core-0.64.0 lib/synvert/core/rewriter/condition.rb