Sha256: 1d94171f3bc8107871c3d541db46396bed99323a48f8179402eac8bd68f3254e

Contents?: true

Size: 788 Bytes

Versions: 8

Compression:

Stored size: 788 Bytes

Contents

module Dcm
  class VariantFilter
    ALLOWED_FILTERKEYS = %w(swfk_id typekey devkey)

    attr_reader :key, :matchers
    def initialize(expr)
      unless expr.match?(/^[\w_]+\:/) && ALLOWED_FILTERKEYS.include?(expr.split(":").first)
        fail "Unknown filter expression #{expr}. " +
          "Syntax: (#{ALLOWED_FILTERKEYS.join("|")}):value[,value2]."
      end

      key, matchers = expr.split(":")
      @key = key.to_sym
      @matchers = matchers.split(",").map { /#{_1}/i }
    end

    def match?(headers, row)
      return false unless row[3]
      return false unless row[3].match?(/CVAR/)
      return false unless headers.include?(@key)

      matchers.any? { row[headers.index(@key)].match?(_1) }
    end

    def to_s = "<Filter #{key}:#{matchers.join(",")}"
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dcm-0.0.22 lib/variant_filter.rb
dcm-0.0.21 lib/variant_filter.rb
dcm-0.0.20 lib/variant_filter.rb
dcm-0.0.18 lib/variant_filter.rb
dcm-0.0.17 lib/variant_filter.rb
dcm-0.0.16 lib/variant_filter.rb
dcm-0.0.15 lib/variant_filter.rb
dcm-0.0.14 lib/variant_filter.rb