summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordave <dave@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-20 05:44:56 +0000
committerdave <dave@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-01-20 05:44:56 +0000
commit9e3cf35690037a2cf74d889c22e7c828e1a036f4 (patch)
treef2ca6c3af953c146ff0ebb88ddf1a014917d555d
parent6bdd34522a5b33c063119f37fdd0713f166176d1 (diff)
Document base64
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@5514 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--lib/.document3
-rw-r--r--lib/base64.rb55
3 files changed, 62 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 398183915cc..e5e1a66b3af 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/lib/.document b/lib/.document
index d01d7d7f8fb..d50270f49a8 100644
--- a/lib/.document
+++ b/lib/.document
@@ -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
diff --git a/lib/base64.rb b/lib/base64.rb
index d7461d82e7b..0e14dde9f7f 100644
--- a/lib/base64.rb
+++ b/lib/base64.rb
@@ -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"