diff options
author | denisanisimov <denis@vaadin.com> | 2014-02-10 11:33:55 +0200 |
---|---|---|
committer | Denis Anisimov <denis@vaadin.com> | 2014-02-13 16:00:16 +0200 |
commit | 853d42a08bfdbad030eb728b296c930176bbe2bd (patch) | |
tree | 67d11cfe0dd212a93d3a744724c55212c23eb885 /theme-compiler/src/com/vaadin/sass/internal/parser | |
parent | 675d387348e90c525dec1eaeb7fee288728af9f0 (diff) | |
download | vaadin-framework-853d42a08bfdbad030eb728b296c930176bbe2bd.tar.gz vaadin-framework-853d42a08bfdbad030eb728b296c930176bbe2bd.zip |
Function "percentage" is implemented (#12771).
Change-Id: I0a2e3d31f60bd085d619b603bd229dba902ff001
Diffstat (limited to 'theme-compiler/src/com/vaadin/sass/internal/parser')
-rw-r--r-- | theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java b/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java index 96f841de0b..09fcdee7c0 100644 --- a/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java +++ b/theme-compiler/src/com/vaadin/sass/internal/parser/LexicalUnitImpl.java @@ -52,6 +52,9 @@ public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit, Serializable { private static final long serialVersionUID = -6649833716809789399L; + private static int PRECISION = 100000; + private static int PERC_PRECISION_FACTOR = 100 * PRECISION; + LexicalUnitImpl prev; LexicalUnitImpl next; @@ -788,9 +791,46 @@ public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit, list.add(new FloorFunctionGenerator()); list.add(new LightenFunctionGenerator()); list.add(new RoundFunctionGenerator()); + list.add(new PercentageFunctionGenerator()); return list; } + private static class PercentageFunctionGenerator implements + SCSSFunctionGenerator { + + @Override + public String getFunctionName() { + return "percentage"; + } + + @Override + public String printState(LexicalUnitImpl function) { + StringBuilder builder = new StringBuilder(); + LexicalUnitImpl firstParam = function.getParameters(); + float value = firstParam.getFloatValue(); + value *= PERC_PRECISION_FACTOR; + int intValue = Math.round(value); + value = ((float) intValue) / PRECISION; + + int resultIntValue = (int) value; + + firstParam.type = SAC_PERCENTAGE; + + if (intValue == resultIntValue * PRECISION) { + builder.append(resultIntValue); + firstParam.setIntegerValue(resultIntValue); + } else { + builder.append(value); + firstParam.setFloatValue(value); + } + + firstParam.setStringValue(builder.append('%').toString()); + + return firstParam.toString(); + } + + } + private static final Map<String, SCSSFunctionGenerator> SERIALIZERS = new HashMap<String, SCSSFunctionGenerator>(); private static final SCSSFunctionGenerator DEFAULT_SERIALIZER = new DefaultFunctionGenerator(); |