summaryrefslogtreecommitdiff
path: root/lib/dojo/data/util/filter.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dojo/data/util/filter.js')
-rw-r--r--lib/dojo/data/util/filter.js108
1 files changed, 66 insertions, 42 deletions
diff --git a/lib/dojo/data/util/filter.js b/lib/dojo/data/util/filter.js
index dcdc050e6..d23e63ade 100644
--- a/lib/dojo/data/util/filter.js
+++ b/lib/dojo/data/util/filter.js
@@ -5,48 +5,72 @@
*/
-if(!dojo._hasResource["dojo.data.util.filter"]){
-dojo._hasResource["dojo.data.util.filter"]=true;
+if(!dojo._hasResource["dojo.data.util.filter"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojo.data.util.filter"] = true;
dojo.provide("dojo.data.util.filter");
-dojo.data.util.filter.patternToRegExp=function(_1,_2){
-var _3="^";
-var c=null;
-for(var i=0;i<_1.length;i++){
-c=_1.charAt(i);
-switch(c){
-case "\\":
-_3+=c;
-i++;
-_3+=_1.charAt(i);
-break;
-case "*":
-_3+=".*";
-break;
-case "?":
-_3+=".";
-break;
-case "$":
-case "^":
-case "/":
-case "+":
-case ".":
-case "|":
-case "(":
-case ")":
-case "{":
-case "}":
-case "[":
-case "]":
-_3+="\\";
-default:
-_3+=c;
-}
-}
-_3+="$";
-if(_2){
-return new RegExp(_3,"mi");
-}else{
-return new RegExp(_3,"m");
-}
+
+dojo.data.util.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
+ }
+
};
+
}