Sha256: 32801b1764ded989668c413fff311cff2ad8fec4917a9d01e350cbf4fa695b06
Contents?: true
Size: 1.17 KB
Versions: 10
Compression:
Stored size: 1.17 KB
Contents
require "omise/search" module Omise class SearchScope 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 attr_reader :scope def filter(filters = {}) renew(filters: @filters.merge(filters)) end def query(terms = nil) return self if !terms renew(query: terms) end def order(order) renew(order: order) end def page(number) renew(page: number) end def execute Search.execute(to_attributes) end 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 def renew(attributes) self.class.new(@scope, { query: @query, filters: @filters, order: @order, page: @page, }.merge(attributes)) end end end
Version data entries
10 entries across 10 versions & 1 rubygems