summaryrefslogtreecommitdiff
path: root/lib/dojo/data/util/filter.js.uncompressed.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dojo/data/util/filter.js.uncompressed.js')
-rw-r--r--lib/dojo/data/util/filter.js.uncompressed.js77
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/dojo/data/util/filter.js.uncompressed.js b/lib/dojo/data/util/filter.js.uncompressed.js
new file mode 100644
index 000000000..ec3e99ff1
--- /dev/null
+++ b/lib/dojo/data/util/filter.js.uncompressed.js
@@ -0,0 +1,77 @@
+define("dojo/data/util/filter", ["../../_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;
+});