Sha256: d2565d2d9fd9470676b344f37cd8f41001daf3c254c4fb3037bdc090822bba29

Contents?: true

Size: 753 Bytes

Versions: 1

Compression:

Stored size: 753 Bytes

Contents

module Beambridge
  class StaticCondition < Condition
    attr_accessor :value
    def initialize(value)
      if value.is_a?(Array)
        self.value = value.map do |v|
          Condition.for(v)
        end
      else
        self.value = value
      end
    end

    def satisfies?(arg)
      if value.is_a?(Array)
        return false unless arg.is_a?(Array)
        return false if value.length != arg.length
        value.zip(arg).all? do |l, r|
          l.respond_to?(:satisfies?) ? l.satisfies?(r) : l.eql?(r)
        end
      else
        arg.eql?(value)
      end
    end

    def binding_for(arg)
      if value.is_a?(Array)
        value.zip(arg).map { |l, r| l.binding_for(r) }.compact
      else
        nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
beambridge-0.9.0 lib/beambridge/conditions/static.rb