UNPKG

punycode2

Version:

Modular version of punycode package

30 lines (27 loc) 936 B
"use strict"; var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators /** * A simple `Array#map`-like wrapper to work with domain name strings or email * addresses. * @private * @param {String} domain The domain name or email address. * @param {Function} callback The function that gets called for every * character. * @returns {Array} A new string of characters returned by the callback * function. */ module.exports = function (string, fn) { var parts = string.split("@"); var result = ""; if (parts.length > 1) { // In email addresses, only the domain name should be punycoded. Leave // the local part (i.e. everything up to `@`) intact. result = parts[0] + "@"; string = parts[1]; } // Avoid `split(regex)` for IE8 compatibility. See #17. string = string.replace(regexSeparators, "."); var labels = string.split("."); var encoded = labels.map(fn).join("."); return result + encoded; };