Skip to content

Commit fdbc970

Browse files
committed
Support linenames for grid-template-columns/rows
DEVSIX-8368
1 parent 9efb1ea commit fdbc970

File tree

2 files changed

+51
-4
lines changed

2 files changed

+51
-4
lines changed

styled-xml-parser/src/main/java/com/itextpdf/styledxmlparser/css/parse/CssDeclarationValueTokenizer.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ private Token getNextToken() {
141141
stringQuote = curChar;
142142
inString = true;
143143
return new Token(buff.toString(), TokenType.FUNCTION);
144+
} else if (curChar == '[') {
145+
stringQuote = 0;
146+
inString = true;
147+
buff.append(curChar);
148+
} else if (curChar == ']') {
149+
inString = false;
150+
buff.append(curChar);
151+
return new Token(buff.toString(), TokenType.STRING);
144152
} else if (curChar == ',' && !inString && functionDepth == 0) {
145153
if (buff.length() == 0) {
146154
return new Token(",", TokenType.COMMA);
@@ -149,10 +157,12 @@ private Token getNextToken() {
149157
return new Token(buff.toString(), TokenType.UNKNOWN);
150158
}
151159
} else if (Character.isWhitespace(curChar)) {
152-
if (functionDepth > 0) {
160+
if (functionDepth > 0 || inString) {
153161
buff.append(curChar);
154162
}
155-
return new Token(buff.toString(), functionDepth > 0 ? TokenType.FUNCTION : TokenType.UNKNOWN);
163+
if (!inString) {
164+
return new Token(buff.toString(), functionDepth > 0 ? TokenType.FUNCTION : TokenType.UNKNOWN);
165+
}
156166
} else {
157167
buff.append(curChar);
158168
}
@@ -179,9 +189,13 @@ private boolean isHexDigit(char c) {
179189
*/
180190
private void processFunctionToken(Token token, StringBuilder functionBuffer) {
181191
if (token.isString()) {
182-
functionBuffer.append(stringQuote);
192+
if (stringQuote != 0) {
193+
functionBuffer.append(stringQuote);
194+
}
183195
functionBuffer.append(token.getValue());
184-
functionBuffer.append(stringQuote);
196+
if (stringQuote != 0) {
197+
functionBuffer.append(stringQuote);
198+
}
185199
} else {
186200
functionBuffer.append(token.getValue());
187201
}

styled-xml-parser/src/test/java/com/itextpdf/styledxmlparser/css/resolve/CssDeclarationValueTokenizerTest.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,39 @@ public void functionTest06() {
6565
runTest("a('x'), b('x')", Arrays.asList("a('x')", ",", "b('x')"), Arrays.asList(CssDeclarationValueTokenizer.TokenType.FUNCTION, CssDeclarationValueTokenizer.TokenType.COMMA, CssDeclarationValueTokenizer.TokenType.FUNCTION));
6666
}
6767

68+
@Test
69+
public void stringTest01() {
70+
runTest("'a b c'", Arrays.asList("a b c"), Arrays.asList(CssDeclarationValueTokenizer.TokenType.STRING));
71+
}
72+
73+
@Test
74+
public void stringTest02() {
75+
runTest("\"a b c\"", Arrays.asList("a b c"), Arrays.asList(CssDeclarationValueTokenizer.TokenType.STRING));
76+
}
77+
78+
@Test
79+
public void stringTest03() {
80+
runTest("[ aa bb cc ]", Arrays.asList("[ aa bb cc ]"),
81+
Arrays.asList(CssDeclarationValueTokenizer.TokenType.STRING));
82+
}
83+
84+
@Test
85+
public void stringTest04() {
86+
runTest("[aa bb cc] [dd ee] 'ff ff'", Arrays.asList("[aa bb cc]", "[dd ee]", "ff ff"),
87+
Arrays.asList(CssDeclarationValueTokenizer.TokenType.STRING,
88+
CssDeclarationValueTokenizer.TokenType.STRING,
89+
CssDeclarationValueTokenizer.TokenType.STRING));
90+
}
91+
92+
@Test
93+
public void functionWithSquareBracketsTest04() {
94+
runTest("'prefix' repeat(3, [aa bb cc] 2 [dd ee] 3) 'ff ff'",
95+
Arrays.asList("prefix", "repeat(3, [aa bb cc] 2 [dd ee] 3)", "ff ff"),
96+
Arrays.asList(CssDeclarationValueTokenizer.TokenType.STRING,
97+
CssDeclarationValueTokenizer.TokenType.FUNCTION,
98+
CssDeclarationValueTokenizer.TokenType.STRING));
99+
}
100+
68101
private void runTest(String src, List<String> tokenValues, List<CssDeclarationValueTokenizer.TokenType> tokenTypes) {
69102
CssDeclarationValueTokenizer tokenizer = new CssDeclarationValueTokenizer(src);
70103
CssDeclarationValueTokenizer.Token token = null;

0 commit comments

Comments
 (0)