define(['../lang/toString'], function(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);
});
}
return escapeUnicode;
});