Sha256: eab869315c647c1405a31547470a4de3cec99edca4947366b052a27c13dfb6a4

Contents?: true

Size: 1007 Bytes

Versions: 61

Compression:

Stored size: 1007 Bytes

Contents

module Graphiti
  class FilterOperators
    class Catchall
      attr_reader :procs

      def initialize(resource, type_name, opts)
        @procs = {}
        defaults = resource.adapter.default_operators[type_name] || [:eq]
        if opts[:only]
          defaults = defaults.select { |op| Array(opts[:only]).include?(op) }
        end
        if opts[:except]
          defaults = defaults.reject { |op| Array(opts[:except]).include?(op) }
        end
        defaults.each do |op|
          @procs[op] = nil
        end
      end

      # rubocop: disable Style/MethodMissingSuper
      def method_missing(name, *args, &blk)
        @procs[name] = blk
      end
      # rubocop: enable Style/MethodMissingSuper

      def respond_to_missing?(*args)
        true
      end

      def to_hash
        @procs
      end
    end

    def self.build(resource, type_name, opts = {}, &blk)
      c = Catchall.new(resource, type_name, opts)
      c.instance_eval(&blk) if blk
      c.to_hash
    end
  end
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
graphiti-1.3.5 lib/graphiti/filter_operators.rb
graphiti-1.3.4 lib/graphiti/filter_operators.rb
graphiti-1.3.3 lib/graphiti/filter_operators.rb
graphiti-1.3.2 lib/graphiti/filter_operators.rb
graphiti-1.3.1 lib/graphiti/filter_operators.rb
graphiti-1.3.0 lib/graphiti/filter_operators.rb
graphiti-1.2.44 lib/graphiti/filter_operators.rb
graphiti-1.2.43 lib/graphiti/filter_operators.rb
graphiti-1.2.42 lib/graphiti/filter_operators.rb
graphiti-1.2.41 lib/graphiti/filter_operators.rb
graphiti-1.2.40 lib/graphiti/filter_operators.rb
graphiti-1.2.39 lib/graphiti/filter_operators.rb
graphiti-1.2.38 lib/graphiti/filter_operators.rb
graphiti-1.2.37 lib/graphiti/filter_operators.rb
graphiti-1.2.36 lib/graphiti/filter_operators.rb
graphiti-1.2.35 lib/graphiti/filter_operators.rb
graphiti-1.2.34 lib/graphiti/filter_operators.rb
graphiti-1.2.33 lib/graphiti/filter_operators.rb
graphiti-1.2.32 lib/graphiti/filter_operators.rb
graphiti-1.2.31 lib/graphiti/filter_operators.rb