class Omise::SearchScope

Attributes

scope[R]

Public Class Methods

new(scope, options = {}) click to toggle source
# File lib/omise/search_scope.rb, line 5
def initialize(scope, options = {})
  @scope             = scope.to_s
  @filters           = options.delete(:filters) { Hash.new }
  @order             = options.delete(:order)
  @page              = options.delete(:page)
  @query             = options.delete(:query)
end

Public Instance Methods

execute() click to toggle source
# File lib/omise/search_scope.rb, line 32
def execute
  Search.execute(to_attributes)
end
filter(filters = {}) click to toggle source
# File lib/omise/search_scope.rb, line 15
def filter(filters = {})
  renew(filters: @filters.merge(filters))
end
order(order) click to toggle source
# File lib/omise/search_scope.rb, line 24
def order(order)
  renew(order: order)
end
page(number) click to toggle source
# File lib/omise/search_scope.rb, line 28
def page(number)
  renew(page: number)
end
query(terms = nil) click to toggle source
# File lib/omise/search_scope.rb, line 19
def query(terms = nil)
  return self if !terms
  renew(query: terms)
end
to_attributes() click to toggle source
# File lib/omise/search_scope.rb, line 36
def to_attributes
  {}.tap do |a|
    a[:scope]   = @scope
    a[:filters] = @filters if @filters.any?
    a[:query]   = @query if @query
    a[:order]   = @order if @order
    a[:page]    = @page if @page
  end
end

Private Instance Methods

renew(attributes) click to toggle source
# File lib/omise/search_scope.rb, line 48
def renew(attributes)
  self.class.new(@scope, {
    query:   @query,
    filters: @filters,
    order:   @order,
    page:    @page,
  }.merge(attributes))
end