summaryrefslogtreecommitdiff
path: root/lib/dojo/data/util/filter.js.uncompressed.js
diff options
context:
space:
mode:
authorRichard Beales <[email protected]>2013-03-18 07:32:01 +0000
committerRichard Beales <[email protected]>2013-03-18 07:32:01 +0000
commit7c97d17aaf373339a8bcd917ad59ca6018148f0d (patch)
tree5a3c04f0f9529be392c1263d3feb75806eb43797 /lib/dojo/data/util/filter.js.uncompressed.js
parent70db7424e7068701e60cc5bcdfe8f858be508179 (diff)
parentc670a80ddd9b03bd4ea6d940a9ed682fd26248d7 (diff)
Merge remote-tracking branch 'upstream/master'
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;
+});