Skip to content

Instantly share code, notes, and snippets.

@bayleedev
Created August 7, 2014 19:40
Show Gist options
  • Save bayleedev/22f917d708c13cfa041b to your computer and use it in GitHub Desktop.
Save bayleedev/22f917d708c13cfa041b to your computer and use it in GitHub Desktop.
require 'pry'
class SolrRequest
attr_accessor :params
def initialize(params = {})
@params = params
end
def handle_all_needs?(needs)
(needs & params.keys) == needs
end
def handle_only_wants?(wants)
(params.keys & wants) == params.keys
end
def handle?(request)
handle_all_needs?(request[:need]) and
handle_only_wants?(request[:need] + request[:want])
end
end
# all needs, no wants = true
puts SolrRequest.new(first: 'blaine', last: 'sch').handle?(
need: [:first, :last],
want: [:middle]
)
# all needs, all wants = true
puts SolrRequest.new(first: 'blaine', last: 'sch', middle: 'micahel').handle?(
need: [:first, :last],
want: [:middle]
)
# no needs, all wants = false
puts SolrRequest.new(middle: 'micahel').handle?(
need: [:first, :last],
want: [:middle]
)
# no needs, no wants = false
puts SolrRequest.new().handle?(
need: [:first, :last],
want: [:middle]
)
# has more than enough = false
puts SolrRequest.new(first: 'blaine', last: 'sch', mi: 'm').handle?(
need: [:first, :last],
want: [:middle]
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment