mirror of
https://github.com/mozilla/pdf.js.git
synced 2026-07-26 17:07:21 +02:00
Tweak some String.prototype.substring() usage
In a few spots the `indexEnd` parameter is explicitly set to the string-length, which is unnecessary since that's the default value if the parameter is omitted; note https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring#description In the `XMLParserBase.prototype._resolveEntities` method the `substring` usage can be replaced with an updated (and cached) regular expression that directly finds numbers.
This commit is contained in:
parent
04eeeec4a4
commit
6718c2924c
@ -3108,7 +3108,7 @@ class TextWidgetAnnotation extends WidgetAnnotation {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (startChunk < line.length) {
|
if (startChunk < line.length) {
|
||||||
chunks.push(line.substring(startChunk, line.length));
|
chunks.push(line.substring(startChunk));
|
||||||
}
|
}
|
||||||
|
|
||||||
return chunks;
|
return chunks;
|
||||||
|
|||||||
@ -386,7 +386,7 @@ function escapePDFName(str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (start < str.length) {
|
if (start < str.length) {
|
||||||
buffer.push(str.substring(start, str.length));
|
buffer.push(str.substring(start));
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer.join("");
|
return buffer.join("");
|
||||||
@ -545,7 +545,7 @@ function encodeToXmlString(str) {
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
if (start < str.length) {
|
if (start < str.length) {
|
||||||
buffer.push(str.substring(start, str.length));
|
buffer.push(str.substring(start));
|
||||||
}
|
}
|
||||||
return buffer.join("");
|
return buffer.join("");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts
|
// https://github.com/mozilla/shumway/blob/16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0/src/avm2/natives/xml.ts
|
||||||
|
|
||||||
import { encodeToXmlString } from "./core_utils.js";
|
import { encodeToXmlString } from "./core_utils.js";
|
||||||
|
import { shadow } from "../shared/util.js";
|
||||||
|
|
||||||
const XMLParserErrorCode = {
|
const XMLParserErrorCode = {
|
||||||
NoError: 0,
|
NoError: 0,
|
||||||
@ -47,12 +48,17 @@ function isWhitespaceString(s) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class XMLParserBase {
|
class XMLParserBase {
|
||||||
|
static get _entityRegex() {
|
||||||
|
return shadow(this, "_entityRegex", /&(?:#x([^;]+)|#([^;]+)|([^;]+));/g);
|
||||||
|
}
|
||||||
|
|
||||||
_resolveEntities(s) {
|
_resolveEntities(s) {
|
||||||
return s.replaceAll(/&([^;]+);/g, (all, entity) => {
|
return s.replaceAll(XMLParserBase._entityRegex, (_, hex, dec, entity) => {
|
||||||
if (entity.substring(0, 2) === "#x") {
|
if (hex) {
|
||||||
return String.fromCodePoint(parseInt(entity.substring(2), 16));
|
return String.fromCodePoint(parseInt(hex, 16));
|
||||||
} else if (entity.at(0) === "#") {
|
}
|
||||||
return String.fromCodePoint(parseInt(entity.substring(1), 10));
|
if (dec) {
|
||||||
|
return String.fromCodePoint(parseInt(dec, 10));
|
||||||
}
|
}
|
||||||
switch (entity) {
|
switch (entity) {
|
||||||
case "lt":
|
case "lt":
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user