yzt
2023-05-26 2f70f6727314edd84d8ec2bfe3ce832803f1ea77
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
define(["../../_base/lang"], function(lang){
    // module:
    //      dojo/data/util/filter
    // summary:
    //      TODOC
 
var filter = {};
lang.setObject("dojo.data.util.filter", filter);
 
filter.patternToRegExp = function(/*String*/pattern, /*boolean?*/ ignoreCase){
    // summary:
    //      Helper function to convert a simple pattern to a regular expression for matching.
    // description:
    //      Returns a regular expression object that conforms to the defined conversion rules.
    //      For example:
    //
    //      - ca*   -> /^ca.*$/
    //      - *ca*  -> /^.*ca.*$/
    //      - *c\*a*  -> /^.*c\*a.*$/
    //      - *c\*a?*  -> /^.*c\*a..*$/
    //
    //      and so on.
    // pattern: string
    //      A simple matching pattern to convert that follows basic rules:
    //
    //      - * Means match anything, so ca* means match anything starting with ca
    //      - ? Means match single character.  So, b?b will match to bob and bab, and so on.
    //      - \ is an escape character.  So for example, \* means do not treat * as a match, but literal character *.
    //
    //      To use a \ as a character in the string, it must be escaped.  So in the pattern it should be
    //      represented by \\ to be treated as an ordinary \ character instead of an escape.
    // ignoreCase:
    //      An optional flag to indicate if the pattern matching should be treated as case-sensitive or not when comparing
    //      By default, it is assumed case sensitive.
 
    var rxp = "^";
    var c = null;
    for(var i = 0; i < pattern.length; i++){
        c = pattern.charAt(i);
        switch(c){
            case '\\':
                rxp += c;
                i++;
                rxp += pattern.charAt(i);
                break;
            case '*':
                rxp += ".*"; break;
            case '?':
                rxp += "."; break;
            case '$':
            case '^':
            case '/':
            case '+':
            case '.':
            case '|':
            case '(':
            case ')':
            case '{':
            case '}':
            case '[':
            case ']':
                rxp += "\\"; //fallthrough
            default:
                rxp += c;
        }
    }
    rxp += "$";
    if(ignoreCase){
        return new RegExp(rxp,"mi"); //RegExp
    }else{
        return new RegExp(rxp,"m"); //RegExp
    }
 
};
 
return filter;
});