Browse Source

punycode: Update to v0.1.1.

v0.7.4-release
Mathias Bynens 13 years ago
committed by Ben Noordhuis
parent
commit
897208e06d
  1. 46
      lib/punycode.js

46
lib/punycode.js

@ -34,6 +34,10 @@
initialN = 128, // 0x80
delimiter = '-', // '\x2D'
/** Regular expressions */
regexASCII = /[^\x20-\x7e]/,
regexPunycode = /^xn--/,
/** Error messages */
errors = {
'overflow': 'Overflow: input needs wider integers to process.',
@ -87,7 +91,7 @@
*/
function mapDomain(string, fn) {
var glue = '.';
return map(string.toLowerCase().split(glue), fn).join(glue);
return map(string.split(glue), fn).join(glue);
}
/**
@ -196,6 +200,7 @@
/**
* Converts a basic code point to lowercase is `flag` is falsy, or to
* uppercase if `flag` is truthy. The code point is unchanged if it's
* caseless. The behavior is undefined if `codePoint` is not a basic code
* point.
* @private
@ -482,22 +487,6 @@
return output.join('');
}
/**
* Converts a Unicode string representing a domain name to Punycode. Only the
* non-ASCII parts of the domain name will be converted, i.e. it doesn't
* matter if you call it with a domain that's already in ASCII.
* @memberOf Punycode
* @param {String} domain The domain name to convert, as a Unicode string.
* @returns {String} The Punycode representation of the given domain name.
*/
function toASCII(domain) {
return mapDomain(domain, function(string) {
return string.match(/[^a-zA-Z0-9-]/)
? 'xn--' + encode(string)
: string;
});
}
/**
* Converts a Punycode string representing a domain name to Unicode. Only the
* Punycoded parts of the domain name will be converted, i.e. it doesn't
@ -510,8 +499,24 @@
*/
function toUnicode(domain) {
return mapDomain(domain, function(string) {
return string.match(/^xn--/)
? decode(string.slice(4))
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
});
}
/**
* Converts a Unicode string representing a domain name to Punycode. Only the
* non-ASCII parts of the domain name will be converted, i.e. it doesn't
* matter if you call it with a domain that's already in ASCII.
* @memberOf Punycode
* @param {String} domain The domain name to convert, as a Unicode string.
* @returns {String} The Punycode representation of the given domain name.
*/
function toASCII(domain) {
return mapDomain(domain, function(string) {
return regexASCII.test(string)
? 'xn--' + encode(string)
: string;
});
}
@ -520,11 +525,10 @@
/** Define the public API */
Punycode = {
'version': '0.0.1337',
'version': '0.1.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation to Unicode and back.
* @static
* @memberOf Punycode
* @type Object
*/

Loading…
Cancel
Save