| Index: pkg/polymer/lib/src/css_emitters.dart
|
| diff --git a/pkg/polymer/lib/src/css_emitters.dart b/pkg/polymer/lib/src/css_emitters.dart
|
| deleted file mode 100644
|
| index a4d4b7d05a3a32d7faa3dabc18492e40fea0f193..0000000000000000000000000000000000000000
|
| --- a/pkg/polymer/lib/src/css_emitters.dart
|
| +++ /dev/null
|
| @@ -1,120 +0,0 @@
|
| -// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -library polymer.src.css_emitters;
|
| -
|
| -import 'package:csslib/visitor.dart' show Visitor, CssPrinter, ElementSelector,
|
| - UriTerm, Selector, HostDirective, SimpleSelectorSequence, StyleSheet;
|
| -
|
| -import 'info.dart';
|
| -
|
| -
|
| -/** Emit the contents of the style tag outside of a component. */
|
| -String emitStyleSheet(StyleSheet ss, FileInfo file) =>
|
| - (new _CssEmitter(file.components.keys.toSet())
|
| - ..visitTree(ss, pretty: true)).toString();
|
| -
|
| -/** Emit a component's style tag content emulating scoped css. */
|
| -String emitComponentStyleSheet(StyleSheet ss, String tagName) =>
|
| - (new _ComponentCssEmitter(tagName)..visitTree(ss, pretty: true)).toString();
|
| -
|
| -String emitOriginalCss(StyleSheet css) =>
|
| - (new CssPrinter()..visitTree(css)).toString();
|
| -
|
| -/** Only x-tag name element selectors are emitted as [is="x-"]. */
|
| -class _CssEmitter extends CssPrinter {
|
| - final Set _componentsTag;
|
| - _CssEmitter(this._componentsTag);
|
| -
|
| - void visitElementSelector(ElementSelector node) {
|
| - // If element selector is a component's tag name, then change selector to
|
| - // find element who's is attribute's the component's name.
|
| - if (_componentsTag.contains(node.name)) {
|
| - emit('[is="${node.name}"]');
|
| - return;
|
| - }
|
| - super.visitElementSelector(node);
|
| - }
|
| -}
|
| -
|
| -/**
|
| - * Emits a css stylesheet applying rules to emulate scoped css. The rules adjust
|
| - * element selectors to include the component's tag name.
|
| - */
|
| -class _ComponentCssEmitter extends CssPrinter {
|
| - final String _componentTagName;
|
| - bool _inHostDirective = false;
|
| - bool _selectorStartInHostDirective = false;
|
| -
|
| - _ComponentCssEmitter(this._componentTagName);
|
| -
|
| - /** Is the element selector an x-tag name. */
|
| - bool _isSelectorElementXTag(Selector node) {
|
| - if (node.simpleSelectorSequences.length > 0) {
|
| - var selector = node.simpleSelectorSequences[0].simpleSelector;
|
| - return selector is ElementSelector && selector.name == _componentTagName;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - void visitSelector(Selector node) {
|
| - // If the selector starts with an x-tag name don't emit it twice.
|
| - if (!_isSelectorElementXTag(node)) {
|
| - if (_inHostDirective) {
|
| - // Style the element that's hosting the component, therefore don't emit
|
| - // the descendent combinator (first space after the [is="x-..."]).
|
| - emit('[is="$_componentTagName"]');
|
| - // Signal that first simpleSelector must be checked.
|
| - _selectorStartInHostDirective = true;
|
| - } else {
|
| - // Emit its scoped as a descendent (space at end).
|
| - emit('[is="$_componentTagName"] ');
|
| - }
|
| - }
|
| - super.visitSelector(node);
|
| - }
|
| -
|
| - /**
|
| - * If first simple selector of a ruleset in a @host directive is a wildcard
|
| - * then don't emit the wildcard.
|
| - */
|
| - void visitSimpleSelectorSequence(SimpleSelectorSequence node) {
|
| - if (_selectorStartInHostDirective) {
|
| - _selectorStartInHostDirective = false;
|
| - if (node.simpleSelector.isWildcard) {
|
| - // Skip the wildcard if first item in the sequence.
|
| - return;
|
| - }
|
| - assert(node.isCombinatorNone);
|
| - }
|
| -
|
| - super.visitSimpleSelectorSequence(node);
|
| - }
|
| -
|
| - void visitElementSelector(ElementSelector node) {
|
| - // If element selector is the component's tag name, then change selector to
|
| - // find element who's is attribute is the component's name.
|
| - if (_componentTagName == node.name) {
|
| - emit('[is="$_componentTagName"]');
|
| - return;
|
| - }
|
| - super.visitElementSelector(node);
|
| - }
|
| -
|
| - /**
|
| - * If we're polyfilling scoped styles the @host directive is stripped. Any
|
| - * ruleset(s) processed in an @host will fixup the first selector. See
|
| - * visitSelector and visitSimpleSelectorSequence in this class, they adjust
|
| - * the selectors so it styles the element hosting the compopnent.
|
| - */
|
| - void visitHostDirective(HostDirective node) {
|
| - _inHostDirective = true;
|
| - emit('/* @host */');
|
| - for (var ruleset in node.rulesets) {
|
| - ruleset.visit(this);
|
| - }
|
| - _inHostDirective = false;
|
| - emit('/* end of @host */\n');
|
| - }
|
| -}
|
|
|