You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.3 KiB
67 lines
1.3 KiB
'use strict'; |
|
|
|
var chars = {}, unesc, temp; |
|
|
|
function reverse(object, prepender) { |
|
return Object.keys(object).reduce(function(reversed, key) { |
|
var newKey = prepender ? prepender + key : key; // Optionally prepend a string to key. |
|
reversed[object[key]] = newKey; // Swap key and value. |
|
return reversed; // Return the result. |
|
}, {}); |
|
} |
|
|
|
/** |
|
* Regex for common characters |
|
*/ |
|
|
|
chars.escapeRegex = { |
|
'?': /\?/g, |
|
'@': /\@/g, |
|
'!': /\!/g, |
|
'+': /\+/g, |
|
'*': /\*/g, |
|
'(': /\(/g, |
|
')': /\)/g, |
|
'[': /\[/g, |
|
']': /\]/g |
|
}; |
|
|
|
/** |
|
* Escape characters |
|
*/ |
|
|
|
chars.ESC = { |
|
'?': '__UNESC_QMRK__', |
|
'@': '__UNESC_AMPE__', |
|
'!': '__UNESC_EXCL__', |
|
'+': '__UNESC_PLUS__', |
|
'*': '__UNESC_STAR__', |
|
',': '__UNESC_COMMA__', |
|
'(': '__UNESC_LTPAREN__', |
|
')': '__UNESC_RTPAREN__', |
|
'[': '__UNESC_LTBRACK__', |
|
']': '__UNESC_RTBRACK__' |
|
}; |
|
|
|
/** |
|
* Unescape characters |
|
*/ |
|
|
|
chars.UNESC = unesc || (unesc = reverse(chars.ESC, '\\')); |
|
|
|
chars.ESC_TEMP = { |
|
'?': '__TEMP_QMRK__', |
|
'@': '__TEMP_AMPE__', |
|
'!': '__TEMP_EXCL__', |
|
'*': '__TEMP_STAR__', |
|
'+': '__TEMP_PLUS__', |
|
',': '__TEMP_COMMA__', |
|
'(': '__TEMP_LTPAREN__', |
|
')': '__TEMP_RTPAREN__', |
|
'[': '__TEMP_LTBRACK__', |
|
']': '__TEMP_RTBRACK__' |
|
}; |
|
|
|
chars.TEMP = temp || (temp = reverse(chars.ESC_TEMP)); |
|
|
|
module.exports = chars;
|
|
|