| /* -*- Mode: js; js-indent-level: 2; -*- */ |
| /* |
| * Copyright 2011 Mozilla Foundation and contributors |
| * Licensed under the New BSD license. See LICENSE or: |
| * http://opensource.org/licenses/BSD-3-Clause |
| */ |
| if (typeof define !== 'function') { |
| var define = require('amdefine')(module, require); |
| } |
| define(function (require, exports, module) { |
| |
| var charToIntMap = {}; |
| var intToCharMap = {}; |
| |
| 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' |
| .split('') |
| .forEach(function (ch, index) { |
| charToIntMap[ch] = index; |
| intToCharMap[index] = ch; |
| }); |
| |
| /** |
| * Encode an integer in the range of 0 to 63 to a single base 64 digit. |
| */ |
| exports.encode = function base64_encode(aNumber) { |
| if (aNumber in intToCharMap) { |
| return intToCharMap[aNumber]; |
| } |
| throw new TypeError("Must be between 0 and 63: " + aNumber); |
| }; |
| |
| /** |
| * Decode a single base 64 digit to an integer. |
| */ |
| exports.decode = function base64_decode(aChar) { |
| if (aChar in charToIntMap) { |
| return charToIntMap[aChar]; |
| } |
| throw new TypeError("Not a valid base 64 digit: " + aChar); |
| }; |
| |
| }); |