pdfjs-dist 2.0.943 → 2.4.456
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8286 -14230
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +25500 -26628
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25473 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +57878 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +407 -0
- package/es5/web/pdf_viewer.js +7757 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +2887 -4094
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +855 -778
- package/lib/core/arithmetic_decoder.js +325 -311
- package/lib/core/bidi.js +117 -50
- package/lib/core/ccitt.js +251 -89
- package/lib/core/ccitt_stream.js +26 -16
- package/lib/core/cff_parser.js +525 -197
- package/lib/core/charsets.js +6 -5
- package/lib/core/chunked_stream.js +541 -406
- package/lib/core/cmap.js +368 -253
- package/lib/core/colorspace.js +781 -800
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +609 -422
- package/lib/core/document.js +649 -481
- package/lib/core/encodings.js +33 -24
- package/lib/core/evaluator.js +1471 -736
- package/lib/core/font_renderer.js +289 -149
- package/lib/core/fonts.js +1067 -413
- package/lib/core/function.js +517 -287
- package/lib/core/glyphlist.js +4529 -4527
- package/lib/core/image.js +232 -114
- package/lib/core/image_utils.js +94 -0
- package/lib/core/jbig2.js +711 -342
- package/lib/core/jbig2_stream.js +31 -19
- package/lib/core/jpeg_stream.js +151 -26
- package/lib/core/jpg.js +433 -181
- package/lib/core/jpx.js +551 -143
- package/lib/core/jpx_stream.js +40 -28
- package/lib/core/metrics.js +2931 -2931
- package/lib/core/murmurhash3.js +104 -97
- package/lib/core/obj.js +1561 -1053
- package/lib/core/operator_list.js +192 -64
- package/lib/core/parser.js +1162 -864
- package/lib/core/pattern.js +224 -75
- package/lib/core/pdf_manager.js +154 -285
- package/lib/core/primitives.js +145 -69
- package/lib/core/ps_parser.js +212 -162
- package/lib/core/standard_fonts.js +245 -244
- package/lib/core/stream.js +353 -81
- package/lib/core/type1_parser.js +218 -68
- package/lib/core/unicode.js +1682 -1655
- package/lib/core/worker.js +233 -302
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +808 -862
- package/lib/display/api.js +1778 -1462
- package/lib/display/api_compatibility.js +14 -9
- package/lib/display/canvas.js +463 -140
- package/lib/display/content_disposition.js +86 -58
- package/lib/display/display_utils.js +524 -0
- package/lib/display/fetch_stream.js +202 -274
- package/lib/display/font_loader.js +311 -333
- package/lib/display/metadata.js +98 -88
- package/lib/display/network.js +343 -347
- package/lib/display/network_utils.js +46 -26
- package/lib/display/node_stream.js +326 -404
- package/lib/display/pattern_helper.js +168 -69
- package/lib/display/svg.js +1296 -885
- package/lib/display/text_layer.js +229 -103
- package/lib/display/transport_stream.js +290 -250
- package/lib/display/webgl.js +116 -83
- package/lib/display/worker_options.js +6 -5
- package/lib/display/xml_parser.js +358 -337
- package/lib/examples/node/domstubs.js +95 -39
- package/lib/pdf.js +49 -31
- package/lib/pdf.worker.js +7 -5
- package/lib/shared/compatibility.js +3 -145
- package/lib/shared/is_node.js +8 -7
- package/lib/shared/message_handler.js +367 -314
- package/lib/shared/util.js +421 -415
- package/lib/test/unit/annotation_spec.js +1570 -690
- package/lib/test/unit/api_spec.js +855 -493
- package/lib/test/unit/bidi_spec.js +12 -12
- package/lib/test/unit/cff_parser_spec.js +88 -61
- package/lib/test/unit/clitests_helper.js +9 -12
- package/lib/test/unit/cmap_spec.js +140 -88
- package/lib/test/unit/colorspace_spec.js +204 -152
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +194 -182
- package/lib/test/unit/custom_spec.js +50 -64
- package/lib/test/unit/display_svg_spec.js +53 -38
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +17 -22
- package/lib/test/unit/encodings_spec.js +15 -57
- package/lib/test/unit/evaluator_spec.js +90 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +219 -205
- package/lib/test/unit/jasmine-boot.js +68 -39
- package/lib/test/unit/message_handler_spec.js +187 -160
- package/lib/test/unit/metadata_spec.js +87 -34
- package/lib/test/unit/murmurhash3_spec.js +13 -13
- package/lib/test/unit/network_spec.js +26 -59
- package/lib/test/unit/network_utils_spec.js +187 -121
- package/lib/test/unit/node_stream_spec.js +98 -90
- package/lib/test/unit/parser_spec.js +173 -131
- package/lib/test/unit/pdf_find_controller_spec.js +148 -67
- package/lib/test/unit/pdf_find_utils_spec.js +35 -34
- package/lib/test/unit/pdf_history_spec.js +45 -33
- package/lib/test/unit/primitives_spec.js +161 -126
- package/lib/test/unit/stream_spec.js +22 -15
- package/lib/test/unit/test_utils.js +149 -98
- package/lib/test/unit/testreporter.js +36 -18
- package/lib/test/unit/type1_parser_spec.js +46 -44
- package/lib/test/unit/ui_utils_spec.js +388 -372
- package/lib/test/unit/unicode_spec.js +49 -46
- package/lib/test/unit/util_spec.js +144 -248
- package/lib/web/annotation_layer_builder.js +75 -95
- package/lib/web/app.js +1538 -1147
- package/lib/web/app_options.js +116 -104
- package/lib/web/base_viewer.js +950 -775
- package/lib/web/chromecom.js +217 -225
- package/lib/web/debugger.js +236 -148
- package/lib/web/download_manager.js +50 -50
- package/lib/web/firefox_print_service.js +51 -33
- package/lib/web/firefoxcom.js +225 -352
- package/lib/web/genericcom.js +30 -93
- package/lib/web/genericl10n.js +26 -143
- package/lib/web/grab_to_pan.js +57 -33
- package/lib/web/interfaces.js +105 -232
- package/lib/web/overlay_manager.js +73 -227
- package/lib/web/password_prompt.js +44 -62
- package/lib/web/pdf_attachment_viewer.js +118 -123
- package/lib/web/pdf_cursor_tools.js +89 -93
- package/lib/web/pdf_document_properties.js +242 -281
- package/lib/web/pdf_find_bar.js +157 -163
- package/lib/web/pdf_find_controller.js +598 -454
- package/lib/web/pdf_find_utils.js +32 -16
- package/lib/web/pdf_history.js +481 -355
- package/lib/web/pdf_link_service.js +355 -323
- package/lib/web/pdf_outline_viewer.js +167 -152
- package/lib/web/pdf_page_view.js +511 -457
- package/lib/web/pdf_presentation_mode.js +347 -335
- package/lib/web/pdf_print_service.js +133 -103
- package/lib/web/pdf_rendering_queue.js +98 -100
- package/lib/web/pdf_sidebar.js +323 -299
- package/lib/web/pdf_sidebar_resizer.js +107 -108
- package/lib/web/pdf_single_page_viewer.js +94 -146
- package/lib/web/pdf_thumbnail_view.js +319 -269
- package/lib/web/pdf_thumbnail_viewer.js +219 -199
- package/lib/web/pdf_viewer.component.js +111 -32
- package/lib/web/pdf_viewer.js +61 -101
- package/lib/web/preferences.js +87 -272
- package/lib/web/secondary_toolbar.js +207 -220
- package/lib/web/text_layer_builder.js +322 -322
- package/lib/web/toolbar.js +227 -180
- package/lib/web/ui_utils.js +476 -421
- package/lib/web/view_history.js +59 -208
- package/lib/web/viewer_compatibility.js +9 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +36 -22
- package/web/pdf_viewer.js +4407 -4516
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -441
- package/lib/shared/streams_polyfill.js +0 -39
- package/lib/shared/url_polyfill.js +0 -50
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/web/dom_events.js +0 -140
package/lib/core/ps_parser.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -19,89 +19,100 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
24
|
Object.defineProperty(exports, "__esModule", {
|
25
25
|
value: true
|
26
26
|
});
|
27
|
-
exports.PostScriptParser = exports.PostScriptLexer =
|
27
|
+
exports.PostScriptParser = exports.PostScriptLexer = void 0;
|
28
28
|
|
29
|
-
var _util = require(
|
29
|
+
var _util = require("../shared/util.js");
|
30
30
|
|
31
|
-
var _primitives = require(
|
31
|
+
var _primitives = require("./primitives.js");
|
32
32
|
|
33
|
-
var
|
34
|
-
|
33
|
+
var _core_utils = require("./core_utils.js");
|
34
|
+
|
35
|
+
class PostScriptParser {
|
36
|
+
constructor(lexer) {
|
35
37
|
this.lexer = lexer;
|
36
38
|
this.operators = [];
|
37
39
|
this.token = null;
|
38
40
|
this.prev = null;
|
39
41
|
}
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
return true;
|
49
|
-
}
|
50
|
-
return false;
|
51
|
-
},
|
52
|
-
expect: function PostScriptParser_expect(type) {
|
53
|
-
if (this.accept(type)) {
|
54
|
-
return true;
|
55
|
-
}
|
56
|
-
throw new _util.FormatError('Unexpected symbol: found ' + this.token.type + ' expected ' + type + '.');
|
57
|
-
},
|
58
|
-
parse: function PostScriptParser_parse() {
|
42
|
+
|
43
|
+
nextToken() {
|
44
|
+
this.prev = this.token;
|
45
|
+
this.token = this.lexer.getToken();
|
46
|
+
}
|
47
|
+
|
48
|
+
accept(type) {
|
49
|
+
if (this.token.type === type) {
|
59
50
|
this.nextToken();
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
51
|
+
return true;
|
52
|
+
}
|
53
|
+
|
54
|
+
return false;
|
55
|
+
}
|
56
|
+
|
57
|
+
expect(type) {
|
58
|
+
if (this.accept(type)) {
|
59
|
+
return true;
|
60
|
+
}
|
61
|
+
|
62
|
+
throw new _util.FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`);
|
63
|
+
}
|
64
|
+
|
65
|
+
parse() {
|
66
|
+
this.nextToken();
|
67
|
+
this.expect(PostScriptTokenTypes.LBRACE);
|
68
|
+
this.parseBlock();
|
69
|
+
this.expect(PostScriptTokenTypes.RBRACE);
|
70
|
+
return this.operators;
|
71
|
+
}
|
72
|
+
|
73
|
+
parseBlock() {
|
74
|
+
while (true) {
|
75
|
+
if (this.accept(PostScriptTokenTypes.NUMBER)) {
|
76
|
+
this.operators.push(this.prev.value);
|
77
|
+
} else if (this.accept(PostScriptTokenTypes.OPERATOR)) {
|
78
|
+
this.operators.push(this.prev.value);
|
79
|
+
} else if (this.accept(PostScriptTokenTypes.LBRACE)) {
|
80
|
+
this.parseCondition();
|
81
|
+
} else {
|
82
|
+
return;
|
76
83
|
}
|
77
|
-
}
|
78
|
-
|
79
|
-
|
84
|
+
}
|
85
|
+
}
|
86
|
+
|
87
|
+
parseCondition() {
|
88
|
+
const conditionLocation = this.operators.length;
|
89
|
+
this.operators.push(null, null);
|
90
|
+
this.parseBlock();
|
91
|
+
this.expect(PostScriptTokenTypes.RBRACE);
|
92
|
+
|
93
|
+
if (this.accept(PostScriptTokenTypes.IF)) {
|
94
|
+
this.operators[conditionLocation] = this.operators.length;
|
95
|
+
this.operators[conditionLocation + 1] = "jz";
|
96
|
+
} else if (this.accept(PostScriptTokenTypes.LBRACE)) {
|
97
|
+
const jumpLocation = this.operators.length;
|
80
98
|
this.operators.push(null, null);
|
99
|
+
const endOfTrue = this.operators.length;
|
81
100
|
this.parseBlock();
|
82
101
|
this.expect(PostScriptTokenTypes.RBRACE);
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
this.parseBlock();
|
91
|
-
this.expect(PostScriptTokenTypes.RBRACE);
|
92
|
-
this.expect(PostScriptTokenTypes.IFELSE);
|
93
|
-
this.operators[jumpLocation] = this.operators.length;
|
94
|
-
this.operators[jumpLocation + 1] = 'j';
|
95
|
-
this.operators[conditionLocation] = endOfTrue;
|
96
|
-
this.operators[conditionLocation + 1] = 'jz';
|
97
|
-
} else {
|
98
|
-
throw new _util.FormatError('PS Function: error parsing conditional.');
|
99
|
-
}
|
102
|
+
this.expect(PostScriptTokenTypes.IFELSE);
|
103
|
+
this.operators[jumpLocation] = this.operators.length;
|
104
|
+
this.operators[jumpLocation + 1] = "j";
|
105
|
+
this.operators[conditionLocation] = endOfTrue;
|
106
|
+
this.operators[conditionLocation + 1] = "jz";
|
107
|
+
} else {
|
108
|
+
throw new _util.FormatError("PS Function: error parsing conditional.");
|
100
109
|
}
|
101
|
-
}
|
102
|
-
|
103
|
-
}
|
104
|
-
|
110
|
+
}
|
111
|
+
|
112
|
+
}
|
113
|
+
|
114
|
+
exports.PostScriptParser = PostScriptParser;
|
115
|
+
const PostScriptTokenTypes = {
|
105
116
|
LBRACE: 0,
|
106
117
|
RBRACE: 1,
|
107
118
|
NUMBER: 2,
|
@@ -109,111 +120,150 @@ var PostScriptTokenTypes = {
|
|
109
120
|
IF: 4,
|
110
121
|
IFELSE: 5
|
111
122
|
};
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
123
|
+
|
124
|
+
const PostScriptToken = function PostScriptTokenClosure() {
|
125
|
+
const opCache = Object.create(null);
|
126
|
+
|
127
|
+
class PostScriptToken {
|
128
|
+
constructor(type, value) {
|
129
|
+
this.type = type;
|
130
|
+
this.value = value;
|
131
|
+
}
|
132
|
+
|
133
|
+
static getOperator(op) {
|
134
|
+
const opValue = opCache[op];
|
135
|
+
|
136
|
+
if (opValue) {
|
137
|
+
return opValue;
|
138
|
+
}
|
139
|
+
|
140
|
+
return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
|
141
|
+
}
|
142
|
+
|
143
|
+
static get LBRACE() {
|
144
|
+
return (0, _util.shadow)(this, "LBRACE", new PostScriptToken(PostScriptTokenTypes.LBRACE, "{"));
|
145
|
+
}
|
146
|
+
|
147
|
+
static get RBRACE() {
|
148
|
+
return (0, _util.shadow)(this, "RBRACE", new PostScriptToken(PostScriptTokenTypes.RBRACE, "}"));
|
149
|
+
}
|
150
|
+
|
151
|
+
static get IF() {
|
152
|
+
return (0, _util.shadow)(this, "IF", new PostScriptToken(PostScriptTokenTypes.IF, "IF"));
|
153
|
+
}
|
154
|
+
|
155
|
+
static get IFELSE() {
|
156
|
+
return (0, _util.shadow)(this, "IFELSE", new PostScriptToken(PostScriptTokenTypes.IFELSE, "IFELSE"));
|
157
|
+
}
|
158
|
+
|
116
159
|
}
|
117
|
-
|
118
|
-
PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {
|
119
|
-
var opValue = opCache[op];
|
120
|
-
if (opValue) {
|
121
|
-
return opValue;
|
122
|
-
}
|
123
|
-
return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
|
124
|
-
};
|
125
|
-
PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE, '{');
|
126
|
-
PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE, '}');
|
127
|
-
PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');
|
128
|
-
PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE, 'IFELSE');
|
160
|
+
|
129
161
|
return PostScriptToken;
|
130
162
|
}();
|
131
|
-
|
132
|
-
|
163
|
+
|
164
|
+
class PostScriptLexer {
|
165
|
+
constructor(stream) {
|
133
166
|
this.stream = stream;
|
134
167
|
this.nextChar();
|
135
168
|
this.strBuf = [];
|
136
169
|
}
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
if (ch === 0x0A || ch === 0x0D) {
|
150
|
-
comment = false;
|
151
|
-
}
|
152
|
-
} else if (ch === 0x25) {
|
153
|
-
comment = true;
|
154
|
-
} else if (!(0, _util.isSpace)(ch)) {
|
155
|
-
break;
|
156
|
-
}
|
157
|
-
ch = this.nextChar();
|
158
|
-
}
|
159
|
-
switch (ch | 0) {
|
160
|
-
case 0x30:
|
161
|
-
case 0x31:
|
162
|
-
case 0x32:
|
163
|
-
case 0x33:
|
164
|
-
case 0x34:
|
165
|
-
case 0x35:
|
166
|
-
case 0x36:
|
167
|
-
case 0x37:
|
168
|
-
case 0x38:
|
169
|
-
case 0x39:
|
170
|
-
case 0x2B:
|
171
|
-
case 0x2D:
|
172
|
-
case 0x2E:
|
173
|
-
return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());
|
174
|
-
case 0x7B:
|
175
|
-
this.nextChar();
|
176
|
-
return PostScriptToken.LBRACE;
|
177
|
-
case 0x7D:
|
178
|
-
this.nextChar();
|
179
|
-
return PostScriptToken.RBRACE;
|
180
|
-
}
|
181
|
-
var strBuf = this.strBuf;
|
182
|
-
strBuf.length = 0;
|
183
|
-
strBuf[0] = String.fromCharCode(ch);
|
184
|
-
while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A)) {
|
185
|
-
strBuf.push(String.fromCharCode(ch));
|
186
|
-
}
|
187
|
-
var str = strBuf.join('');
|
188
|
-
switch (str.toLowerCase()) {
|
189
|
-
case 'if':
|
190
|
-
return PostScriptToken.IF;
|
191
|
-
case 'ifelse':
|
192
|
-
return PostScriptToken.IFELSE;
|
193
|
-
default:
|
194
|
-
return PostScriptToken.getOperator(str);
|
170
|
+
|
171
|
+
nextChar() {
|
172
|
+
return this.currentChar = this.stream.getByte();
|
173
|
+
}
|
174
|
+
|
175
|
+
getToken() {
|
176
|
+
let comment = false;
|
177
|
+
let ch = this.currentChar;
|
178
|
+
|
179
|
+
while (true) {
|
180
|
+
if (ch < 0) {
|
181
|
+
return _primitives.EOF;
|
195
182
|
}
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
strBuf.length = 0;
|
201
|
-
strBuf[0] = String.fromCharCode(ch);
|
202
|
-
while ((ch = this.nextChar()) >= 0) {
|
203
|
-
if (ch >= 0x30 && ch <= 0x39 || ch === 0x2D || ch === 0x2E) {
|
204
|
-
strBuf.push(String.fromCharCode(ch));
|
205
|
-
} else {
|
206
|
-
break;
|
183
|
+
|
184
|
+
if (comment) {
|
185
|
+
if (ch === 0x0a || ch === 0x0d) {
|
186
|
+
comment = false;
|
207
187
|
}
|
188
|
+
} else if (ch === 0x25) {
|
189
|
+
comment = true;
|
190
|
+
} else if (!(0, _core_utils.isWhiteSpace)(ch)) {
|
191
|
+
break;
|
208
192
|
}
|
209
|
-
|
210
|
-
|
211
|
-
|
193
|
+
|
194
|
+
ch = this.nextChar();
|
195
|
+
}
|
196
|
+
|
197
|
+
switch (ch | 0) {
|
198
|
+
case 0x30:
|
199
|
+
case 0x31:
|
200
|
+
case 0x32:
|
201
|
+
case 0x33:
|
202
|
+
case 0x34:
|
203
|
+
case 0x35:
|
204
|
+
case 0x36:
|
205
|
+
case 0x37:
|
206
|
+
case 0x38:
|
207
|
+
case 0x39:
|
208
|
+
case 0x2b:
|
209
|
+
case 0x2d:
|
210
|
+
case 0x2e:
|
211
|
+
return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());
|
212
|
+
|
213
|
+
case 0x7b:
|
214
|
+
this.nextChar();
|
215
|
+
return PostScriptToken.LBRACE;
|
216
|
+
|
217
|
+
case 0x7d:
|
218
|
+
this.nextChar();
|
219
|
+
return PostScriptToken.RBRACE;
|
220
|
+
}
|
221
|
+
|
222
|
+
const strBuf = this.strBuf;
|
223
|
+
strBuf.length = 0;
|
224
|
+
strBuf[0] = String.fromCharCode(ch);
|
225
|
+
|
226
|
+
while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) {
|
227
|
+
strBuf.push(String.fromCharCode(ch));
|
228
|
+
}
|
229
|
+
|
230
|
+
const str = strBuf.join("");
|
231
|
+
|
232
|
+
switch (str.toLowerCase()) {
|
233
|
+
case "if":
|
234
|
+
return PostScriptToken.IF;
|
235
|
+
|
236
|
+
case "ifelse":
|
237
|
+
return PostScriptToken.IFELSE;
|
238
|
+
|
239
|
+
default:
|
240
|
+
return PostScriptToken.getOperator(str);
|
241
|
+
}
|
242
|
+
}
|
243
|
+
|
244
|
+
getNumber() {
|
245
|
+
let ch = this.currentChar;
|
246
|
+
const strBuf = this.strBuf;
|
247
|
+
strBuf.length = 0;
|
248
|
+
strBuf[0] = String.fromCharCode(ch);
|
249
|
+
|
250
|
+
while ((ch = this.nextChar()) >= 0) {
|
251
|
+
if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) {
|
252
|
+
strBuf.push(String.fromCharCode(ch));
|
253
|
+
} else {
|
254
|
+
break;
|
212
255
|
}
|
213
|
-
return value;
|
214
256
|
}
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
257
|
+
|
258
|
+
const value = parseFloat(strBuf.join(""));
|
259
|
+
|
260
|
+
if (isNaN(value)) {
|
261
|
+
throw new _util.FormatError(`Invalid floating point number: ${value}`);
|
262
|
+
}
|
263
|
+
|
264
|
+
return value;
|
265
|
+
}
|
266
|
+
|
267
|
+
}
|
268
|
+
|
269
|
+
exports.PostScriptLexer = PostScriptLexer;
|