class Redwood::LabelService

Provides label tweaking service to the user. Working as the backend of ConsoleMode.

Should become the backend of bin/sup-tweak-labels in the future.

Public Class Methods

new(index=Index.instance) click to toggle source

@param index [Redwood::Index]

# File lib/sup/service/label_service.rb, line 10
def initialize index=Index.instance
  @index = index
end

Public Instance Methods

add_labels(query, *labels) click to toggle source
# File lib/sup/service/label_service.rb, line 14
def add_labels query, *labels
  run_on_each_message(query) do |m|
    labels.each {|l| m.add_label l }
  end
end
remove_labels(query, *labels) click to toggle source
# File lib/sup/service/label_service.rb, line 20
def remove_labels query, *labels
  run_on_each_message(query) do |m|
    labels.each {|l| m.remove_label l }
  end
end

Private Instance Methods

find_messages(query) click to toggle source
# File lib/sup/service/label_service.rb, line 41
def find_messages query
  @index.find_messages(query)
end
run_on_each_message(query, &operation) click to toggle source
# File lib/sup/service/label_service.rb, line 28
def run_on_each_message query, &operation
  count = 0

  find_messages(query).each do |m|
    operation.call(m)
    @index.update_message_state m
    count += 1
  end

  @index.save_index
  count
end