示例#1
0
 ShadowCss.prototype._extractUnscopedRulesFromCssText = function (cssText) {
     // Difference with webcomponents.js: does not handle comments
     var r = '', m;
     var matcher = lang_1.RegExpWrapper.matcher(_cssContentUnscopedRuleRe, cssText);
     while (lang_1.isPresent(m = lang_1.RegExpMatcherWrapper.next(matcher))) {
         var rule = m[0];
         rule = lang_1.StringWrapper.replace(rule, m[2], '');
         rule = lang_1.StringWrapper.replace(rule, m[1], m[3]);
         r += rule + '\n\n';
     }
     return r;
 };
示例#2
0
 CssSelector.parse = function (selector) {
     var results = [];
     var _addResult = function (res, cssSel) {
         if (cssSel.notSelectors.length > 0 && lang_1.isBlank(cssSel.element) &&
             collection_1.ListWrapper.isEmpty(cssSel.classNames) && collection_1.ListWrapper.isEmpty(cssSel.attrs)) {
             cssSel.element = "*";
         }
         res.push(cssSel);
     };
     var cssSelector = new CssSelector();
     var matcher = lang_1.RegExpWrapper.matcher(_SELECTOR_REGEXP, selector);
     var match;
     var current = cssSelector;
     var inNot = false;
     while (lang_1.isPresent(match = lang_1.RegExpMatcherWrapper.next(matcher))) {
         if (lang_1.isPresent(match[1])) {
             if (inNot) {
                 throw new exceptions_1.BaseException('Nesting :not is not allowed in a selector');
             }
             inNot = true;
             current = new CssSelector();
             cssSelector.notSelectors.push(current);
         }
         if (lang_1.isPresent(match[2])) {
             current.setElement(match[2]);
         }
         if (lang_1.isPresent(match[3])) {
             current.addClassName(match[3]);
         }
         if (lang_1.isPresent(match[4])) {
             current.addAttribute(match[4], match[5]);
         }
         if (lang_1.isPresent(match[6])) {
             inNot = false;
             current = cssSelector;
         }
         if (lang_1.isPresent(match[7])) {
             if (inNot) {
                 throw new exceptions_1.BaseException('Multiple selectors in :not are not supported');
             }
             _addResult(results, cssSelector);
             cssSelector = current = new CssSelector();
         }
     }
     _addResult(results, cssSelector);
     return results;
 };