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; };
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; };