mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 15:23:02 +00:00 
			
		
		
		
	Code cosmetics comic reader
This commit is contained in:
		| @@ -8,6 +8,8 @@ | ||||
|  * Copyright(c) 2011 Google Inc. | ||||
|  */ | ||||
|  | ||||
| /* global bitjs */ | ||||
|  | ||||
| var bitjs = bitjs || {}; | ||||
| bitjs.archive = bitjs.archive || {}; | ||||
|  | ||||
| @@ -15,7 +17,7 @@ bitjs.archive = bitjs.archive || {}; | ||||
|  | ||||
|     // =========================================================================== | ||||
|     // Stolen from Closure because it's the best way to do Java-like inheritance. | ||||
|     bitjs.base = function(me, optMethodName, var_args) { | ||||
|     bitjs.base = function(me, optMethodName, varArgs) { | ||||
|         var caller = arguments.callee.caller; | ||||
|         if (caller.superClass_) { | ||||
|             // This is a constructor. Call the superclass constructor. | ||||
| @@ -48,10 +50,10 @@ bitjs.archive = bitjs.archive || {}; | ||||
|     }; | ||||
|     bitjs.inherits = function(childCtor, parentCtor) { | ||||
|         /** @constructor */ | ||||
|         function tempCtor() {}; | ||||
|         tempCtor.prototype = parentCtor.prototype; | ||||
|         function TempCtor() {} | ||||
|         TempCtor.prototype = parentCtor.prototype; | ||||
|         childCtor.superClass_ = parentCtor.prototype; | ||||
|         childCtor.prototype = new tempCtor(); | ||||
|         childCtor.prototype = new TempCtor(); | ||||
|         childCtor.prototype.constructor = childCtor; | ||||
|     }; | ||||
|     // =========================================================================== | ||||
| @@ -296,7 +298,7 @@ bitjs.archive = bitjs.archive || {}; | ||||
|             }; | ||||
|  | ||||
|             this.worker_.onmessage = function(e) { | ||||
|                 if (typeof e.data == "string") { | ||||
|                 if (typeof e.data === "string") { | ||||
|                     // Just log any strings the workers pump our way. | ||||
|                     console.log(e.data); | ||||
|                 } else { | ||||
|   | ||||
| @@ -9,6 +9,8 @@ | ||||
|  * Copyright(c) 2011 antimatter15 | ||||
|  */ | ||||
|  | ||||
| /* global bitjs, Uint8Array */ | ||||
|  | ||||
| var bitjs = bitjs || {}; | ||||
| bitjs.io = bitjs.io || {}; | ||||
|  | ||||
| @@ -58,16 +60,16 @@ bitjs.io = bitjs.io || {}; | ||||
|      * @return {number} The peeked bits, as an unsigned number. | ||||
|      */ | ||||
|     bitjs.io.BitStream.prototype.peekBitsLtr = function(n, movePointers) { | ||||
|         if (n <= 0 || typeof n != typeof 1) { | ||||
|         if (n <= 0 || typeof n !== typeof 1) { | ||||
|             return 0; | ||||
|         } | ||||
|  | ||||
|         movePointers = movePointers || false, | ||||
|             bytePtr = this.bytePtr, | ||||
|             bitPtr = this.bitPtr, | ||||
|             result = 0, | ||||
|             bitsIn = 0, | ||||
|             bytes = this.bytes; | ||||
|         var movePointers = movePointers || false; | ||||
|         var bytePtr = this.bytePtr; | ||||
|         var bitPtr = this.bitPtr; | ||||
|         var result = 0; | ||||
|         var bitsIn = 0; | ||||
|         var bytes = this.bytes; | ||||
|  | ||||
|         // keep going until we have no more bits left to peek at | ||||
|         // TODO: Consider putting all bits from bytes we will need into a variable and then | ||||
| @@ -123,11 +125,11 @@ bitjs.io = bitjs.io || {}; | ||||
|             return 0; | ||||
|         } | ||||
|  | ||||
|         var movePointers = movePointers || false, | ||||
|             bytePtr = this.bytePtr, | ||||
|             bitPtr = this.bitPtr, | ||||
|             result = 0, | ||||
|             bytes = this.bytes; | ||||
|         var movePointers = movePointers || false; | ||||
|         var bytePtr = this.bytePtr; | ||||
|         var bitPtr = this.bitPtr; | ||||
|         var result = 0; | ||||
|         var bytes = this.bytes; | ||||
|  | ||||
|         // keep going until we have no more bits left to peek at | ||||
|         // TODO: Consider putting all bits from bytes we will need into a variable and then | ||||
| @@ -138,7 +140,7 @@ bitjs.io = bitjs.io || {}; | ||||
|             if (bytePtr >= bytes.length) { | ||||
|                 throw "Error!  Overflowed the bit stream! n=" + n + ", bytePtr=" + bytePtr + ", bytes.length=" + | ||||
|                     bytes.length + ", bitPtr=" + bitPtr; | ||||
|                 return -1; | ||||
|                 // return -1; | ||||
|             } | ||||
|  | ||||
|             var numBitsLeftInThisByte = (8 - bitPtr); | ||||
| @@ -207,8 +209,8 @@ bitjs.io = bitjs.io || {}; | ||||
|         } | ||||
|  | ||||
|         movePointers = movePointers || false; | ||||
|         var bytePtr = this.bytePtr, | ||||
|             bitPtr = this.bitPtr; | ||||
|         var bytePtr = this.bytePtr; | ||||
|         // var bitPtr = this.bitPtr; | ||||
|  | ||||
|         var result = this.bytes.subarray(bytePtr, bytePtr + n); | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * | ||||
|  * http://kthoom.googlecode.com/hg/docs/unrar.html | ||||
|  */ | ||||
| /* global bitjs */ | ||||
| /* global bitjs, importScripts */ | ||||
|  | ||||
| // This file expects to be invoked as a Worker (see onmessage below). | ||||
| importScripts("io.js"); | ||||
| @@ -50,15 +50,15 @@ var twoByteValueToHexString = function(num) { | ||||
|  | ||||
|  | ||||
| // Volume Types | ||||
| var MARK_HEAD      = 0x72, | ||||
|     MAIN_HEAD      = 0x73, | ||||
| // MARK_HEAD      = 0x72; | ||||
| var MAIN_HEAD      = 0x73, | ||||
|     FILE_HEAD      = 0x74, | ||||
|     COMM_HEAD      = 0x75, | ||||
|     AV_HEAD        = 0x76, | ||||
|     SUB_HEAD       = 0x77, | ||||
|     PROTECT_HEAD   = 0x78, | ||||
|     SIGN_HEAD      = 0x79, | ||||
|     NEWSUB_HEAD    = 0x7a, | ||||
|     // COMM_HEAD      = 0x75, | ||||
|     // AV_HEAD        = 0x76, | ||||
|     // SUB_HEAD       = 0x77, | ||||
|     // PROTECT_HEAD   = 0x78, | ||||
|     // SIGN_HEAD      = 0x79, | ||||
|     // NEWSUB_HEAD    = 0x7a, | ||||
|     ENDARC_HEAD    = 0x7b; | ||||
|  | ||||
| // bstream is a bit stream | ||||
| @@ -147,7 +147,7 @@ var RarVolumeHeader = function(bstream) { | ||||
|                 this.HighPackSize = 0; | ||||
|                 this.HighUnpSize = 0; | ||||
|                 if (this.unpackedSize == 0xffffffff) { | ||||
|                     this.HighUnpSize = 0x7fffffff | ||||
|                     this.HighUnpSize = 0x7fffffff; | ||||
|                     this.unpackedSize = 0xffffffff; | ||||
|                 } | ||||
|             } | ||||
| @@ -160,7 +160,7 @@ var RarVolumeHeader = function(bstream) { | ||||
|             // read in filename | ||||
|  | ||||
|             this.filename = bstream.readBytes(this.nameSize); | ||||
|             for (var _i = 0, _s = ''; _i < this.filename.length; _i++) { | ||||
|             for (var _i = 0, _s = ""; _i < this.filename.length ; _i++) { | ||||
|                 _s += String.fromCharCode(this.filename[_i]); | ||||
|             } | ||||
|  | ||||
| @@ -180,13 +180,15 @@ var RarVolumeHeader = function(bstream) { | ||||
|                     var rmode = extTimeFlags >> ((3 - I) * 4); | ||||
|                     if ((rmode & 8)==0) | ||||
|                         continue; | ||||
|                     if (I!=0) | ||||
|                     if (I!=0) { | ||||
|                         bstream.readBits(16); | ||||
|                     } | ||||
|                     var count = (rmode & 3); | ||||
|                         for (var J = 0; J < count; ++J) | ||||
|                     for (var J = 0; J < count; ++J) { | ||||
|                         bstream.readBits(8); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if (this.flags.LHD_COMMENT) { | ||||
|                 info("Found a LHD_COMMENT"); | ||||
| @@ -206,8 +208,8 @@ var RarVolumeHeader = function(bstream) { | ||||
|     } | ||||
| }; | ||||
|  | ||||
| var BLOCK_LZ  = 0, | ||||
|     BLOCK_PPM = 1; | ||||
| var BLOCK_LZ  = 0; | ||||
|     // BLOCK_PPM = 1; | ||||
|  | ||||
| var rLDecode = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224],  | ||||
|     rLBits = [0, 0, 0, 0, 0, 0, 0, 0, 1,  1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4,  4,  5,  5,  5,  5], | ||||
|   | ||||
| @@ -7,11 +7,10 @@ | ||||
|  * | ||||
|  * TAR format: http://www.gnu.org/software/automake/manual/tar/Standard.html | ||||
|  */ | ||||
| /* global bitjs */ | ||||
|  | ||||
| // This file expects to be invoked as a Worker (see onmessage below). | ||||
| importScripts("io.js"); | ||||
| importScripts("archive.js"); | ||||
| importScripts('io.js'); | ||||
| importScripts('archive.js'); | ||||
|  | ||||
| // Progress variables. | ||||
| var currentFilename = ""; | ||||
| @@ -42,7 +41,7 @@ var postProgress = function() { | ||||
| var readCleanString = function(bstr, numBytes) { | ||||
|   var str = bstr.readString(numBytes); | ||||
|   var zIndex = str.indexOf(String.fromCharCode(0)); | ||||
|     return zIndex !== -1 ? str.substr(0, zIndex) : str; | ||||
|   return zIndex != -1 ? str.substr(0, zIndex) : str; | ||||
| }; | ||||
|  | ||||
| // takes a ByteStream and parses out the local file information | ||||
| @@ -61,7 +60,7 @@ var TarLocalFile = function(bstream) { | ||||
|   this.linkname = readCleanString(bstream, 100); | ||||
|   this.maybeMagic = readCleanString(bstream, 6); | ||||
|  | ||||
|     if (this.maybeMagic === "ustar") { | ||||
|   if (this.maybeMagic == "ustar") { | ||||
|   	this.version = readCleanString(bstream, 2); | ||||
|   	this.uname = readCleanString(bstream, 32); | ||||
|   	this.gname = readCleanString(bstream, 32); | ||||
| @@ -86,7 +85,7 @@ var TarLocalFile = function(bstream) { | ||||
|   info("  typeflag = " + this.typeflag); | ||||
|  | ||||
|   // A regular file. | ||||
|     if (this.typeflag === 0) { | ||||
|   if (this.typeflag == 0) { | ||||
|   	info("  This is a regular file."); | ||||
|   	var sizeInBytes = parseInt(this.size); | ||||
|   	this.fileData = new Uint8Array(bstream.bytes.buffer, bstream.ptr, this.size); | ||||
| @@ -101,8 +100,8 @@ var TarLocalFile = function(bstream) { | ||||
|   	if (remaining > 0 && remaining < 512) { | ||||
|       bstream.readBytes(remaining); | ||||
|   	} | ||||
|     } else if (this.typeflag === 5) { | ||||
|         info("  This is a directory."); | ||||
|   } else if (this.typeflag == 5) { | ||||
|   	 info("  This is a directory.") | ||||
|   } | ||||
| }; | ||||
|  | ||||
| @@ -122,7 +121,7 @@ var untar = function(arrayBuffer) { | ||||
|   var localFiles = []; | ||||
|  | ||||
|   // While we don't encounter an empty block, keep making TarLocalFiles. | ||||
|     while (bstream.peekNumber(4) !== 0) { | ||||
|   while (bstream.peekNumber(4) != 0) { | ||||
|   	var oneLocalFile = new TarLocalFile(bstream); | ||||
|   	if (oneLocalFile && oneLocalFile.isValid) { | ||||
|       localFiles.push(oneLocalFile); | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|  * ZIP format: http://www.pkware.com/documents/casestudies/APPNOTE.TXT | ||||
|  * DEFLATE format: http://tools.ietf.org/html/rfc1951 | ||||
|  */ | ||||
| /* global bitjs */  | ||||
| /* global bitjs, importScripts, Uint8Array  */ | ||||
|  | ||||
| // This file expects to be invoked as a Worker (see onmessage below). | ||||
| importScripts("io.js"); | ||||
| @@ -44,12 +44,12 @@ var zLocalFileHeaderSignature = 0x04034b50; | ||||
| var zArchiveExtraDataSignature = 0x08064b50; | ||||
| var zCentralFileHeaderSignature = 0x02014b50; | ||||
| var zDigitalSignatureSignature = 0x05054b50; | ||||
| var zEndOfCentralDirSignature = 0x06064b50; | ||||
| var zEndOfCentralDirLocatorSignature = 0x07064b50; | ||||
| //var zEndOfCentralDirSignature = 0x06064b50; | ||||
| //var zEndOfCentralDirLocatorSignature = 0x07064b50; | ||||
|  | ||||
| // takes a ByteStream and parses out the local file information | ||||
| var ZipLocalFile = function(bstream) { | ||||
|     if (typeof bstream != typeof {} || !bstream.readNumber || typeof bstream.readNumber != typeof function(){}) { | ||||
|     if (typeof bstream !== typeof {} || !bstream.readNumber || typeof bstream.readNumber != typeof function() {} ) { | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
| @@ -100,7 +100,7 @@ var ZipLocalFile = function(bstream) { | ||||
|     // "This descriptor exists only if bit 3 of the general purpose bit flag is set" | ||||
|     // But how do you figure out how big the file data is if you don't know the compressedSize | ||||
|     // from the header?!? | ||||
|     if ((this.generalPurpose & bitjs.BIT[3]) != 0) { | ||||
|     if ((this.generalPurpose & bitjs.BIT[3]) !== 0) { | ||||
|         this.crc32 = bstream.readNumber(4); | ||||
|         this.compressedSize = bstream.readNumber(4); | ||||
|         this.uncompressedSize = bstream.readNumber(4); | ||||
| @@ -111,13 +111,13 @@ var ZipLocalFile = function(bstream) { | ||||
| ZipLocalFile.prototype.unzip = function() { | ||||
|  | ||||
|     // Zip Version 1.0, no compression (store only) | ||||
|     if (this.compressionMethod == 0 ) { | ||||
|     if (this.compressionMethod === 0 ) { | ||||
|         info("ZIP v" + this.version + ", store only: " + this.filename + " (" + this.compressedSize + " bytes)"); | ||||
|         currentBytesUnarchivedInFile = this.compressedSize; | ||||
|         currentBytesUnarchived += this.compressedSize; | ||||
|     } | ||||
|     // version == 20, compression method == 8 (DEFLATE) | ||||
|     else if (this.compressionMethod == 8) { | ||||
|     else if (this.compressionMethod === 8) { | ||||
|         info("ZIP v2.0, DEFLATE: " + this.filename + " (" + this.compressedSize + " bytes)"); | ||||
|         this.fileData = inflate(this.fileData, this.uncompressedSize); | ||||
|     } | ||||
| @@ -144,10 +144,10 @@ var unzip = function(arrayBuffer) { | ||||
|  | ||||
|     var bstream = new bitjs.io.ByteStream(arrayBuffer); | ||||
|     // detect local file header signature or return null | ||||
|     if (bstream.peekNumber(4) == zLocalFileHeaderSignature) { | ||||
|     if (bstream.peekNumber(4) === zLocalFileHeaderSignature) { | ||||
|         var localFiles = []; | ||||
|         // loop until we don't see any more local files | ||||
|         while (bstream.peekNumber(4) == zLocalFileHeaderSignature) { | ||||
|         while (bstream.peekNumber(4) === zLocalFileHeaderSignature) { | ||||
|             var oneLocalFile = new ZipLocalFile(bstream); | ||||
|             // this should strip out directories/folders | ||||
|             if (oneLocalFile && oneLocalFile.uncompressedSize > 0 && oneLocalFile.fileData) { | ||||
| @@ -165,7 +165,7 @@ var unzip = function(arrayBuffer) { | ||||
|         }); | ||||
|  | ||||
|         // archive extra data record | ||||
|         if (bstream.peekNumber(4) == zArchiveExtraDataSignature) { | ||||
|         if (bstream.peekNumber(4) === zArchiveExtraDataSignature) { | ||||
|             info(" Found an Archive Extra Data Signature"); | ||||
|  | ||||
|             // skipping this record for now | ||||
| @@ -176,11 +176,11 @@ var unzip = function(arrayBuffer) { | ||||
|  | ||||
|         // central directory structure | ||||
|         // TODO: handle the rest of the structures (Zip64 stuff) | ||||
|         if (bstream.peekNumber(4) == zCentralFileHeaderSignature) { | ||||
|         if (bstream.peekNumber(4) === zCentralFileHeaderSignature) { | ||||
|             info(" Found a Central File Header"); | ||||
|  | ||||
|             // read all file headers | ||||
|             while (bstream.peekNumber(4) == zCentralFileHeaderSignature) { | ||||
|             while (bstream.peekNumber(4) === zCentralFileHeaderSignature) { | ||||
|                 bstream.readNumber(4); // signature | ||||
|                 bstream.readNumber(2); // version made by | ||||
|                 bstream.readNumber(2); // version needed to extract | ||||
| @@ -206,7 +206,7 @@ var unzip = function(arrayBuffer) { | ||||
|         } | ||||
|  | ||||
|         // digital signature | ||||
|         if (bstream.peekNumber(4) == zDigitalSignatureSignature) { | ||||
|         if (bstream.peekNumber(4) === zDigitalSignatureSignature) { | ||||
|             info(" Found a Digital Signature"); | ||||
|  | ||||
|             bstream.readNumber(4); | ||||
| @@ -231,7 +231,7 @@ var unzip = function(arrayBuffer) { | ||||
|             // actually do the unzipping | ||||
|             localfile.unzip(); | ||||
|  | ||||
|             if (localfile.fileData != null) { | ||||
|             if (localfile.fileData !== null) { | ||||
|                 postMessage(new bitjs.archive.UnarchiveExtractEvent(localfile)); | ||||
|                 postProgress(); | ||||
|             } | ||||
| @@ -239,58 +239,58 @@ var unzip = function(arrayBuffer) { | ||||
|         postProgress(); | ||||
|         postMessage(new bitjs.archive.UnarchiveFinishEvent()); | ||||
|     } | ||||
| } | ||||
| }; | ||||
|  | ||||
| // returns a table of Huffman codes  | ||||
| // each entry's index is its code and its value is a JavaScript object  | ||||
| // containing {length: 6, symbol: X} | ||||
| function getHuffmanCodes(bitLengths) { | ||||
|     // ensure bitLengths is an array containing at least one element | ||||
|     if (typeof bitLengths != typeof [] || bitLengths.length < 1) { | ||||
|     if (typeof bitLengths !== typeof [] || bitLengths.length < 1) { | ||||
|         err("Error! getHuffmanCodes() called with an invalid array"); | ||||
|         return null; | ||||
|     } | ||||
|  | ||||
|     // Reference: http://tools.ietf.org/html/rfc1951#page-8 | ||||
|     var numLengths = bitLengths.length, | ||||
|         bl_count = [], | ||||
|         blCount = [], | ||||
|         MAX_BITS = 1; | ||||
|  | ||||
|     // Step 1: count up how many codes of each length we have | ||||
|     for (var i = 0; i < numLengths; ++i) { | ||||
|         var length = bitLengths[i]; | ||||
|         var len = bitLengths[i]; | ||||
|         // test to ensure each bit length is a positive, non-zero number | ||||
|         if (typeof length != typeof 1 || length < 0) { | ||||
|             err("bitLengths contained an invalid number in getHuffmanCodes(): " + length + " of type " + (typeof length)); | ||||
|         if (typeof len !== typeof 1 || len < 0) { | ||||
|             err("bitLengths contained an invalid number in getHuffmanCodes(): " + len + " of type " + (typeof len)); | ||||
|             return null; | ||||
|         } | ||||
|         // increment the appropriate bitlength count | ||||
|         if (bl_count[length] == undefined) bl_count[length] = 0; | ||||
|         if (blCount[len] === undefined) blCount[len] = 0; | ||||
|         // a length of zero means this symbol is not participating in the huffman coding | ||||
|         if (length > 0) bl_count[length]++; | ||||
|         if (len > 0) blCount[len]++; | ||||
|  | ||||
|         if (length > MAX_BITS) MAX_BITS = length; | ||||
|         if (len > MAX_BITS) MAX_BITS = len; | ||||
|     } | ||||
|  | ||||
|     // Step 2: Find the numerical value of the smallest code for each code length | ||||
|     var next_code = [], | ||||
|     var nextCode = [], | ||||
|         code = 0; | ||||
|     for (var bits = 1; bits <= MAX_BITS; ++bits) { | ||||
|         var length = bits-1; | ||||
|         var len = bits-1; | ||||
|         // ensure undefined lengths are zero | ||||
|         if (bl_count[length] == undefined) bl_count[length] = 0; | ||||
|         code = (code + bl_count[bits-1]) << 1; | ||||
|         next_code[bits] = code; | ||||
|         if (blCount[len] == undefined) blCount[len] = 0; | ||||
|         code = (code + blCount[bits-1]) << 1; | ||||
|         nextCode[bits] = code; | ||||
|     } | ||||
|  | ||||
|     // Step 3: Assign numerical values to all codes | ||||
|     var table = {}, tableLength = 0; | ||||
|     for (var n = 0; n < numLengths; ++n) { | ||||
|         var len = bitLengths[n]; | ||||
|         if (len != 0) { | ||||
|             table[next_code[len]] = { length: len, symbol: n }; //, bitstring: binaryValueToString(next_code[len],len) }; | ||||
|         if (len !== 0) { | ||||
|             table[nextCode[len]] = { length: len, symbol: n }; //, bitstring: binaryValueToString(nextCode[len],len) }; | ||||
|             tableLength++; | ||||
|             next_code[len]++; | ||||
|             nextCode[len]++; | ||||
|         } | ||||
|     } | ||||
|     table.maxLength = tableLength; | ||||
| @@ -322,9 +322,9 @@ function getFixedLiteralTable() { | ||||
|     if (!fixedHCtoLiteral) { | ||||
|         var bitlengths = new Array(288); | ||||
|         for (var i = 0; i <= 143; ++i) bitlengths[i] = 8; | ||||
|         for (i = 144; i <= 255; ++i) bitlengths[i] = 9; | ||||
|         for (i = 256; i <= 279; ++i) bitlengths[i] = 7; | ||||
|         for (i = 280; i <= 287; ++i) bitlengths[i] = 8; | ||||
|         for (var i = 144; i <= 255; ++i) bitlengths[i] = 9; | ||||
|         for (var i = 256; i <= 279; ++i) bitlengths[i] = 7; | ||||
|         for (var i = 280; i <= 287; ++i) bitlengths[i] = 8; | ||||
|  | ||||
|         // get huffman code table | ||||
|         fixedHCtoLiteral = getHuffmanCodes(bitlengths); | ||||
| @@ -335,7 +335,9 @@ function getFixedDistanceTable() { | ||||
|     // create once | ||||
|     if (!fixedHCtoDistance) { | ||||
|         var bitlengths = new Array(32); | ||||
|         for (var i = 0; i < 32; ++i) { bitlengths[i] = 5; } | ||||
|         for (var i = 0; i < 32; ++i) { | ||||
|             bitlengths[i] = 5; | ||||
|         } | ||||
|  | ||||
|         // get huffman code table | ||||
|         fixedHCtoDistance = getHuffmanCodes(bitlengths); | ||||
| @@ -347,7 +349,7 @@ function getFixedDistanceTable() { | ||||
| // then return that symbol | ||||
| function decodeSymbol(bstream, hcTable) { | ||||
|     var code = 0, len = 0; | ||||
|     var match = false; | ||||
|     // var match = false; | ||||
|  | ||||
|     // loop until we match | ||||
|     for (;;) { | ||||
| @@ -457,7 +459,7 @@ function inflateBlockData(bstream, hcLiteralTable, hcDistanceTable, buffer) { | ||||
|         } | ||||
|         else { | ||||
|             // end of block reached | ||||
|             if (symbol == 256) { | ||||
|             if (symbol === 256) { | ||||
|                 break; | ||||
|             } | ||||
|             else { | ||||
| @@ -504,12 +506,13 @@ function inflate(compressedData, numDecompressedBytes) { | ||||
|         compressedData.byteOffset, | ||||
|         compressedData.byteLength); | ||||
|     var buffer = new bitjs.io.ByteBuffer(numDecompressedBytes); | ||||
|     var numBlocks = 0, blockSize = 0; | ||||
|     var numBlocks = 0; | ||||
|     var blockSize = 0; | ||||
|  | ||||
|     // block format: http://tools.ietf.org/html/rfc1951#page-9 | ||||
|     do { | ||||
|         var bFinal = bstream.readBits(1), | ||||
|             bType = bstream.readBits(2); | ||||
|         var bFinal = bstream.readBits(1); | ||||
|         var bType = bstream.readBits(2); | ||||
|         blockSize = 0; | ||||
|         ++numBlocks; | ||||
|         // no compression | ||||
| @@ -524,11 +527,11 @@ function inflate(compressedData, numDecompressedBytes) { | ||||
|             blockSize = len; | ||||
|         } | ||||
|         // fixed Huffman codes | ||||
|         else if(bType == 1) { | ||||
|         else if(bType === 1) { | ||||
|             blockSize = inflateBlockData(bstream, getFixedLiteralTable(), getFixedDistanceTable(), buffer); | ||||
|         } | ||||
|         // dynamic Huffman codes | ||||
|         else if(bType == 2) { | ||||
|         else if(bType === 2) { | ||||
|             var numLiteralLengthCodes = bstream.readBits(5) + 257; | ||||
|             var numDistanceCodes = bstream.readBits(5) + 1, | ||||
|                 numCodeLengthCodes = bstream.readBits(4) + 4; | ||||
| @@ -566,19 +569,19 @@ function inflate(compressedData, numDecompressedBytes) { | ||||
|                     literalCodeLengths.push(symbol); | ||||
|                     prevCodeLength = symbol; | ||||
|                 } | ||||
|                 else if (symbol == 16) { | ||||
|                 else if (symbol === 16) { | ||||
|                     var repeat = bstream.readBits(2) + 3; | ||||
|                     while (repeat--) { | ||||
|                         literalCodeLengths.push(prevCodeLength); | ||||
|                     } | ||||
|                 } | ||||
|                 else if (symbol == 17) { | ||||
|                 else if (symbol === 17) { | ||||
|                     var repeat = bstream.readBits(3) + 3; | ||||
|                     while (repeat--) { | ||||
|                         literalCodeLengths.push(0); | ||||
|                     } | ||||
|                 } | ||||
|                 else if (symbol == 18) { | ||||
|                 else if (symbol === 18) { | ||||
|                     var repeat = bstream.readBits(7) + 11; | ||||
|                     while (repeat--) { | ||||
|                         literalCodeLengths.push(0); | ||||
| @@ -605,7 +608,7 @@ function inflate(compressedData, numDecompressedBytes) { | ||||
|         currentBytesUnarchived += blockSize; | ||||
|         postProgress(); | ||||
|  | ||||
|     } while (bFinal != 1); | ||||
|     } while (bFinal !== 1); | ||||
|     // we are done reading blocks if the bFinal bit was set for this block | ||||
|  | ||||
|     // return the buffer data bytes | ||||
|   | ||||
| @@ -33,7 +33,7 @@ | ||||
|     </div> | ||||
|     <button type="submit" name="submit" value="submit" class="btn btn-default">{{_('Save settings')}}</button> | ||||
|     <button type="submit" name="test" value="test" class="btn btn-default">{{_('Save settings and send Test E-Mail')}}</button> | ||||
|     <a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a> | ||||
|     <a href="{{ url_for('admin') }}" id="back" class="btn btn-default">{{_('Back')}}</a> | ||||
|   </form> | ||||
|  | ||||
| </div> | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
|   <div class="row"> | ||||
|  | ||||
|     {% for entry in random %} | ||||
|     <div class="col-sm-3 col-lg-2 col-xs-6 book"> | ||||
|     <div class="col-sm-3 col-lg-2 col-xs-6 book" id="books_rand"> | ||||
|       <div class="cover"> | ||||
|           <a href="{{ url_for('show_book', book_id=entry.id) }}" data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"> | ||||
|             {% if entry.has_cover %} | ||||
| @@ -42,7 +42,7 @@ | ||||
|   <div class="row"> | ||||
|     {% if entries[0] %} | ||||
|     {% for entry in entries %} | ||||
|     <div class="col-sm-3 col-lg-2 col-xs-6 book"> | ||||
|     <div class="col-sm-3 col-lg-2 col-xs-6 book" id="books"> | ||||
|       <div class="cover"> | ||||
|           <a href="{{ url_for('show_book', book_id=entry.id) }}" data-toggle="modal" data-target="#bookDetailsModal" data-remote="false"> | ||||
|             {% if entry.has_cover %} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 OzzieIsaacs
					OzzieIsaacs