aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorey Jewett <cj@syntheticplayground.com>2007-04-13 17:48:04 +0000
committerCorey Jewett <cj@syntheticplayground.com>2007-04-13 17:48:04 +0000
commit2fac5e7949ec342c450b2e032509eed0e35cf1ff (patch)
tree783ec8ce9351a1a59279f5c6bb0aa3c0ab3d2fe1
parentbfe5f891068af9f86d7be288ad0da7b442427d9c (diff)
downloadjquery-2fac5e7949ec342c450b2e032509eed0e35cf1ff.tar.gz
jquery-2fac5e7949ec342c450b2e032509eed0e35cf1ff.zip
Add RegExp style xpath attributes and testcases. e.g. [@foo =~ /bar/i] and [@foo !~ /bar/]
-rw-r--r--src/selector/selector.js5
-rw-r--r--src/selector/selectorTest.js4
2 files changed, 7 insertions, 2 deletions
diff --git a/src/selector/selector.js b/src/selector/selector.js
index 48c6e1573..d6d87c03c 100644
--- a/src/selector/selector.js
+++ b/src/selector/selector.js
@@ -56,6 +56,9 @@ jQuery.extend({
"$=": "z&&z.substr(z.length - m[4].length,m[4].length)==m[4]",
"*=": "z&&z.indexOf(m[4])>=0",
"": "z",
+ // these are for evaling in a regexp.
+ "=~": "eval(m[4]).test(z)",
+ "!~": "!eval(m[4]).test(z)",
_resort: function(m){
return ["", m[1], m[3], m[2], m[5]];
},
@@ -67,7 +70,7 @@ jQuery.extend({
// The regular expressions that power the parsing engine
parse: [
// Match: [@value='test'], [@foo]
- /^\[ *(@)([\w-]+) *([!*$^=]*) *('?"?)(.*?)\4 *\]/,
+ /^\[ *(@)([\w-]+) *([!*$^=!~]*) *('?"?)(.*?)\4 *\]/,
// Match: [div], [div p]
/^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/,
diff --git a/src/selector/selectorTest.js b/src/selector/selectorTest.js
index 857d9c7b0..23f44c30d 100644
--- a/src/selector/selectorTest.js
+++ b/src/selector/selectorTest.js
@@ -183,7 +183,7 @@ test("pseudo (:) selectors", function() {
});
test("basic xpath", function() {
- expect(15);
+ expect(17);
ok( jQuery.find("//*").length >= 30, "All Elements (//*)" );
t( "All Div Elements", "//div", ["main","foo"] );
t( "Absolute Path", "/html/body", ["body"] );
@@ -194,6 +194,8 @@ test("basic xpath", function() {
t( "All Children, Implicit", "//code/", ["anchor1","anchor2"] );
t( "Attribute Exists", "//a[@title]", ["google"] );
t( "Attribute Equals", "//a[@rel='bookmark']", ["simon1"] );
+ t( "Attribute RegExp", "//a[@rel=~/BooKmaRk/i]", ["simon1"] );
+ t( "Attribute Inverse RegExp", "//a[@id!~/mon/]", ["google","groups","anchor1","mark","yahoo","anchor2"] );
t( "Parent Axis", "//p/..", ["main","foo"] );
t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","sndp","en","sap"] );
t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","lengthtest","sndp","en","sap"] );