Changeset 456:371df097a76e
- Timestamp:
- 06/09/07 23:28:56 (18 months ago)
- Author:
- ser
- Branch:
- default
- convert_revision:
- svn:877f57f0-f5bd-0310-8c13-bb9e5bdefd87/trunk@1255
- Message:
-
r1279@bean: ser | 2007-06-09 23:19:02 -0400
Fixes ticket:89 -- encoding CP-1252 was broken. ISO-8859-15 had the same
problem.
Also in this patch is a fix to merge.rb (unused, but it should at least
contain no errors), and a unit test for ticket:88.
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r455
|
r456
|
|
| 41 | 41 | Name: svn:executable |
| 42 | 42 | + * |
| | 43 | =end |
| 43 | 44 | |
| 44 | 45 | |
| 45 | | |
-
|
r287
|
r456
|
|
| 4 | 4 | module REXML |
| 5 | 5 | module Encoding |
| 6 | | @@__REXML_encoding_methods = %q~ |
| | 6 | register( "CP-1252" ) do |o| |
| | 7 | class << o |
| | 8 | alias encode encode_cp1252 |
| | 9 | alias decode decode_cp1252 |
| | 10 | end |
| | 11 | end |
| | 12 | |
| 7 | 13 | # Convert from UTF-8 |
| 8 | | def encode content |
| | 14 | def encode_cp1252(content) |
| 9 | 15 | array_utf8 = content.unpack('U*') |
| 10 | 16 | array_enc = [] |
| … |
… |
|
| 55 | 61 | |
| 56 | 62 | # Convert to UTF-8 |
| 57 | | def decode(str) |
| | 63 | def decode_cp1252(str) |
| 58 | 64 | array_latin9 = str.unpack('C*') |
| 59 | 65 | array_enc = [] |
| … |
… |
|
| 94 | 100 | array_enc.pack('U*') |
| 95 | 101 | end |
| 96 | | ~ |
| 97 | 102 | end |
| 98 | 103 | end |
-
|
r288
|
r456
|
|
| 4 | 4 | module REXML |
| 5 | 5 | module Encoding |
| 6 | | @@__REXML_encoding_methods = %q~ |
| | 6 | register("ISO-8859-15") do |o| |
| | 7 | alias encode to_iso_8859_15 |
| | 8 | alias decode from_iso_8859_15 |
| | 9 | end |
| | 10 | |
| 7 | 11 | # Convert from UTF-8 |
| 8 | | def to_iso_8859_15 content |
| | 12 | def to_iso_8859_15(content) |
| 9 | 13 | array_utf8 = content.unpack('U*') |
| 10 | 14 | array_enc = [] |
| … |
… |
|
| 65 | 69 | array_enc.pack('U*') |
| 66 | 70 | end |
| 67 | | ~ |
| 68 | 71 | end |
| 69 | 72 | end |
-
|
r455
|
r456
|
|
| 1209 | 1209 | assert_equal( sanity1, sanity2 ) |
| 1210 | 1210 | end |
| | 1211 | |
| | 1212 | def test_ticket_88 |
| | 1213 | doc = REXML::Document.new("<?xml version=\"1.0\" encoding=\"shift_jis\"?>") |
| | 1214 | assert_equal("<?xml version='1.0' encoding='SHIFT_JIS'?>", doc.to_s) |
| | 1215 | doc = REXML::Document.new("<?xml version = \"1.0\" encoding = \"shift_jis\"?>") |
| | 1216 | assert_equal("<?xml version='1.0' encoding='SHIFT_JIS'?>", doc.to_s) |
| | 1217 | end |
| 1211 | 1218 | end |
-
|
r390
|
r456
|
|
| 68 | 68 | assert_equal( doc.elements['a'].text, "\303\277" ) |
| 69 | 69 | end |
| | 70 | |
| | 71 | |
| | 72 | def test_ticket_89 |
| | 73 | doc = Document.new <<-EOL |
| | 74 | <?xml version="1.0" encoding="CP-1252" ?> |
| | 75 | <xml><foo></foo></xml> |
| | 76 | EOL |
| | 77 | |
| | 78 | REXML::Document.new doc |
| | 79 | end |
| 70 | 80 | end |