class Fusuma::Plugin::Events::Records::IndexRecord

have index
Vector Record

def exist_on_conf?(index = @index)

Parameters:
  • searcher (Config::Searcher) --
def exist_on_conf?(index = @index)
  Config.search(index)
end

def initialize(index:, position: :body, trigger: :oneshot, args: {})

Parameters:
  • trigger (Symbol) -- [:oneshot, :repeat]
  • position (Symbol) -- [:prefix, :body, :surfix]
  • index (Config::Index) --
def initialize(index:, position: :body, trigger: :oneshot, args: {})
  super()
  @index = index
  @position = position
  @trigger = trigger
  @args = args
end

def mergable?

def mergable?
  @position == :body
end

def merge(records:, index: @index)

Returns:
  • (NilClass) - when merge is not succeeded
  • (IndexRecord) - when merge is succeeded

Parameters:
  • records (Array) --
def merge(records:, index: @index)
  # FIXME: cache
  raise "position is NOT body: #{self}" unless mergable?
  if records.empty?
    if Config.find_execute_key(index)
      @index = index
      return self
    end
    return nil
  end
  record = records.shift
  new_index = case record.position
              when :surfix
                Config::Index.new([*index.keys, *record.index.keys])
              else
                raise "invalid index position: #{record}"
              end
  return unless exist_on_conf?(new_index)
  merge(records: records, index: new_index)
end

def trigger_priority

Returns:
  • (Integer) -
def trigger_priority
  case @trigger
  when :oneshot
    10
  when :repeat
    100
  else
    1000
  end
end

def type

def type
  :index
end