Esempio n. 1
0
 elementMatches(node, selector, matcher = null) {
     if (this.isElementNode(node) && selector === '*') {
         return true;
     }
     var result = false;
     if (selector && selector.charAt(0) == "#") {
         result = this.getAttribute(node, 'id') == selector.substring(1);
     }
     else if (selector) {
         var result = false;
         if (matcher == null) {
             matcher = new SelectorMatcher();
             matcher.addSelectables(CssSelector.parse(selector));
         }
         var cssSelector = new CssSelector();
         cssSelector.setElement(this.tagName(node));
         if (node.attribs) {
             for (var attrName in node.attribs) {
                 cssSelector.addAttribute(attrName, node.attribs[attrName]);
             }
         }
         var classList = this.classList(node);
         for (var i = 0; i < classList.length; i++) {
             cssSelector.addClassName(classList[i]);
         }
         matcher.match(cssSelector, function (selector, cb) { result = true; });
     }
     return result;
 }
Esempio n. 2
0
 function addSelectable() {
   var matcher = new SelectorMatcher();
   for (var i=0; i<count; i++) {
     matcher.addSelectables(fixedSelectors[i], i);
   }
   return matcher;
 }
Esempio n. 3
0
export function main() {
  BrowserDomAdapter.makeCurrent();
  var count = getIntParameter('selectors');

  var fixedMatcher;
  var fixedSelectorStrings = [];
  var fixedSelectors = [];
  for (var i=0; i<count; i++) {
    ListWrapper.push(fixedSelectorStrings, randomSelector());
  }
  for (var i=0; i<count; i++) {
    ListWrapper.push(fixedSelectors, CssSelector.parse(fixedSelectorStrings[i]));
  }
  fixedMatcher = new SelectorMatcher();
  for (var i=0; i<count; i++) {
    fixedMatcher.addSelectables(fixedSelectors[i], i);
  }

  function parse() {
    var result = [];
    for (var i=0; i<count; i++) {
      ListWrapper.push(result, CssSelector.parse(fixedSelectorStrings[i]));
    }
    return result;
  }

  function addSelectable() {
    var matcher = new SelectorMatcher();
    for (var i=0; i<count; i++) {
      matcher.addSelectables(fixedSelectors[i], i);
    }
    return matcher;
  }

  function match() {
    var matchCount = 0;
    for (var i=0; i<count; i++) {
      fixedMatcher.match(fixedSelectors[i][0], (selector, selected) => {
        matchCount += selected;
      });
    }
    return matchCount;
  }

  bindAction('#parse', parse);
  bindAction('#addSelectable', addSelectable);
  bindAction('#match', match);
}
 Component.create = function (directives) {
     if (directives.length === 0 || !directives[0].directive.isComponent) {
         return EMPTY_COMPONENT;
     }
     var matcher = new selector_1.SelectorMatcher();
     var ngContentSelectors = directives[0].directive.template.ngContentSelectors;
     var wildcardNgContentIndex = null;
     for (var i = 0; i < ngContentSelectors.length; i++) {
         var selector = ngContentSelectors[i];
         if (lang_1.StringWrapper.equals(selector, '*')) {
             wildcardNgContentIndex = i;
         }
         else {
             matcher.addSelectables(selector_1.CssSelector.parse(ngContentSelectors[i]), i);
         }
     }
     return new Component(matcher, wildcardNgContentIndex);
 };
Esempio n. 5
0
 querySelectorAll(el, selector) {
     var res = [];
     var _recursive = (result, node, selector, matcher) => {
         var cNodes = node.childNodes;
         if (cNodes && cNodes.length > 0) {
             for (var i = 0; i < cNodes.length; i++) {
                 var childNode = cNodes[i];
                 if (this.elementMatches(childNode, selector, matcher)) {
                     result.push(childNode);
                 }
                 _recursive(result, childNode, selector, matcher);
             }
         }
     };
     var matcher = new SelectorMatcher();
     matcher.addSelectables(CssSelector.parse(selector));
     _recursive(res, el, selector, matcher);
     return res;
 }