[ Index ]
 

Code source de PRADO 3.0.6

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/tests/test_tools/selenium/core/lib/cssQuery/src/ -> cssQuery-level2.js (source)

   1  /*
   2      cssQuery, version 2.0.2 (2005-08-19)
   3      Copyright: 2004-2005, Dean Edwards (http://dean.edwards.name/)
   4      License: http://creativecommons.org/licenses/LGPL/2.1/
   5  */
   6  
   7  cssQuery.addModule("css-level2", function() {
   8  
   9  // -----------------------------------------------------------------------
  10  // selectors
  11  // -----------------------------------------------------------------------
  12  
  13  // child selector
  14  selectors[">"] = function($results, $from, $tagName, $namespace) {
  15      var $element, i, j;
  16      for (i = 0; i < $from.length; i++) {
  17          var $subset = childElements($from[i]);
  18          for (j = 0; ($element = $subset[j]); j++)
  19              if (compareTagName($element, $tagName, $namespace))
  20                  $results.push($element);
  21      }
  22  };
  23  
  24  // sibling selector
  25  selectors["+"] = function($results, $from, $tagName, $namespace) {
  26      for (var i = 0; i < $from.length; i++) {
  27          var $element = nextElementSibling($from[i]);
  28          if ($element && compareTagName($element, $tagName, $namespace))
  29              $results.push($element);
  30      }
  31  };
  32  
  33  // attribute selector
  34  selectors["@"] = function($results, $from, $attributeSelectorID) {
  35      var $test = attributeSelectors[$attributeSelectorID].test;
  36      var $element, i;
  37      for (i = 0; ($element = $from[i]); i++)
  38          if ($test($element)) $results.push($element);
  39  };
  40  
  41  // -----------------------------------------------------------------------
  42  // pseudo-classes
  43  // -----------------------------------------------------------------------
  44  
  45  pseudoClasses["first-child"] = function($element) {
  46      return !previousElementSibling($element);
  47  };
  48  
  49  pseudoClasses["lang"] = function($element, $code) {
  50      $code = new RegExp("^" + $code, "i");
  51      while ($element && !$element.getAttribute("lang")) $element = $element.parentNode;
  52      return $element && $code.test($element.getAttribute("lang"));
  53  };
  54  
  55  // -----------------------------------------------------------------------
  56  //  attribute selectors
  57  // -----------------------------------------------------------------------
  58  
  59  // constants
  60  AttributeSelector.NS_IE = /\\:/g;
  61  AttributeSelector.PREFIX = "@";
  62  // properties
  63  AttributeSelector.tests = {};
  64  // methods
  65  AttributeSelector.replace = function($match, $attribute, $namespace, $compare, $value) {
  66      var $key = this.PREFIX + $match;
  67      if (!attributeSelectors[$key]) {
  68          $attribute = this.create($attribute, $compare || "", $value || "");
  69          // store the selector
  70          attributeSelectors[$key] = $attribute;
  71          attributeSelectors.push($attribute);
  72      }
  73      return attributeSelectors[$key].id;
  74  };
  75  AttributeSelector.parse = function($selector) {
  76      $selector = $selector.replace(this.NS_IE, "|");
  77      var $match;
  78      while ($match = $selector.match(this.match)) {
  79          var $replace = this.replace($match[0], $match[1], $match[2], $match[3], $match[4]);
  80          $selector = $selector.replace(this.match, $replace);
  81      }
  82      return $selector;
  83  };
  84  AttributeSelector.create = function($propertyName, $test, $value) {
  85      var $attributeSelector = {};
  86      $attributeSelector.id = this.PREFIX + attributeSelectors.length;
  87      $attributeSelector.name = $propertyName;
  88      $test = this.tests[$test];
  89      $test = $test ? $test(this.getAttribute($propertyName), getText($value)) : false;
  90      $attributeSelector.test = new Function("e", "return " + $test);
  91      return $attributeSelector;
  92  };
  93  AttributeSelector.getAttribute = function($name) {
  94      switch ($name.toLowerCase()) {
  95          case "id":
  96              return "e.id";
  97          case "class":
  98              return "e.className";
  99          case "for":
 100              return "e.htmlFor";
 101          case "href":
 102              if (isMSIE) {
 103                  // IE always returns the full path not the fragment in the href attribute
 104                  //  so we RegExp it out of outerHTML. Opera does the same thing but there
 105                  //  is no way to get the original attribute.
 106                  return "String((e.outerHTML.match(/href=\\x22?([^\\s\\x22]*)\\x22?/)||[])[1]||'')";
 107              }
 108      }
 109      return "e.getAttribute('" + $name.replace($NAMESPACE, ":") + "')";
 110  };
 111  
 112  // -----------------------------------------------------------------------
 113  //  attribute selector tests
 114  // -----------------------------------------------------------------------
 115  
 116  AttributeSelector.tests[""] = function($attribute) {
 117      return $attribute;
 118  };
 119  
 120  AttributeSelector.tests["="] = function($attribute, $value) {
 121      return $attribute + "==" + Quote.add($value);
 122  };
 123  
 124  AttributeSelector.tests["~="] = function($attribute, $value) {
 125      return "/(^| )" + regEscape($value) + "( |$)/.test(" + $attribute + ")";
 126  };
 127  
 128  AttributeSelector.tests["|="] = function($attribute, $value) {
 129      return "/^" + regEscape($value) + "(-|$)/.test(" + $attribute + ")";
 130  };
 131  
 132  // -----------------------------------------------------------------------
 133  //  parsing
 134  // -----------------------------------------------------------------------
 135  
 136  // override parseSelector to parse out attribute selectors
 137  var _parseSelector = parseSelector;
 138  parseSelector = function($selector) {
 139      return _parseSelector(AttributeSelector.parse($selector));
 140  };
 141  
 142  }); // addModule


Généré le : Sun Feb 25 21:07:04 2007 par Balluche grâce à PHPXref 0.7