1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Document base64

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
dave 2004-01-20 05:44:56 +00:00
parent e10e26d329
commit 66186dd081
3 changed files with 62 additions and 0 deletions

View file

@ -1,3 +1,7 @@
Tue Jan 20 14:43:17 2004 Dave Thomas <dave@pragprog.com>
* lib/base64.rb: Add RDoc
Tue Jan 20 14:25:51 2004 Dave Thomas <dave@pragprog.com>
* lib/abbrev.rb: Add RDoc

View file

@ -6,10 +6,13 @@
# But for now
abbrev.rb
base64.rb
benchmark.rb
cgi.rb
complex.rb
date.rb
English.rb
fileutils.rb
find.rb
generator.rb

View file

@ -1,9 +1,46 @@
require "kconv"
# Perform encoding and decoding of binary data using a Base64
# representation. This library rather unfortunately loads its four
# methods directly into the top level namespace.
#
# require "base64"
#
# enc = encode64('Send reinforcements')
# puts enc
# plain = decode64(enc)
# puts plain
# Returns the Base64-decoded version of \obj{str}.
#
# require 'base64'
# str = 'VGhpcyBpcyBsaW5lIG9uZQpUaGlzIG' +
# 'lzIGxpbmUgdHdvClRoaXMgaXMgbGlu' +
# 'ZSB0aHJlZQpBbmQgc28gb24uLi4K'
# puts decode64(str)
#
# <i>Generates:</i>
#
# This is line one
# This is line two
# This is line three
# And so on...
def decode64(str)
str.unpack("m")[0]
end
# Decodes text formatted using a subset of RFC2047 (the one used for
# mime-encoding mail headers). Only supports an encoding type of 'b'
# (base 64), and only supports the character sets ISO-2022-JP and
# SHIFT_JIS (so the only two encoded word sequences recognized are
# <tt>=?ISO-2022-JP?B?...=</tt> and
# <tt>=?SHIFT_JIS?B?...=</tt>). Recognition of these sequences is case
# insensitive.
def decode_b(str)
str.gsub!(/=\?ISO-2022-JP\?B\?([!->@-~]+)\?=/i) {
decode64($1)
@ -18,10 +55,28 @@ def decode_b(str)
str
end
# Returns the Base64-encoded version of \obj{str}.
#
# require 'base64'
# str = "Once\nupon\na\ntime." #!sh!
# enc = encode64(str)
# decode64(enc)
def encode64(bin)
[bin].pack("m")
end
# Prints the Base64 encoded version of _bin_ (a +String+) in lines of
# _len_ (default 60) characters.
#
# require 'base64'
# b64encode("Now is the time for all good coders\nto learn Ruby")
#
# Generates
#
# Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g
# UnVieQ==
def b64encode(bin, len = 60)
encode64(bin).scan(/.{1,#{len}}/o) do
print $&, "\n"