commit f2f21ae1da74dfd3a079e66548be00f52b08cd57
parent ab3ab3b97a9ed517640b53332a9f0be76af94c99
Author: Whyme Lyu <callme5long@gmail.com>
Date: Sun, 19 May 2013 23:55:31 +0800
Console#{add,remove}_labels delegates to LabelService
Diffstat:
1 file changed, 14 insertions(+), 19 deletions(-)
diff --git a/lib/sup/modes/console_mode.rb b/lib/sup/modes/console_mode.rb
@@ -1,10 +1,13 @@
require 'pp'
+require "sup/service/label_service"
+
module Redwood
class Console
def initialize mode
@mode = mode
+ @label_service = LabelService.new
end
def query(query)
@@ -12,35 +15,27 @@ class Console
end
def add_labels(query, *labels)
- count = 0
- query(query).each do |m|
- labels.each {|l| m.add_label l }
- Index.update_message_state m
- count += 1
- end
- Index.save_index
- puts "Labels modified on #{count} messages."
- puts "You might want to refresh open buffer with `@` key."
+ count = @label_service.add_labels(query, *labels)
+ print_buffer_dirty_msg count
end
def remove_labels(query, *labels)
- count = 0
- query(query).each do |m|
- labels.each {|l| m.remove_label l }
- Index.update_message_state m
- count += 1
- end
- Index.save_index
- puts "Labels modified on #{count} messages."
- puts "You might want to refresh open buffer with `@` key."
+ count = @label_service.remove_labels(query, *labels)
+ print_buffer_dirty_msg count
+ end
+
+ def print_buffer_dirty_msg msg_count
+ puts "Scanned #{msg_count} messages."
+ puts "You might want to refresh open buffers with `@` key."
end
+ private :print_buffer_dirty_msg
def xapian; Index.instance.instance_variable_get :@xapian; end
def loglevel; Redwood::Logger.level; end
def set_loglevel(level); Redwood::Logger.level = level; end
- def special_methods; methods - Object.methods end
+ def special_methods; public_methods - Object.methods end
def puts x; @mode << "#{x.to_s.rstrip}\n" end
def p x; puts x.inspect end