punycode: Update to v1.0.0
authorMathias Bynens <mathias@qiwi.be>
Fri, 24 Feb 2012 15:05:10 +0000 (16:05 +0100)
committerisaacs <i@izs.me>
Mon, 27 Feb 2012 22:03:18 +0000 (14:03 -0800)
lib/punycode.js

index 315f1e4..c3791e3 100644 (file)
@@ -1,9 +1,4 @@
-/*!
- * Punycode.js <http://mths.be/punycode>
- * Copyright 2011 Mathias Bynens <http://mathiasbynens.be/>
- * Available under MIT license <http://mths.be/mit>
- */
-
+/*! http://mths.be/punycode by @mathias */
 ;(function(root) {
 
        /**
@@ -34,7 +29,7 @@
        delimiter = '-', // '\x2D'
 
        /** Regular expressions */
-       regexNonASCII = /[^ -~]/, // matches unprintable ASCII chars + non-ASCII chars
+       regexNonASCII = /[^ -~]/, // unprintable ASCII chars + non-ASCII chars
        regexPunycode = /^xn--/,
 
        /** Error messages */
        }
 
        /**
-        * Creates an array containing the decimal code points of each character in
-        * the string.
-        * @see `punycode.utf16.encode`
-        * @see <http://tools.ietf.org/html/rfc2781>
-        * @memberOf punycode.utf16
+        * Creates an array containing the decimal code points of each Unicode
+        * character in the string. While JavaScript uses UCS-2 internally,
+        * this function will convert a pair of surrogate halves (each of which
+        * UCS-2 exposes as separate characters) into a single code point,
+        * matching UTF-16.
+        * @see `punycode.ucs2.encode`
+        * @see <http://mathiasbynens.be/notes/javascript-encoding>
+        * @memberOf punycode.ucs2
         * @name decode
-        * @param {String} string The Unicode input string.
-        * @returns {Array} The new array.
+        * @param {String} string The Unicode input string (UCS-2).
+        * @returns {Array} The new array of code points.
         */
        function utf16decode(string) {
                var output = [],
         * @memberOf punycode.utf16
         * @name encode
         * @param {Array} codePoints The array of decimal code points.
-        * @returns {String} The new string.
+        * @returns {String} The new Unicode string (UCS-2).
         */
        function utf16encode(array) {
                return map(array, function(value) {
                                }
 
                                i += digit * w;
-                               t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
+                               t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
 
                                if (digit < t) {
                                        break;
                                if (currentValue == n) {
                                        // Represent delta as a generalized variable-length integer
                                        for (q = delta, k = base; /* no condition */; k += base) {
-                                               t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;
+                                               t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
                                                if (q < t) {
                                                        break;
                                                }
                 * @memberOf punycode
                 * @type String
                 */
-               'version': '0.2.1',
+               'version': '1.0.0',
                /**
                 * An object of methods to convert from JavaScript's internal character
-                * representation to Unicode and back.
+                * representation (UCS-2) to decimal Unicode code points, and back.
+                * @see <http://mathiasbynens.be/notes/javascript-encoding>
                 * @memberOf punycode
                 * @type Object
                 */