class Trample::Autocomplete::Formatter

Public Class Methods

new(formatter = nil) click to toggle source
# File lib/trample/autocomplete/formatter.rb, line 5
def initialize(formatter = nil)
  if formatter.respond_to?(:call)
    @formatter = formatter
  else
    @formatter = hash_formatter_to_proc(formatter)
  end
end

Public Instance Methods

format_all(results, options = {}) click to toggle source
# File lib/trample/autocomplete/formatter.rb, line 13
def format_all(results, options = {})
  results = results.map do |r|
    format_one(r)
  end

  if user_query = options[:user_query]
    results.unshift(Hashie::Mash.new(id: user_query, key: user_query, text: "\"#{user_query}\"", user_query: true))
  end

  results
end
format_one(result) click to toggle source
# File lib/trample/autocomplete/formatter.rb, line 25
def format_one(result)
  @formatter.call(result)
end

Private Instance Methods

default_hash() click to toggle source
# File lib/trample/autocomplete/formatter.rb, line 31
def default_hash
  {
    id: :id,
    key: :id,
    text: :name
  }
end
hash_formatter_to_proc(hash) click to toggle source
# File lib/trample/autocomplete/formatter.rb, line 39
def hash_formatter_to_proc(hash)
  hash ||= default_hash

  ->(result) {
    {
      id:   result.send(hash[:id]),
      key:  result.send(hash[:key]),
      text: result.send(hash[:text])
    }
  }
end