]> git.wh0rd.org - tt-rss.git/blobdiff - lib/dojo/data/util/filter.js
build custom layer of Dojo to speed up loading of tt-rss (refs #293)
[tt-rss.git] / lib / dojo / data / util / filter.js
index dcdc050e66a14f11e4ae0a07800c0ddea070adc6..d23e63ade501def879801fdcc9a81b0e6a4a3889 100644 (file)
@@ -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
+       }
+       
 };
+
 }