You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/09/28 03:34:58 UTC
[royale-compiler] 02/03: fix matching selectors that have different
namespace prefixes that map to same uri
This is an automated email from the ASF dual-hosted git repository.
aharui pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit 86e3719fa3038c45a0ee7a3282c27a88b3b89afa
Author: Alex Harui <ah...@apache.org>
AuthorDate: Thu Sep 27 20:32:55 2018 -0700
fix matching selectors that have different namespace prefixes that map to same uri
---
.../java/org/apache/royale/compiler/css/ICSSSelector.java | 11 +++++++++++
.../org/apache/royale/compiler/internal/css/CSSSelector.java | 11 +++++++++++
.../compiler/internal/css/codegen/CSSCompilationSession.java | 2 +-
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/compiler/src/main/java/org/apache/royale/compiler/css/ICSSSelector.java b/compiler/src/main/java/org/apache/royale/compiler/css/ICSSSelector.java
index d09e751..f3da29a 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/css/ICSSSelector.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/css/ICSSSelector.java
@@ -91,6 +91,17 @@ public interface ICSSSelector extends ICSSNode
/**
* This API is explicitly added so that no CSS compilation logic will depend
* on {@code toString()} value of an {@link ICSSNode}.
+ * This version is used so that Basic|SomeClass in one css file
+ * will match SomeClass in another css file. The code that uses this has already resolved
+ * the namespace prefix to an actual uri.
+ *
+ * @return The CSS text from which this selector is generated without any namespace prefixes
+ */
+ String getCSSSyntaxNoNamespaces();
+
+ /**
+ * This API is explicitly added so that no CSS compilation logic will depend
+ * on {@code toString()} value of an {@link ICSSNode}.
*
* @return The CSS text from which this selector is generated.
*/
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java
index cf04c61..6efc239 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSSelector.java
@@ -105,6 +105,17 @@ public class CSSSelector extends CSSNodeBase implements ICSSSelector
return result.toString();
}
+ public String getCSSSyntaxNoNamespaces()
+ {
+ final StringBuilder result = new StringBuilder();
+ if (combinator != null)
+ result.append(combinator.getSelector().toString()).append(combinator.getCombinatorType().text);
+ if (elementName != null)
+ result.append(elementName);
+ result.append(stringifyConditions(conditions));
+ return result.toString();
+ }
+
@Override
public String stringifyConditions(List<ICSSSelectorCondition> conditions)
{
diff --git a/compiler/src/main/java/org/apache/royale/compiler/internal/css/codegen/CSSCompilationSession.java b/compiler/src/main/java/org/apache/royale/compiler/internal/css/codegen/CSSCompilationSession.java
index dd2c48f..a9599e5 100644
--- a/compiler/src/main/java/org/apache/royale/compiler/internal/css/codegen/CSSCompilationSession.java
+++ b/compiler/src/main/java/org/apache/royale/compiler/internal/css/codegen/CSSCompilationSession.java
@@ -310,7 +310,7 @@ public class CSSCompilationSession
selectorQname = qname;
}
final String resolvedSelectorName = selectorQname.concat(
- selector.getCSSSyntax());
+ selector.getCSSSyntaxNoNamespaces());
return resolvedSelectorName;
}