module Groonga::Command::Sliceable

Public Instance Methods

slices() click to toggle source

@return [::Hash<String, Slice>] The slices.

@since 1.3.0

# File lib/groonga/command/sliceable.rb, line 23
def slices
  @slices ||= parse_slices
end

Private Instance Methods

build_slices(raw_slices) click to toggle source
# File lib/groonga/command/sliceable.rb, line 42
def build_slices(raw_slices)
  slices = {}
  raw_slices.each do |label, raw_slice|
    match_columns = raw_slice["match_columns"]
    query = raw_slice["query"]
    query_expander = raw_slice["query_expander"]
    query_flags = parse_flags_value(raw_slice["query_flags"])
    filter = raw_slice["filter"]
    sort_keys = parse_array_value(raw_slice["sort_keys"])
    output_columns = parse_array_value(raw_slice["output_columns"])
    offset = parse_integer_value(raw_slice["offset"])
    limit = parse_integer_value(raw_slice["limit"])
    labeled_drilldowns = parse_labeled_drilldowns("slices[#{label}].")
    slices[label] = Slice.new(label,
                              match_columns,
                              query,
                              query_expander,
                              query_flags,
                              filter,
                              sort_keys,
                              output_columns,
                              offset,
                              limit,
                              labeled_drilldowns)
  end
  slices
end
parse_slices() click to toggle source
# File lib/groonga/command/sliceable.rb, line 28
def parse_slices
  raw_slices = {}
  @arguments.each do |name, value|
    case name.to_s
    when /\Aslices?\[(.+?)\]\.(.+?)\z/
      label = $1
      parameter_name = $2
      raw_slices[label] ||= {}
      raw_slices[label][parameter_name] = value
    end
  end
  build_slices(raw_slices)
end