This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/develop by this push:
new 15c770367 add missing parent/child relationships and better
start/end/line/column positions to CSS nodes
15c770367 is described below
commit 15c7703671d804eb29c91f50806c4ce0d1cb37b6
Author: Josh Tynjala <[email protected]>
AuthorDate: Fri May 10 09:31:23 2024 -0700
add missing parent/child relationships and better start/end/line/column
positions to CSS nodes
---
.../compiler/internal/css/CSSCombinator.java | 13 +++++
.../royale/compiler/internal/css/CSSFontFace.java | 66 ++++++++++++----------
.../royale/compiler/internal/css/CSSProperty.java | 3 +
.../royale/compiler/internal/css/CSSRule.java | 13 +++++
.../royale/compiler/internal/css/CSSSelector.java | 41 ++++++++++++++
5 files changed, 105 insertions(+), 31 deletions(-)
diff --git
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
index f3d190363..80fed431b 100644
---
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
+++
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSCombinator.java
@@ -38,6 +38,11 @@ public class CSSCombinator extends CSSNodeBase implements
ICSSCombinator
assert type != null : "Combinator type can't be null.";
this.selector = selector;
this.type = type;
+
+ selector.setParent(this);
+ children.add(selector);
+ // TODO: include the operator
+ span(selector);
}
private final CSSSelector selector;
@@ -54,4 +59,12 @@ public class CSSCombinator extends CSSNodeBase implements
ICSSCombinator
{
return type;
}
+
+ @Override
+ public String toString()
+ {
+ final StringBuilder result = new StringBuilder();
+
result.append(getSelector().toString()).append(getCombinatorType().text);
+ return result.toString();
+ }
}
diff --git
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
index 296cfa2b2..4a1543bf9 100644
---
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
+++
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSFontFace.java
@@ -28,7 +28,6 @@ import org.apache.royale.compiler.common.ISourceLocation;
import org.apache.royale.compiler.common.SourceLocation;
import org.apache.royale.compiler.css.FontFaceSourceType;
import org.apache.royale.compiler.css.ICSSFontFace;
-import org.apache.royale.compiler.css.ICSSProperty;
import org.apache.royale.compiler.css.ICSSPropertyValue;
import org.apache.royale.compiler.problems.CSSRequiredDescriptorProblem;
import org.apache.royale.compiler.problems.ICompilerProblem;
@@ -62,38 +61,43 @@ public class CSSFontFace extends CSSNodeBase implements
ICSSFontFace
ICSSPropertyValue embedAsCFFValue = null;
ICSSPropertyValue advancedAAValue = null;
- for (final ICSSProperty property : properties)
+ if (properties != null)
{
- final String name = property.getName();
- final ICSSPropertyValue value = property.getValue();
- if (name.equals("src"))
+ children.addAll(properties);
+ for (final CSSProperty property : properties)
{
- sources.add(value);
- srcValue = value;
- }
- else if (name.equals("fontFamily"))
- {
- fontFamilyValue = value;
- }
- else if (name.equals("fontStyle"))
- {
- fontStyleValue = value;
- }
- else if (name.equals("fontWeight"))
- {
- fontWeightValue = value;
- }
- else if (name.equals("embedAsCFF"))
- {
- embedAsCFFValue = value;
- }
- else if (name.equals("advancedAntiAliasing"))
- {
- advancedAAValue = value;
- }
- else
- {
- // Ignore unknown properties.
+ property.setParent(this);
+ final String name = property.getName();
+ final ICSSPropertyValue value = property.getValue();
+ if (name.equals("src"))
+ {
+ sources.add(value);
+ srcValue = value;
+ }
+ else if (name.equals("fontFamily"))
+ {
+ fontFamilyValue = value;
+ }
+ else if (name.equals("fontStyle"))
+ {
+ fontStyleValue = value;
+ }
+ else if (name.equals("fontWeight"))
+ {
+ fontWeightValue = value;
+ }
+ else if (name.equals("embedAsCFF"))
+ {
+ embedAsCFFValue = value;
+ }
+ else if (name.equals("advancedAntiAliasing"))
+ {
+ advancedAAValue = value;
+ }
+ else
+ {
+ // Ignore unknown properties.
+ }
}
}
diff --git
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
index 0f4c0a2cc..488a09813 100644
---
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
+++
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSProperty.java
@@ -36,6 +36,9 @@ public class CSSProperty extends CSSNodeBase implements
ICSSProperty
this.rawName = name;
this.normalizedName = normalize(name);
this.value = value;
+
+ value.setParent(this);
+ children.add(value);
}
private final String normalizedName;
diff --git
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java
index 46cc36098..91acff896 100644
---
a/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java
+++
b/compiler/src/main/java/org/apache/royale/compiler/internal/css/CSSRule.java
@@ -75,6 +75,19 @@ public class CSSRule extends CSSNodeBase implements ICSSRule
for (CSSMediaQueryCondition mediaQuery : mediaQueries)
{
mediaQuery.setParent(this);
+ if (mediaQuery.getStart() < getStart())
+ {
+ setStart(mediaQuery.getStart());
+ }
+ if (mediaQuery.getLine() < getLine())
+ {
+ setLine(mediaQuery.getLine());
+ setColumn(mediaQuery.getColumn());
+ }
+ else if (mediaQuery.getLine() == getLine() &&
mediaQuery.getColumn() > getColumn())
+ {
+ setColumn(mediaQuery.getColumn());
+ }
}
}
if (properties != null)
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 6efc239ef..7b4e857bc 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
@@ -55,10 +55,51 @@ public class CSSSelector extends CSSNodeBase implements
ICSSSelector
this.namespacePrefix = namespacePrefix;
this.elementName = elementName;
+ if (combinator != null)
+ {
+ combinator.setParent(this);
+ this.children.add(combinator);
+ if (combinator.getStart() < getStart())
+ {
+ setStart(combinator.getStart());
+ }
+ if (combinator.getLine() < getLine())
+ {
+ setLine(combinator.getLine());
+ setColumn(combinator.getColumn());
+ }
+ else if (combinator.getLine() == getLine() &&
combinator.getColumn() > getColumn())
+ {
+ setColumn(combinator.getColumn());
+ }
+ }
+
if (conditions == null || conditions.isEmpty())
+ {
this.conditions = ImmutableList.of();
+ }
else
+ {
this.conditions = new
ImmutableList.Builder<ICSSSelectorCondition>().addAll(conditions).build();
+ for (CSSSelectorCondition condition : conditions)
+ {
+ condition.setParent(this);
+ if (condition.getEnd() > getEnd())
+ {
+ setEnd(condition.getEnd());
+ }
+ if (condition.getEndLine() > getEndLine())
+ {
+ setEndLine(condition.getEndLine());
+ setEndColumn(condition.getEndColumn());
+ }
+ else if (condition.getEndLine() == getEndLine() &&
condition.getEndColumn() > getEndColumn())
+ {
+ setEndColumn(condition.getEndColumn());
+ }
+ }
+ this.children.addAll(conditions);
+ }
}