sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 76d090cf4af007a8047b932374ee264b6e978951
parent ba4d09453a4895ed5744fc1a1a11e29bf12aff13
Author: wmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Date:   Mon,  8 Jan 2007 18:26:43 +0000

wrote Mode#save_to_file as a utility method, moved attachment saving code there,
and added log-mode save to disk


git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@225 5c8cc53c-5e98-4d25-b20a-d8db53a31250

Diffstat:
M lib/sup/mode.rb | 13 +++++++++++++
M lib/sup/modes/log-mode.rb | 6 ++++++
M lib/sup/modes/thread-view-mode.rb | 21 ++++-----------------
3 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/lib/sup/mode.rb b/lib/sup/mode.rb
@@ -75,6 +75,19 @@ EOS
       s
     end.compact.join "\n"
   end
+
+  ## helper function
+  def save_to_file fn
+    if File.exists? fn
+      return unless BufferManager.ask_yes_or_no "File exists. Overwrite?"
+    end
+    begin
+      File.open(fn, "w") { |f| yield f }
+      BufferManager.flash "Successfully wrote #{fn}."
+    rescue SystemCallError => e
+      BufferManager.flash "Error writing to file: #{e.message}"
+    end
+  end
 end
 
 end
diff --git a/lib/sup/modes/log-mode.rb b/lib/sup/modes/log-mode.rb
@@ -3,6 +3,7 @@ module Redwood
 class LogMode < TextMode
   register_keymap do |k|
     k.add :toggle_follow, "Toggle follow mode", 'f'
+    k.add :save_to_disk, "Save log to disk", 's'
   end
 
   def initialize
@@ -36,6 +37,11 @@ class LogMode < TextMode
     end
   end
 
+  def save_to_disk
+    fn = BufferManager.ask :filename, "Save log to file: "
+    save_to_file(fn) { |f| f.puts text } if fn
+  end
+
   def status
     super + " (follow: #@follow)"
   end
diff --git a/lib/sup/modes/thread-view-mode.rb b/lib/sup/modes/thread-view-mode.rb
@@ -107,29 +107,16 @@ class ThreadViewMode < LineCursorMode
     update
   end
 
-  def save fn
-    if File.exists? fn
-      return unless BufferManager.ask_yes_or_no "File exists. Overwrite?"
-    end
-    begin
-      File.open(fn, "w") { |f| yield f }
-      BufferManager.flash "Successfully wrote #{fn}."
-    rescue SystemCallError => e
-      BufferManager.flash "Error writing to file: #{e.message}"
-    end
-  end
-  private :save
-
   def save_to_disk
     return unless(chunk = @chunk_lines[curpos])
     case chunk
     when Message::Attachment
-      fn = BufferManager.ask :filename, "save attachment to file: ", chunk.filename
-      save(fn) { |f| f.print chunk } if fn
+      fn = BufferManager.ask :filename, "Save attachment to file: ", chunk.filename
+      save_to_file(fn) { |f| f.print chunk } if fn
     else
       m = @message_lines[curpos]
-      fn = BufferManager.ask :filename, "save message to file: "
-      save(fn) { |f| f.print m.raw_full_message } if fn
+      fn = BufferManager.ask :filename, "Save message to file: "
+      save_to_file(fn) { |f| f.print m.raw_full_message } if fn
     end
   end