38ae064b8a
Sam Ruby has been doing a bang-up job fixing the bugs in REXML. Who knows when these improvements will trickle down to vendor distributions of Ruby. In the meantime, let's bundle the latest version of REXML with Instiki. We check the version number of the bundled REXML against that of the System REXML, and use whichever is later.
30 lines
654 B
Ruby
30 lines
654 B
Ruby
module REXML
|
|
module Encoding
|
|
# Convert from UTF-8
|
|
def encode_ascii content
|
|
array_utf8 = content.unpack('U*')
|
|
array_enc = []
|
|
array_utf8.each do |num|
|
|
if num <= 0x7F
|
|
array_enc << num
|
|
else
|
|
# Numeric entity (&#nnnn;); shard by Stefan Scholl
|
|
array_enc.concat "&\##{num};".unpack('C*')
|
|
end
|
|
end
|
|
array_enc.pack('C*')
|
|
end
|
|
|
|
# Convert to UTF-8
|
|
def decode_ascii(str)
|
|
str.unpack('C*').pack('U*')
|
|
end
|
|
|
|
register("US-ASCII") do |obj|
|
|
class << obj
|
|
alias decode decode_ascii
|
|
alias encode encode_ascii
|
|
end
|
|
end
|
|
end
|
|
end
|