import toString from '../lang/toString';

/**
 * Escape string into unicode sequences
 */
function escapeUnicode(str, shouldEscapePrintable) {
    str = toString(str);
    return str.replace(/[\s\S]/g, function(ch) {
        // skip printable ASCII chars if we should not escape them
        if (!shouldEscapePrintable && /[\x20-\x7E]/.test(ch)) {
            return ch;
        }
        // we use "000" and slice(-4) for brevity, need to pad zeros,
        // unicode escape always have 4 chars after "\u"
        return `\\u${`000${ch.charCodeAt(0).toString(16)}`.slice(-4)}`;
    });
}

export default escapeUnicode;
