From 235a5d3a0be19c799863b4c666081b87b2e3dcaa Mon Sep 17 00:00:00 2001 From: hrj Date: Tue, 20 Jun 2017 02:09:24 +0530 Subject: [PATCH 1/4] added support for flexbox related properties for gh-70 --- .../java/cz/vutbr/web/css/CSSProperty.java | 320 +++++++++++++++++- .../cz/vutbr/web/domassign/SupportedCSS3.java | 110 +----- 2 files changed, 336 insertions(+), 94 deletions(-) diff --git a/src/main/java/cz/vutbr/web/css/CSSProperty.java b/src/main/java/cz/vutbr/web/css/CSSProperty.java index e0d39c64..35826d87 100644 --- a/src/main/java/cz/vutbr/web/css/CSSProperty.java +++ b/src/main/java/cz/vutbr/web/css/CSSProperty.java @@ -1275,7 +1275,7 @@ public enum Display implements CSSProperty { "table-header-group"), TABLE_FOOTER_GROUP("table-footer-group"), TABLE_ROW( "table-row"), TABLE_COLUMN_GROUP("table-column-group"), TABLE_COLUMN( "table-column"), TABLE_CELL("table-cell"), TABLE_CAPTION( - "table-caption"), NONE("none"), INHERIT("inherit"), + "table-caption"), FLEX("flex"), INLINE_FLEX("inline-flex"), NONE("none"), INHERIT("inherit"), INITIAL("initial"), UNSET("unset"); private String text; @@ -1745,7 +1745,7 @@ public String toString() { return text; } } - + public enum Orphans implements CSSProperty { integer(""), INHERIT("inherit"), INITIAL("initial"), UNSET("unset"); @@ -3104,6 +3104,322 @@ public String toString() { } } + public enum AlignContent implements CSSProperty { + FlexStart("flex-start"), FlexEnd("flex-end"), Center("center"), SpaceBetween("space-between"), SpaceAround( + "space-around"), Stretch("stretch"), INITIAL("initial"), UNSET("unset"); + + private String text; + + private AlignContent(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum AlignItems implements CSSProperty { + FlexStart("flex-start"), FlexEnd("flex-end"), Center("center"), Baseline("baseline"), Stretch( + "stretch"), INITIAL("initial"), UNSET("unset"); + + private String text; + + private AlignItems(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum AlignSelf implements CSSProperty { + Auto("auto"), FlexStart("flex-start"), FlexEnd("flex-end"), Center("center"), Baseline("baseline"), Stretch( + "stretch"), INITIAL("initial"), UNSET("unset"); + + private String text; + + private AlignSelf(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum FlexBasis implements CSSProperty { + CONTENT("content"), length(""), percentage(""), AUTO("auto"), INHERIT("inherit"), INITIAL("initial"), UNSET( + "unset"); + + private String text; + + private FlexBasis(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum FlexDirection implements CSSProperty { + ROW("row"), ROW_REVERSE("row-reverse"), COLUMN("column"), COLUMN_REVERSE("column-reverse"), INITIAL( + "initial"), UNSET("unset"); + + private String text; + + private FlexDirection(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum FlexGrow implements CSSProperty { + number(""), INITIAL("initial"), UNSET("unset"); + + private String text; + + private FlexGrow(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum FlexShrink implements CSSProperty { + number(""), INITIAL("initial"), UNSET("unset"); + + private String text; + + private FlexShrink(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum FlexWrap implements CSSProperty { + NOWRAP("nowrap"), WRAP("wrap"), WRAP_REVERSE("wrap-reverse"), INITIAL("initial"), UNSET("unset"); + + private String text; + + private FlexWrap(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum JustifyContent implements CSSProperty { + FlexStart("flex-start"), FlexEnd("flex-end"), Center("center"), SpaceBetween("space-between"), SpaceAround( + "space-around"), INITIAL("initial"), UNSET("unset"); + + private String text; + + private JustifyContent(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + + public enum Order implements CSSProperty { + integer(""), INITIAL("initial"), UNSET("unset"); + + private String text; + + private Order(String text) { + this.text = text; + } + + public boolean inherited() { + return false; + } + + public boolean equalsInherit() { + return false; + } + + public boolean equalsInitial() { + return this == INITIAL; + } + + public boolean equalsUnset() { + return this == UNSET; + } + + @Override + public String toString() { + return text; + } + } + /** * A generic property used for all the properties not supported by another implementation. */ diff --git a/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java b/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java index 13caaea1..bb54a47b 100644 --- a/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java +++ b/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java @@ -12,102 +12,11 @@ import cz.vutbr.web.css.CSSFactory; import cz.vutbr.web.css.CSSProperty; -import cz.vutbr.web.css.CSSProperty.BorderRadius; -import cz.vutbr.web.css.CSSProperty.Height; -import cz.vutbr.web.css.CSSProperty.Opacity; -import cz.vutbr.web.css.CSSProperty.TabSize; -import cz.vutbr.web.css.CSSProperty.Transform; import cz.vutbr.web.css.SupportedCSS; import cz.vutbr.web.css.Term; import cz.vutbr.web.css.TermFactory; import cz.vutbr.web.css.TermList; -import cz.vutbr.web.css.CSSProperty.Azimuth; -import cz.vutbr.web.css.CSSProperty.Background; -import cz.vutbr.web.css.CSSProperty.BackgroundAttachment; -import cz.vutbr.web.css.CSSProperty.BackgroundColor; -import cz.vutbr.web.css.CSSProperty.BackgroundImage; -import cz.vutbr.web.css.CSSProperty.BackgroundPosition; -import cz.vutbr.web.css.CSSProperty.BackgroundRepeat; -import cz.vutbr.web.css.CSSProperty.BackgroundSize; -import cz.vutbr.web.css.CSSProperty.Border; -import cz.vutbr.web.css.CSSProperty.BorderCollapse; -import cz.vutbr.web.css.CSSProperty.BorderColor; -import cz.vutbr.web.css.CSSProperty.BorderSpacing; -import cz.vutbr.web.css.CSSProperty.BorderStyle; -import cz.vutbr.web.css.CSSProperty.BorderWidth; -import cz.vutbr.web.css.CSSProperty.Bottom; -import cz.vutbr.web.css.CSSProperty.BoxSizing; -import cz.vutbr.web.css.CSSProperty.CaptionSide; -import cz.vutbr.web.css.CSSProperty.Clear; -import cz.vutbr.web.css.CSSProperty.Clip; -import cz.vutbr.web.css.CSSProperty.Color; -import cz.vutbr.web.css.CSSProperty.Content; -import cz.vutbr.web.css.CSSProperty.CounterIncrement; -import cz.vutbr.web.css.CSSProperty.CounterReset; -import cz.vutbr.web.css.CSSProperty.Cue; -import cz.vutbr.web.css.CSSProperty.Cursor; -import cz.vutbr.web.css.CSSProperty.Direction; -import cz.vutbr.web.css.CSSProperty.Display; -import cz.vutbr.web.css.CSSProperty.Elevation; -import cz.vutbr.web.css.CSSProperty.EmptyCells; -import cz.vutbr.web.css.CSSProperty.Font; -import cz.vutbr.web.css.CSSProperty.FontFamily; -import cz.vutbr.web.css.CSSProperty.FontSize; -import cz.vutbr.web.css.CSSProperty.FontStyle; -import cz.vutbr.web.css.CSSProperty.FontVariant; -import cz.vutbr.web.css.CSSProperty.FontWeight; -import cz.vutbr.web.css.CSSProperty.Left; -import cz.vutbr.web.css.CSSProperty.LetterSpacing; -import cz.vutbr.web.css.CSSProperty.LineHeight; -import cz.vutbr.web.css.CSSProperty.ListStyle; -import cz.vutbr.web.css.CSSProperty.ListStyleImage; -import cz.vutbr.web.css.CSSProperty.ListStylePosition; -import cz.vutbr.web.css.CSSProperty.ListStyleType; -import cz.vutbr.web.css.CSSProperty.Margin; -import cz.vutbr.web.css.CSSProperty.MaxHeight; -import cz.vutbr.web.css.CSSProperty.MaxWidth; -import cz.vutbr.web.css.CSSProperty.MinHeight; -import cz.vutbr.web.css.CSSProperty.MinWidth; -import cz.vutbr.web.css.CSSProperty.Orphans; -import cz.vutbr.web.css.CSSProperty.Outline; -import cz.vutbr.web.css.CSSProperty.OutlineColor; -import cz.vutbr.web.css.CSSProperty.OutlineStyle; -import cz.vutbr.web.css.CSSProperty.OutlineWidth; -import cz.vutbr.web.css.CSSProperty.Overflow; -import cz.vutbr.web.css.CSSProperty.Padding; -import cz.vutbr.web.css.CSSProperty.PageBreak; -import cz.vutbr.web.css.CSSProperty.PageBreakInside; -import cz.vutbr.web.css.CSSProperty.Pause; -import cz.vutbr.web.css.CSSProperty.Pitch; -import cz.vutbr.web.css.CSSProperty.PitchRange; -import cz.vutbr.web.css.CSSProperty.PlayDuring; -import cz.vutbr.web.css.CSSProperty.Position; -import cz.vutbr.web.css.CSSProperty.Quotes; -import cz.vutbr.web.css.CSSProperty.Richness; -import cz.vutbr.web.css.CSSProperty.Right; -import cz.vutbr.web.css.CSSProperty.Speak; -import cz.vutbr.web.css.CSSProperty.SpeakHeader; -import cz.vutbr.web.css.CSSProperty.SpeakNumeral; -import cz.vutbr.web.css.CSSProperty.SpeakPunctuation; -import cz.vutbr.web.css.CSSProperty.SpeechRate; -import cz.vutbr.web.css.CSSProperty.Stress; -import cz.vutbr.web.css.CSSProperty.TableLayout; -import cz.vutbr.web.css.CSSProperty.TextAlign; -import cz.vutbr.web.css.CSSProperty.TextDecoration; -import cz.vutbr.web.css.CSSProperty.TextIndent; -import cz.vutbr.web.css.CSSProperty.TextTransform; -import cz.vutbr.web.css.CSSProperty.Top; -import cz.vutbr.web.css.CSSProperty.TransformOrigin; -import cz.vutbr.web.css.CSSProperty.UnicodeBidi; -import cz.vutbr.web.css.CSSProperty.VerticalAlign; -import cz.vutbr.web.css.CSSProperty.Visibility; -import cz.vutbr.web.css.CSSProperty.VoiceFamily; -import cz.vutbr.web.css.CSSProperty.Volume; -import cz.vutbr.web.css.CSSProperty.WhiteSpace; -import cz.vutbr.web.css.CSSProperty.Widows; -import cz.vutbr.web.css.CSSProperty.Width; -import cz.vutbr.web.css.CSSProperty.WordSpacing; -import cz.vutbr.web.css.CSSProperty.ZIndex; +import cz.vutbr.web.css.CSSProperty.*; /** * Contains default values for properties supported by parser (CSS 3) @@ -135,6 +44,11 @@ public class SupportedCSS3 implements SupportedCSS { private static final Term DEFAULT_BORDER_COLOR = tf.createColor(tf.createIdent("currentColor")); private static final Term DEFAULT_BACKGROUND_COLOR = tf.createColor(tf.createIdent("transparent")); private static final TermList DEFAULT_UA_BACKGROUND_POSITION = tf.createList(2); + + private static final Term DEFAULT_FLEX_SHRINK = tf.createNumber(1.0f); + private static final Term DEFAULT_FLEX_GROW = tf.createNumber(0.0f); + private static final Term DEFAULT_ORDER = tf.createInteger(0); + static { DEFAULT_UA_BACKGROUND_POSITION.add(tf.createPercent(0.0f)); DEFAULT_UA_BACKGROUND_POSITION.add(tf.createPercent(0.0f)); @@ -454,6 +368,18 @@ private void setSupportedCSS() { props.put("voice-family", DEFAULT_UA_VOICE_FAMILY); props.put("volume", Volume.MEDIUM); + // Flex + props.put("flex-direction", FlexDirection.ROW); + props.put("flex-wrap", FlexWrap.NOWRAP); + props.put("flex-basis", FlexBasis.AUTO); + values.put("flex-grow", DEFAULT_FLEX_GROW); + values.put("flex-shrink", DEFAULT_FLEX_SHRINK); + values.put("order", DEFAULT_ORDER); + props.put("justify-content", JustifyContent.FlexStart); + props.put("align-content", AlignContent.Stretch); + props.put("align-items", AlignItems.Stretch); + props.put("align-self", AlignSelf.Auto); + this.defaultCSSproperties = props; this.defaultCSSvalues = values; } From 5fb8cbe01751af9307befc61d2fc887ce5c11e5d Mon Sep 17 00:00:00 2001 From: hrj Date: Tue, 20 Jun 2017 12:31:34 +0530 Subject: [PATCH 2/4] minor formatting --- src/main/java/cz/vutbr/web/css/CSSProperty.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/cz/vutbr/web/css/CSSProperty.java b/src/main/java/cz/vutbr/web/css/CSSProperty.java index 35826d87..8a9ef8cc 100644 --- a/src/main/java/cz/vutbr/web/css/CSSProperty.java +++ b/src/main/java/cz/vutbr/web/css/CSSProperty.java @@ -3201,8 +3201,7 @@ public String toString() { } public enum FlexBasis implements CSSProperty { - CONTENT("content"), length(""), percentage(""), AUTO("auto"), INHERIT("inherit"), INITIAL("initial"), UNSET( - "unset"); + CONTENT("content"), length(""), percentage(""), AUTO("auto"), INHERIT("inherit"), INITIAL("initial"), UNSET( "unset"); private String text; @@ -3233,8 +3232,7 @@ public String toString() { } public enum FlexDirection implements CSSProperty { - ROW("row"), ROW_REVERSE("row-reverse"), COLUMN("column"), COLUMN_REVERSE("column-reverse"), INITIAL( - "initial"), UNSET("unset"); + ROW("row"), ROW_REVERSE("row-reverse"), COLUMN("column"), COLUMN_REVERSE("column-reverse"), INITIAL("initial"), UNSET("unset"); private String text; From 7217809b2a6c8339f33aacab4177db4a3f384088 Mon Sep 17 00:00:00 2001 From: hrj Date: Tue, 20 Jun 2017 12:31:58 +0530 Subject: [PATCH 3/4] flexbox: define the properties and not just the values --- src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java b/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java index bb54a47b..65f044b6 100644 --- a/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java +++ b/src/main/java/cz/vutbr/web/domassign/SupportedCSS3.java @@ -368,12 +368,15 @@ private void setSupportedCSS() { props.put("voice-family", DEFAULT_UA_VOICE_FAMILY); props.put("volume", Volume.MEDIUM); - // Flex + // Flexbox props.put("flex-direction", FlexDirection.ROW); props.put("flex-wrap", FlexWrap.NOWRAP); props.put("flex-basis", FlexBasis.AUTO); + props.put("flex-grow", FlexGrow.number); values.put("flex-grow", DEFAULT_FLEX_GROW); + props.put("flex-shrink", FlexShrink.number); values.put("flex-shrink", DEFAULT_FLEX_SHRINK); + props.put("order", Order.integer); values.put("order", DEFAULT_ORDER); props.put("justify-content", JustifyContent.FlexStart); props.put("align-content", AlignContent.Stretch); From 6030eb88e7e192872d9689a5861dafa4480f57f7 Mon Sep 17 00:00:00 2001 From: hrj Date: Tue, 20 Jun 2017 12:32:50 +0530 Subject: [PATCH 4/4] flexbox: add the processing functions --- .../domassign/DeclarationTransformerImpl.java | 116 ++++++++++++++---- 1 file changed, 92 insertions(+), 24 deletions(-) diff --git a/src/main/java/cz/vutbr/web/domassign/DeclarationTransformerImpl.java b/src/main/java/cz/vutbr/web/domassign/DeclarationTransformerImpl.java index b2cd8b79..83a57cb1 100644 --- a/src/main/java/cz/vutbr/web/domassign/DeclarationTransformerImpl.java +++ b/src/main/java/cz/vutbr/web/domassign/DeclarationTransformerImpl.java @@ -17,37 +17,15 @@ import cz.vutbr.web.css.CSSFactory; import cz.vutbr.web.css.CSSProperty; -import cz.vutbr.web.css.CSSProperty.BackgroundSize; -import cz.vutbr.web.css.CSSProperty.BorderRadius; -import cz.vutbr.web.css.CSSProperty.GenericCSSPropertyProxy; -import cz.vutbr.web.css.CSSProperty.Opacity; -import cz.vutbr.web.css.CSSProperty.Transform; -import cz.vutbr.web.css.CSSProperty.TransformOrigin; -import cz.vutbr.web.css.Declaration; -import cz.vutbr.web.css.SupportedCSS; -import cz.vutbr.web.css.Term; -import cz.vutbr.web.css.TermColor; -import cz.vutbr.web.css.TermFactory; -import cz.vutbr.web.css.TermFloatValue; -import cz.vutbr.web.css.TermFunction; -import cz.vutbr.web.css.TermIdent; -import cz.vutbr.web.css.TermInteger; -import cz.vutbr.web.css.TermLength; -import cz.vutbr.web.css.TermLengthOrPercent; -import cz.vutbr.web.css.TermList; -import cz.vutbr.web.css.TermNumber; -import cz.vutbr.web.css.TermPercent; -import cz.vutbr.web.css.TermRect; -import cz.vutbr.web.css.TermString; -import cz.vutbr.web.css.TermURI; -import cz.vutbr.web.csskit.DeclarationTransformer; import cz.vutbr.web.css.CSSProperty.BackgroundAttachment; import cz.vutbr.web.css.CSSProperty.BackgroundColor; import cz.vutbr.web.css.CSSProperty.BackgroundImage; import cz.vutbr.web.css.CSSProperty.BackgroundPosition; import cz.vutbr.web.css.CSSProperty.BackgroundRepeat; +import cz.vutbr.web.css.CSSProperty.BackgroundSize; import cz.vutbr.web.css.CSSProperty.BorderCollapse; import cz.vutbr.web.css.CSSProperty.BorderColor; +import cz.vutbr.web.css.CSSProperty.BorderRadius; import cz.vutbr.web.css.CSSProperty.BorderSpacing; import cz.vutbr.web.css.CSSProperty.BorderStyle; import cz.vutbr.web.css.CSSProperty.BorderWidth; @@ -64,13 +42,20 @@ import cz.vutbr.web.css.CSSProperty.Direction; import cz.vutbr.web.css.CSSProperty.Display; import cz.vutbr.web.css.CSSProperty.EmptyCells; +import cz.vutbr.web.css.CSSProperty.FlexBasis; +import cz.vutbr.web.css.CSSProperty.FlexDirection; +import cz.vutbr.web.css.CSSProperty.FlexGrow; +import cz.vutbr.web.css.CSSProperty.FlexShrink; +import cz.vutbr.web.css.CSSProperty.FlexWrap; import cz.vutbr.web.css.CSSProperty.Font; import cz.vutbr.web.css.CSSProperty.FontFamily; import cz.vutbr.web.css.CSSProperty.FontSize; import cz.vutbr.web.css.CSSProperty.FontStyle; import cz.vutbr.web.css.CSSProperty.FontVariant; import cz.vutbr.web.css.CSSProperty.FontWeight; +import cz.vutbr.web.css.CSSProperty.GenericCSSPropertyProxy; import cz.vutbr.web.css.CSSProperty.Height; +import cz.vutbr.web.css.CSSProperty.JustifyContent; import cz.vutbr.web.css.CSSProperty.Left; import cz.vutbr.web.css.CSSProperty.LetterSpacing; import cz.vutbr.web.css.CSSProperty.LineHeight; @@ -82,6 +67,8 @@ import cz.vutbr.web.css.CSSProperty.MaxWidth; import cz.vutbr.web.css.CSSProperty.MinHeight; import cz.vutbr.web.css.CSSProperty.MinWidth; +import cz.vutbr.web.css.CSSProperty.Opacity; +import cz.vutbr.web.css.CSSProperty.Order; import cz.vutbr.web.css.CSSProperty.Orphans; import cz.vutbr.web.css.CSSProperty.OutlineColor; import cz.vutbr.web.css.CSSProperty.OutlineStyle; @@ -100,6 +87,8 @@ import cz.vutbr.web.css.CSSProperty.TextIndent; import cz.vutbr.web.css.CSSProperty.TextTransform; import cz.vutbr.web.css.CSSProperty.Top; +import cz.vutbr.web.css.CSSProperty.Transform; +import cz.vutbr.web.css.CSSProperty.TransformOrigin; import cz.vutbr.web.css.CSSProperty.UnicodeBidi; import cz.vutbr.web.css.CSSProperty.VerticalAlign; import cz.vutbr.web.css.CSSProperty.Visibility; @@ -108,7 +97,25 @@ import cz.vutbr.web.css.CSSProperty.Width; import cz.vutbr.web.css.CSSProperty.WordSpacing; import cz.vutbr.web.css.CSSProperty.ZIndex; +import cz.vutbr.web.css.Declaration; +import cz.vutbr.web.css.SupportedCSS; +import cz.vutbr.web.css.Term; import cz.vutbr.web.css.Term.Operator; +import cz.vutbr.web.css.TermColor; +import cz.vutbr.web.css.TermFactory; +import cz.vutbr.web.css.TermFloatValue; +import cz.vutbr.web.css.TermFunction; +import cz.vutbr.web.css.TermIdent; +import cz.vutbr.web.css.TermInteger; +import cz.vutbr.web.css.TermLength; +import cz.vutbr.web.css.TermLengthOrPercent; +import cz.vutbr.web.css.TermList; +import cz.vutbr.web.css.TermNumber; +import cz.vutbr.web.css.TermPercent; +import cz.vutbr.web.css.TermRect; +import cz.vutbr.web.css.TermString; +import cz.vutbr.web.css.TermURI; +import cz.vutbr.web.csskit.DeclarationTransformer; /** * Contains methods to transform declaration into values applicable to NodeData. @@ -589,6 +596,32 @@ protected boolean genericOneIdentOrLength( lengthIdentification, range, properties, values); } + protected boolean genericInteger( + Class type, T integerIdentification, ValueRange range, + Declaration d, Map properties, + Map> values) { + + if (d.size() != 1) + return false; + + Term term = d.get(0); + if (term instanceof TermIdent) + { + T property = genericPropertyRaw(type, null, (TermIdent) term); + if (!property.equalsInherit()) + return false; + else + { + properties.put(d.getProperty(), property); + return true; + } + } + else + { + return genericTerm(TermInteger.class, term, d.getProperty(), integerIdentification, range, properties, values); + } + } + protected boolean genericIntegerOrLength( Class type, T integerIdentification, T lengthIdentification, ValueRange range, Declaration d, Map properties, @@ -1908,6 +1941,41 @@ private boolean processAdditionalCSSGenericProperty(Declaration d, Map properties, Map> values) { + return genericOneIdentOrLengthOrPercent(FlexBasis.class, FlexBasis.length, FlexBasis.percentage, ValueRange.DISALLOW_NEGATIVE, d, properties, values); + } + + @SuppressWarnings("unused") + private boolean processFlexDirection(Declaration d, Map properties, Map> values) { + return genericOneIdent(FlexDirection.class, d, properties); + } + + @SuppressWarnings("unused") + private boolean processFlexWrap(Declaration d, Map properties, Map> values) { + return genericOneIdent(FlexWrap.class, d, properties); + } + + @SuppressWarnings("unused") + private boolean processFlexGrow(Declaration d, Map properties, Map> values) { + return genericOneIdentOrIntegerOrNumber(FlexGrow.class, FlexGrow.number, FlexGrow.number, ValueRange.DISALLOW_NEGATIVE, d, properties, values); + } + + @SuppressWarnings("unused") + private boolean processFlexShrink(Declaration d, Map properties, Map> values) { + return genericOneIdentOrIntegerOrNumber(FlexShrink.class, FlexShrink.number, FlexShrink.number, ValueRange.DISALLOW_NEGATIVE, d, properties, values); + } + + @SuppressWarnings("unused") + private boolean processJustifyContent(Declaration d, Map properties, Map> values) { + return genericOneIdent(JustifyContent.class, d, properties); + } + + @SuppressWarnings("unused") + private boolean processOrder(Declaration d, Map properties, Map> values) { + return genericInteger(Order.class, Order.integer, ValueRange.DISALLOW_NEGATIVE, d, properties, values); + } + @SuppressWarnings("unused") private boolean processContent(Declaration d, Map properties, Map> values) {