From: Rich Lane <rlane@club.cc.cmu.edu>
To: sup-devel@rubyforge.org
Subject: [sup-devel] [PATCH 05/10] fixup Iconv#easy_decode for Ruby 1.9
Date: Thu, 31 Dec 2009 15:36:53 -0800 [thread overview]
Message-ID: <1262302618-20503-6-git-send-email-rlane@club.cc.cmu.edu> (raw)
In-Reply-To: <1262302618-20503-5-git-send-email-rlane@club.cc.cmu.edu>
---
lib/sup/util.rb | 21 +++++++++++++--------
1 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/lib/sup/util.rb b/lib/sup/util.rb
index 508bcee..560ac73 100644
--- a/lib/sup/util.rb
+++ b/lib/sup/util.rb
@@ -664,21 +664,26 @@ class FinishLine
end
class Iconv
- def self.easy_decode target, charset, text
- return text if charset =~ /^(x-unknown|unknown[-_ ]?8bit|ascii[-_ ]?7[-_ ]?bit)$/i
- charset = case charset
+ def self.easy_decode target, orig_charset, text
+ if text.respond_to? :force_encoding
+ text = text.dup
+ text.force_encoding Encoding::BINARY
+ end
+ charset = case orig_charset
when /UTF[-_ ]?8/i then "utf-8"
when /(iso[-_ ])?latin[-_ ]?1$/i then "ISO-8859-1"
when /iso[-_ ]?8859[-_ ]?15/i then 'ISO-8859-15'
when /unicode[-_ ]1[-_ ]1[-_ ]utf[-_]7/i then "utf-7"
- else charset
+ when /^euc$/i then 'EUC-JP' # XXX try them all?
+ when /^(x-unknown|unknown[-_ ]?8bit|ascii[-_ ]?7[-_ ]?bit)$/i then 'ASCII'
+ else orig_charset
end
begin
- Iconv.iconv(target + "//IGNORE", charset, text + " ").join[0 .. -2]
- rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::InvalidCharacter, Iconv::IllegalSequence => e
- warn "couldn't transcode text from #{charset} to #{target} (\"#{text[0 ... 20]}\"...) (got #{e.message}); using original as is"
- text
+ returning(Iconv.iconv(target, charset, text + " ").join[0 .. -2]) { |str| str.check }
+ rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::InvalidCharacter, Iconv::IllegalSequence, String::CheckError
+ warn "couldn't transcode text from #{orig_charset} (#{charset}) to #{target}) (#{text[0 ... 20].inspect}...) (got #{$!.message} (#{$!.class}))"
+ text.ascii
end
end
end
--
1.6.3.3
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
next prev parent reply other threads:[~2009-12-31 23:44 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-31 23:36 [sup-devel] Ruby 1.9 encoding fixes Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 01/10] open mail source files as binary Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 02/10] display_size is just size on Ruby 1.9 Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 03/10] add String#check Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 04/10] add String#ascii Rich Lane
2009-12-31 23:36 ` Rich Lane [this message]
2009-12-31 23:36 ` [sup-devel] [PATCH 06/10] add String#transcode Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 07/10] transcode output from mime-decode hook too Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 08/10] decode raw header/message to ascii before viewing Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 09/10] use header from the RMail::Message in Message#parse_header Rich Lane
2009-12-31 23:36 ` [sup-devel] [PATCH 10/10] decode header fields of enclosed messages Rich Lane
2010-01-01 20:59 ` [sup-devel] [PATCH 01/10] open mail source files as binary Anthony Martinez
2010-01-01 21:43 ` William Morgan
2010-01-01 21:48 ` Rich Lane
2010-01-01 21:57 ` William Morgan
2010-01-02 1:16 ` Anthony Martinez
2010-01-01 19:09 ` [sup-devel] Ruby 1.9 encoding fixes William Morgan
[not found] ` <1262442839-sup-7738@peray>
2010-01-03 14:48 ` William Morgan
2010-01-03 15:48 ` Nicolas Pouillard
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=1262302618-20503-6-git-send-email-rlane@club.cc.cmu.edu \
--to=rlane@club.cc.cmu.edu \
--cc=sup-devel@rubyforge.org \
/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