module Groonga::Client::Response::Searchable

Attributes

raw_columns[RW]
raw_records[RW]
records[RW]

Public Instance Methods

each(&block) click to toggle source
# File lib/groonga/client/response/searchable.rb, line 42
def each(&block)
  records.each(&block)
end
limit_value() click to toggle source

For Kaminari

# File lib/groonga/client/response/searchable.rb, line 28
def limit_value
  (@command[:limit] || 10).to_i
end
offset_value() click to toggle source

For Kaminari

# File lib/groonga/client/response/searchable.rb, line 33
def offset_value
  (@command[:offset] || 0).to_i
end
size() click to toggle source

For Kaminari

# File lib/groonga/client/response/searchable.rb, line 38
def size
  records.size
end

Private Instance Methods

convert_value(value, type) click to toggle source
# File lib/groonga/client/response/searchable.rb, line 75
def convert_value(value, type)
  case value
  when ::Array
    value.collect do |element|
      convert_value(element, type)
    end
  else
    case type
    when "Time"
      Time.at(value)
    else
      value
    end
  end
end
parse_records(raw_columns, raw_records) click to toggle source
# File lib/groonga/client/response/searchable.rb, line 47
def parse_records(raw_columns, raw_records)
  column_names = {}
  columns = raw_columns.collect do |column|
    if column.is_a?(::Array)
      name, type = column
    else
      name = column["name"]
      type = column["type"]
    end
    base_column_name = name
    suffix = 2
    while column_names.key?(name)
      name = "#{base_column_name}#{suffix}"
      suffix += 1
    end
    column_names[name] = true
    [name, type]
  end

  (raw_records || []).collect do |raw_record|
    record = Record.new
    columns.each_with_index do |(name, type), i|
      record[name] = convert_value(raw_record[i], type)
    end
    record
  end
end