Skip to content

Commit d1d88cc

Browse files
Merge pull request #19662 from Snuffleupagus/xfa-rm-regex
Replace a few simple regular expressions in the XFA-code with string parsing
2 parents 2d1833b + 8a24c19 commit d1d88cc

3 files changed

Lines changed: 10 additions & 19 deletions

File tree

src/core/xfa/config.js

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -956,8 +956,7 @@ class Range extends ContentObject {
956956

957957
[$finalize]() {
958958
this[$content] = this[$content]
959-
.trim()
960-
.split(/\s*,\s*/, 2)
959+
.split(",", 2)
961960
.map(range => range.split("-").map(x => parseInt(x.trim(), 10)))
962961
.filter(range => range.every(x => !isNaN(x)))
963962
.map(range => {
@@ -1308,10 +1307,7 @@ class Window extends ContentObject {
13081307
}
13091308

13101309
[$finalize]() {
1311-
const pair = this[$content]
1312-
.trim()
1313-
.split(/\s*,\s*/, 2)
1314-
.map(x => parseInt(x, 10));
1310+
const pair = this[$content].split(",", 2).map(x => parseInt(x.trim(), 10));
13151311
if (pair.some(x => isNaN(x))) {
13161312
this[$content] = [0, 0];
13171313
return;

src/core/xfa/utils.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,8 @@ function getRatio(data) {
106106
return { num: 1, den: 1 };
107107
}
108108
const ratio = data
109-
.trim()
110-
.split(/\s*:\s*/)
111-
.map(x => parseFloat(x))
109+
.split(":", 2)
110+
.map(x => parseFloat(x.trim()))
112111
.filter(x => !isNaN(x));
113112
if (ratio.length === 1) {
114113
ratio.push(1);
@@ -141,8 +140,7 @@ function getColor(data, def = [0, 0, 0]) {
141140
return { r, g, b };
142141
}
143142
const color = data
144-
.trim()
145-
.split(/\s*,\s*/)
143+
.split(",", 3)
146144
.map(c => MathClamp(parseInt(c.trim(), 10), 0, 255))
147145
.map(c => (isNaN(c) ? 0 : c));
148146

@@ -159,10 +157,8 @@ function getBBox(data) {
159157
if (!data) {
160158
return { x: def, y: def, width: def, height: def };
161159
}
162-
const bbox = data
163-
.trim()
164-
.split(/\s*,\s*/)
165-
.map(m => getMeasurement(m, "-1"));
160+
const bbox = data.split(",", 4).map(m => getMeasurement(m.trim(), "-1"));
161+
166162
if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {
167163
return { x: def, y: def, width: def, height: def };
168164
}

src/core/xfa/xhtml.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,9 @@ function checkStyle(node) {
191191

192192
// Remove any non-allowed keys.
193193
return node.style
194-
.trim()
195-
.split(/\s*;\s*/)
196-
.filter(s => !!s)
197-
.map(s => s.split(/\s*:\s*/, 2))
194+
.split(";")
195+
.filter(s => !!s.trim())
196+
.map(s => s.split(":", 2).map(t => t.trim()))
198197
.filter(([key, value]) => {
199198
if (key === "font-family") {
200199
node[$globalData].usedTypefaces.add(value);

0 commit comments

Comments
 (0)