From 76d090cf4af007a8047b932374ee264b6e978951 Mon Sep 17 00:00:00 2001 From: wmorgan Date: Mon, 8 Jan 2007 18:26:43 +0000 Subject: [PATCH] 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 --- lib/sup/mode.rb | 13 +++++++++++++ lib/sup/modes/log-mode.rb | 6 ++++++ 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 index 91bdbe6..88227e9 100644 --- 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 index de16b5e..0a386d5 100644 --- 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 index e791e6b..da1bc7b 100644 --- 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 -- 2.45.2