Sha256: d35ad5c6e33cdd8e69aa9872537a6193a41d11e68a338289798c0e3d1e18ddeb

Contents?: true

Size: 830 Bytes

Versions: 36

Compression:

Stored size: 830 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] || []
        if opts[:only]
          defaults = defaults.select { |op| opts[:only].include?(op) }
        end
        if opts[:except]
          defaults = defaults.reject { |op| opts[:except].include?(op) }
        end
        defaults.each do |op|
          @procs[op] = nil
        end
      end

      def method_missing(name, *args, &blk)
        @procs[name] = blk
      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

36 entries across 36 versions & 1 rubygems

Version Path
graphiti-1.0.beta.15 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.14 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.13 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.12 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.11 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.10 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.9 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.8 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.7 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.6 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.5 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.4 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.3 lib/graphiti/filter_operators.rb
graphiti-1.0.beta.2 lib/graphiti/filter_operators.rb
graphiti-1.0.alpha.26 lib/graphiti/filter_operators.rb
graphiti-1.0.alpha.25 lib/graphiti/filter_operators.rb
graphiti-1.0.alpha.24 lib/graphiti/filter_operators.rb
graphiti-1.0.alpha.23 lib/graphiti/filter_operators.rb
graphiti-1.0.alpha.22 lib/graphiti/filter_operators.rb
graphiti-1.0.alpha.21 lib/graphiti/filter_operators.rb