Browse Source

assira.ui - int... and length...

Ranides Atterwim 1 year ago
parent
commit
25d638d02d

+ 30 - 0
assira.ui/src/main/antlr4/imports/BasePrimitives.g4

@@ -6,6 +6,36 @@ number
     | numberHex
     ;
 
+number2
+    : number WS number
+    | number CS number
+    ;
+
+number4
+    : number WS number WS number WS number
+    | number CS number CS number CS number
+    ;
+
+numbers
+    : number (WS number)+
+    | number (CS number)+
+    ;
+
+numberInt2
+    : numberInt WS numberInt
+    | numberInt CS numberInt
+    ;
+
+numberInt4
+    : numberInt WS numberInt WS numberInt WS numberInt
+    | numberInt CS numberInt CS numberInt CS numberInt
+    ;
+
+numberInts
+    : numberInt (WS numberInt)+
+    | numberInt (CS numberInt)+
+    ;
+
 numberInt  : NUMBER_INT;
 numberPct  : NUMBER_PCT;
 numberReal : NUMBER_REAL;

+ 15 - 0
assira.ui/src/main/antlr4/imports/CssUnit.g4

@@ -6,6 +6,21 @@ length:
     number unitLength
     ;
 
+length2
+    : length WS length
+    | length WS length
+    ;
+
+length4
+    : length WS length WS length WS length
+    | length CS length CS length CS length
+    ;
+
+lengths
+    : length (WS length)+
+    | length (CS length)+
+    ;
+
 angle:
     number unitAngle?
     ;

+ 7 - 0
assira.ui/src/test/java/net/ranides/assira/ui/parsers/ParseCssUnitTest.java

@@ -7,11 +7,18 @@ import javax.swing.*;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.io.IOException;
+import java.util.Arrays;
 
 import static org.junit.Assert.*;
 
 public class ParseCssUnitTest {
 
+    @Test
+    public void multipleLength() {
+        assertEquals(Arrays.asList(15, 30), GrammarBase.parseStream(ParseCssUnit.LENGTH, "length2", "15px 30px").list());
+        assertEquals(Arrays.asList(15, 30, 151, 27), GrammarBase.parseStream(ParseCssUnit.LENGTH, "length4", "15px 30px 4cm 20pt").list());
+    }
+
     @Test
     public void absolute() {
         assertEquals(10, ParseCssUnit.length("10px"));