From d9f3dda973af5d97017cbace8b3770f0db3238ad Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Sun, 6 Sep 2015 01:01:31 +0200 Subject: [PATCH 1/2] Eliminate the need to write `:host ::content` instead of just `::content`, while keeping the same processing under the hood --- src/lib/style-transformer.html | 5 ++--- test/unit/polymer-dom-elements.html | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/lib/style-transformer.html b/src/lib/style-transformer.html index 1a072f76..a8832f7a 100644 --- a/src/lib/style-transformer.html +++ b/src/lib/style-transformer.html @@ -30,9 +30,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN * :host(...) -> scopeName... - * ::content -> ' ' NOTE: requires use of scoping selector and selectors - cannot otherwise be scoped: - e.g. :host ::content > .bar -> x-foo > .bar + * ::content -> ' ' * ::shadow, /deep/: processed similar to ::content @@ -161,6 +159,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN var stop = false; var hostContext = false; var self = this; + selector = selector.replace(/^(::content)/, ':host $1'); selector = selector.replace(SIMPLE_SELECTOR_SEP, function(m, c, s) { if (!stop) { var info = self._transformCompoundSelector(s, c, scope, hostScope); diff --git a/test/unit/polymer-dom-elements.html b/test/unit/polymer-dom-elements.html index d4afa8b2..53956048 100644 --- a/test/unit/polymer-dom-elements.html +++ b/test/unit/polymer-dom-elements.html @@ -200,7 +200,7 @@ box-sizing: border-box; } - :host ::content .add3 { + ::content .add3 { box-sizing: border-box; height: 20px; background: #333; @@ -240,7 +240,7 @@ padding: 4px; } - :host ::content .add2 { + ::content .add2 { box-sizing: border-box; height: 20px; background: gray; @@ -281,7 +281,7 @@ padding: 4px; } - :host ::content .add1 { + ::content .add1 { box-sizing: border-box; height: 20px; background: lightgray; From c6c28f51970c8be164823356ce7211d3ad5ff829 Mon Sep 17 00:00:00 2001 From: Nazar Mokrynskyi Date: Mon, 2 Nov 2015 04:32:39 +0100 Subject: [PATCH 2/2] Using constant rather than plain `:host` and `::content`, also create regexp object only once --- src/lib/style-transformer.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lib/style-transformer.html b/src/lib/style-transformer.html index a8832f7a..419c38d6 100644 --- a/src/lib/style-transformer.html +++ b/src/lib/style-transformer.html @@ -159,7 +159,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN var stop = false; var hostContext = false; var self = this; - selector = selector.replace(/^(::content)/, ':host $1'); + selector = selector.replace(CONTENT_START, HOST + ' $1'); selector = selector.replace(SIMPLE_SELECTOR_SEP, function(m, c, s) { if (!stop) { var info = self._transformCompoundSelector(s, c, scope, hostScope); @@ -255,7 +255,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN // NOTE: this supports 1 nested () pair for things like // :host(:not([selected]), more general support requires // parsing which seems like overkill - var HOST_PAREN = /(\:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g; + var HOST_PAREN = /(:host)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g; var HOST_CONTEXT = ':host-context'; var HOST_CONTEXT_PAREN = /(.*)(?::host-context)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))(.*)/; var CONTENT = '::content'; @@ -265,6 +265,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN var CSS_ATTR_SUFFIX = ']'; var PSEUDO_PREFIX = ':'; var CLASS = 'class'; + var CONTENT_START = new RegExp('^(' + CONTENT + ')'); // exports return api;