[Pkg-javascript-commits] [pdf.js] 172/210: small optimizations in parser.getObj(), lexer.getObj()
David Prévot
taffit at moszumanska.debian.org
Thu Jun 5 14:21:14 UTC 2014
This is an automated email from the git hooks/post-receive script.
taffit pushed a commit to branch upstream
in repository pdf.js.
commit f88118dbf950cbf85298dd82afebc7a6fc8a5bd9
Author: fkaelberer <o_0_o at gmx.de>
Date: Fri May 23 09:25:36 2014 +0200
small optimizations in parser.getObj(), lexer.getObj()
---
src/core/parser.js | 113 +++++++++++++++++++++++++++--------------------------
1 file changed, 57 insertions(+), 56 deletions(-)
diff --git a/src/core/parser.js b/src/core/parser.js
index c7e7b18..b5a4b79 100644
--- a/src/core/parser.js
+++ b/src/core/parser.js
@@ -55,55 +55,58 @@ var Parser = (function ParserClosure() {
}
},
getObj: function Parser_getObj(cipherTransform) {
- if (isCmd(this.buf1, 'BI')) { // inline image
- this.shift();
- return this.makeInlineImage(cipherTransform);
- }
- if (isCmd(this.buf1, '[')) { // array
- this.shift();
- var array = [];
- while (!isCmd(this.buf1, ']') && !isEOF(this.buf1)) {
- array.push(this.getObj(cipherTransform));
- }
- if (isEOF(this.buf1)) {
- error('End of file inside array');
- }
- this.shift();
- return array;
- }
- if (isCmd(this.buf1, '<<')) { // dictionary or stream
- this.shift();
- var dict = new Dict(this.xref);
- while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) {
- if (!isName(this.buf1)) {
- info('Malformed dictionary: key must be a name object');
+ var buf1 = this.buf1;
+ this.shift();
+
+ if (buf1 instanceof Cmd) {
+ switch (buf1.cmd) {
+ case 'BI': // inline image
+ return this.makeInlineImage(cipherTransform);
+ case '[': // array
+ var array = [];
+ while (!isCmd(this.buf1, ']') && !isEOF(this.buf1)) {
+ array.push(this.getObj(cipherTransform));
+ }
+ if (isEOF(this.buf1)) {
+ error('End of file inside array');
+ }
this.shift();
- continue;
- }
+ return array;
+ case '<<': // dictionary or stream
+ var dict = new Dict(this.xref);
+ while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) {
+ if (!isName(this.buf1)) {
+ info('Malformed dictionary: key must be a name object');
+ this.shift();
+ continue;
+ }
- var key = this.buf1.name;
- this.shift();
- if (isEOF(this.buf1)) {
- break;
- }
- dict.set(key, this.getObj(cipherTransform));
- }
- if (isEOF(this.buf1)) {
- error('End of file inside dictionary');
- }
+ var key = this.buf1.name;
+ this.shift();
+ if (isEOF(this.buf1)) {
+ break;
+ }
+ dict.set(key, this.getObj(cipherTransform));
+ }
+ if (isEOF(this.buf1)) {
+ error('End of file inside dictionary');
+ }
- // Stream objects are not allowed inside content streams or
- // object streams.
- if (isCmd(this.buf2, 'stream')) {
- return (this.allowStreams ?
- this.makeStream(dict, cipherTransform) : dict);
+ // Stream objects are not allowed inside content streams or
+ // object streams.
+ if (isCmd(this.buf2, 'stream')) {
+ return (this.allowStreams ?
+ this.makeStream(dict, cipherTransform) : dict);
+ }
+ this.shift();
+ return dict;
+ default: // simple object
+ return buf1;
}
- this.shift();
- return dict;
}
- if (isInt(this.buf1)) { // indirect reference or integer
- var num = this.buf1;
- this.shift();
+
+ if (isInt(buf1)) { // indirect reference or integer
+ var num = buf1;
if (isInt(this.buf1) && isCmd(this.buf2, 'R')) {
var ref = new Ref(num, this.buf1);
this.shift();
@@ -112,9 +115,9 @@ var Parser = (function ParserClosure() {
}
return num;
}
- if (isString(this.buf1)) { // string
- var str = this.buf1;
- this.shift();
+
+ if (isString(buf1)) { // string
+ var str = buf1;
if (cipherTransform) {
str = cipherTransform.decryptString(str);
}
@@ -122,9 +125,7 @@ var Parser = (function ParserClosure() {
}
// simple object
- var obj = this.buf1;
- this.shift();
- return obj;
+ return buf1;
},
makeInlineImage: function Parser_makeInlineImage(cipherTransform) {
var lexer = this.lexer;
@@ -629,7 +630,7 @@ var Lexer = (function LexerClosure() {
var x = toHexDigit(ch);
if (x != -1) {
var x2 = toHexDigit(this.nextChar());
- if (x2 == -1) {
+ if (x2 === -1) {
error('Illegal digit in hex char in name: ' + x2);
}
strBuf.push(String.fromCharCode((x << 4) | x2));
@@ -695,7 +696,7 @@ var Lexer = (function LexerClosure() {
return EOF;
}
if (comment) {
- if (ch === 0x0A || ch == 0x0D) { // LF, CR
+ if (ch === 0x0A || ch === 0x0D) { // LF, CR
comment = false;
}
} else if (ch === 0x25) { // '%'
@@ -762,19 +763,19 @@ var Lexer = (function LexerClosure() {
if (knownCommandFound && !(possibleCommand in knownCommands)) {
break;
}
- if (str.length == 128) {
+ if (str.length === 128) {
error('Command token too long: ' + str.length);
}
str = possibleCommand;
knownCommandFound = knownCommands && (str in knownCommands);
}
- if (str == 'true') {
+ if (str === 'true') {
return true;
}
- if (str == 'false') {
+ if (str === 'false') {
return false;
}
- if (str == 'null') {
+ if (str === 'null') {
return null;
}
return Cmd.get(str);
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-javascript/pdf.js.git
More information about the Pkg-javascript-commits
mailing list