From: Andreas Gal Date: Tue, 3 May 2011 00:20:08 +0000 (-0700) Subject: use ES5 Object operations for lazy properties X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=21c54da9d1dea6959c0f2a701eff86363bdd084f;p=pdf.js.git use ES5 Object operations for lazy properties --- diff --git a/pdf.js b/pdf.js index a1facc4..0437816 100644 --- a/pdf.js +++ b/pdf.js @@ -558,16 +558,37 @@ var PDFDoc = (function () { this.setup(arrayBuffer); } + function ShadowGetter(obj, name, value) { + Object.defineProperty(obj, name, { + value: value, + configurable: false, + writable: false, + enumerable: true + }); + } + constructor.prototype = { - getLinearization: function() { - var linearization = this.linearization; - if (!linearization) - return this.linearization = new Linearization(this.stream); + get linearization() { + var length = this.stream.length; + var linearization = false; + if (length) { + linearization = new Linearization(this.stream); + if (linearization.length != length) + linearization = false; + } + ShadowGetter(this, "linearization", linearization); return linearization; }, - isLinearized: function() { - var length = this.stream.length; - return length && this.getLinearization().length == length; + get startXRef() { + var startXRef; + var linearization = this.linearization; + if (linearization) { + // TODO + } else { + // TODO + } + ShadowGetter(this, "startXRef", startXRef); + return startXRef; }, // Find the header, remove leading garbage and setup the stream // starting from the header.