1 | // Copyright 2011 Mark Cavage, Inc. All rights reserved.
|
2 |
|
3 | /**
|
4 | * RFC 2254 Escaping of filter strings
|
5 | *
|
6 | * Raw Escaped
|
7 | * (o=Parens (R Us)) (o=Parens \28R Us\29)
|
8 | * (cn=star*) (cn=star\2A)
|
9 | * (filename=C:\MyFile) (filename=C:\5cMyFile)
|
10 | *
|
11 | * Use substr_filter to avoid having * ecsaped.
|
12 | *
|
13 | * @author [Austin King](https://github.com/ozten)
|
14 | */
|
15 | exports.escape = function (inp) {
|
16 | if (typeof (inp) === 'string') {
|
17 | var esc = '';
|
18 | for (var i = 0; i < inp.length; i++) {
|
19 | switch (inp[i]) {
|
20 | case '*':
|
21 | esc += '\\2a';
|
22 | break;
|
23 | case '(':
|
24 | esc += '\\28';
|
25 | break;
|
26 | case ')':
|
27 | esc += '\\29';
|
28 | break;
|
29 | case '\\':
|
30 | esc += '\\5c';
|
31 | break;
|
32 | case '\0':
|
33 | esc += '\\00';
|
34 | break;
|
35 | default:
|
36 | esc += inp[i];
|
37 | break;
|
38 | }
|
39 | }
|
40 | return esc;
|
41 |
|
42 | } else {
|
43 | return inp;
|
44 | }
|
45 | };
|