Sha256: ad4038f0fdc4b446ebfa1b65dd1012bbe501c657acabb5b3a3e3104985818680

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

module Bootstrap3AutocompleteInput
  module Orm
    module Mongoid
      def get_autocomplete_order(method, options, model=nil)
        order = options[:order]
        if order
          order.split(',').collect do |fields|
            sfields = fields.split
            [sfields[0].downcase.to_sym, sfields[1].downcase.to_sym]
          end
        else
          [[method.to_sym, :asc]]
        end
      end

      def get_autocomplete_items(parameters)
        model          = parameters[:model]
        method         = parameters[:method]
        options        = parameters[:options]
        scopes         = options[:scopes]
        is_full_search = options[:full]
        term           = parameters[:term]
        limit          = autocomplete_option_limit(options)
        order          = get_autocomplete_order(method, options)

        if is_full_search
          search = '.*' + Regexp.escape(term) + '.*'
        else
          search = '^' + Regexp.escape(term)
        end

        items = model.where(method.to_sym => /#{search}/i).limit(limit).order_by(order)

        case scopes
          when Symbol then
            items = items.send(scopes)
          when Array then
            scopes.each { |scope| items = items.send(scope) } unless scopes.empty?
        end
        items
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bootstrap3_autocomplete_input-0.2.3 lib/bootstrap3_autocomplete_input/orm/mongoid.rb
bootstrap3_autocomplete_input-0.2.1 lib/bootstrap3_autocomplete_input/orm/mongoid.rb