Archive of RubyForge sup-talk mailing list
 help / color / mirror / Atom feed
From: nicolas.pouillard@gmail.com (Nicolas Pouillard)
Subject: [sup-talk] [PATCH] Fix a bug about forwarding that trimmed out newlines.
Date: Fri,  4 Apr 2008 18:09:13 +0200	[thread overview]
Message-ID: <1207325353-7638-1-git-send-email-nicolas.pouillard@gmail.com> (raw)

This seems to happen when one don't touch the forwarded
email. Indeed most of the sup's code tend to assume that
messages body are reprensented using an array of string
*without* a trailing \n, except some parts of the code.

This patch enforce that. It could become even more strict
by raising an error instead of logging in join_lines.
---
 lib/sup/modes/edit-message-mode.rb |   11 +++++------
 lib/sup/util.rb                    |    6 ++++++
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/lib/sup/modes/edit-message-mode.rb b/lib/sup/modes/edit-message-mode.rb
index dd96002..c3634af 100644
--- a/lib/sup/modes/edit-message-mode.rb
+++ b/lib/sup/modes/edit-message-mode.rb
@@ -216,7 +216,7 @@ protected
   def parse_file fn
     File.open(fn) do |f|
       header = MBox::read_header f
-      body = f.readlines
+      body = f.readlines.map { |l| l.chomp }
 
       header.delete_if { |k, v| NON_EDITABLE_HEADERS.member? k }
       header.each { |k, v| header[k] = parse_header k, v }
@@ -307,9 +307,8 @@ protected
   def build_message date
     m = RMail::Message.new
     m.header["Content-Type"] = "text/plain; charset=#{$encoding}"
-    m.body = @body.join
-    m.body = m.body
-    m.body += sig_lines.join("\n") unless $config[:edit_signature]
+    m.body = @body.join_lines
+    m.body += sig_lines.join_lines unless $config[:edit_signature]
 
     ## there are attachments, so wrap body in an attachment of its own
     unless @attachments.empty?
@@ -367,7 +366,7 @@ EOS
     end
 
     f.puts
-    f.puts sanitize_body(@body.join)
+    f.puts sanitize_body(@body.join_lines)
     f.puts sig_lines if full unless $config[:edit_signature]
   end  
 
@@ -412,7 +411,7 @@ private
   end
 
   def top_posting?
-    @body.join =~ /(\S+)\s*Excerpts from.*\n(>.*\n)+\s*\Z/
+    @body.join_lines =~ /(\S+)\s*Excerpts from.*\n(>.*\n)+\s*\Z/
   end
 
   def sig_lines
diff --git a/lib/sup/util.rb b/lib/sup/util.rb
index 99e73b4..544859c 100644
--- a/lib/sup/util.rb
+++ b/lib/sup/util.rb
@@ -390,6 +390,12 @@ module Enumerable
 end
 
 class Array
+
+  def join_lines
+    Redwood::log "Some newlines are there..." if any? { |l| l =~ /\n/ }
+    map { |l| l.chomp }.join("\n")
+  end
+
   def flatten_one_level
     inject([]) { |a, e| a + e }
   end
-- 
1.5.5.rc3



             reply	other threads:[~2008-04-04 16:09 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-04 16:09 Nicolas Pouillard [this message]
2008-04-04 17:47 ` William Morgan
2008-04-05  9:26   ` Nicolas Pouillard
2008-04-21  8:02 ` Nicolas Pouillard
2008-04-23  1:44   ` William Morgan
2008-04-23  8:59     ` Nicolas Pouillard
2008-04-04 16:16 kendall at clarkparsia.com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1207325353-7638-1-git-send-email-nicolas.pouillard@gmail.com \
    --to=nicolas.pouillard@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox