diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/i18n/charlistdecompressor.js')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/i18n/charlistdecompressor.js | 157 |
1 files changed, 0 insertions, 157 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/i18n/charlistdecompressor.js b/contexts/data/lib/closure-library/closure/goog/i18n/charlistdecompressor.js deleted file mode 100644 index e41a5b0..0000000 --- a/contexts/data/lib/closure-library/closure/goog/i18n/charlistdecompressor.js +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2009 The Closure Library Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS-IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/** - * @fileoverview The decompressor for Base88 compressed character lists. - * - * The compression is by base 88 encoding the delta between two adjacent - * characters in ths list. The deltas can be positive or negative. Also, there - * would be character ranges. These three types of values - * are given enum values 0, 1 and 2 respectively. Initial 3 bits are used for - * encoding the type and total length of the encoded value. Length enums 0, 1 - * and 2 represents lengths 1, 2 and 4. So (value * 8 + type * 3 + length enum) - * is encoded in base 88 by following characters for numbers from 0 to 87: - * 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ (continued in next line) - * abcdefghijklmnopqrstuvwxyz!#$%()*+,-.:;<=>?@[]^_`{|}~ - * - * Value uses 0 based counting. That is value for the range [a, b] is 0 and - * that of [a, c] is 1. Simillarly, the delta of "ab" is 0. - * - * Following python script can be used to compress character lists taken - * standard input: http://go/charlistcompressor.py - * - */ - -goog.provide('goog.i18n.CharListDecompressor'); - -goog.require('goog.array'); -goog.require('goog.i18n.uChar'); - - - -/** - * Class to decompress base88 compressed character list. - * @constructor - */ -goog.i18n.CharListDecompressor = function() { - this.buildCharMap_('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr' + - 'stuvwxyz!#$%()*+,-.:;<=>?@[]^_`{|}~'); -}; - - -/** - * 1-1 mapping from ascii characters used in encoding to an integer in the - * range 0 to 87. - * @type {Object} - * @private - */ -goog.i18n.CharListDecompressor.prototype.charMap_ = null; - - -/** - * Builds the map from ascii characters used for the base88 scheme to number - * each character represents. - * @param {string} str The string of characters used in base88 scheme. - * @private - */ -goog.i18n.CharListDecompressor.prototype.buildCharMap_ = function(str) { - if (!this.charMap_) { - this.charMap_ = {}; - for (var i = 0; i < str.length; i++) { - this.charMap_[str.charAt(i)] = i; - } - } -}; - - -/** - * Gets the number encoded in base88 scheme by a substring of given length - * and placed at the a given position of the string. - * @param {string} str String containing sequence of characters encoding a - * number in base 88 scheme. - * @param {number} start Starting position of substring encoding the number. - * @param {number} leng Length of the substring encoding the number. - * @return {number} The encoded number. - * @private - */ -goog.i18n.CharListDecompressor.prototype.getCodeAt_ = function(str, start, - leng) { - var result = 0; - for (var i = 0; i < leng; i++) { - var c = this.charMap_[str.charAt(start + i)]; - result += c * Math.pow(88, i); - } - return result; -}; - - -/** - * Add character(s) specified by the value and type to given list and return - * the next character in the sequence. - * @param {Array.<string>} list The list of characters to which the specified - * characters are appended. - * @param {number} lastcode The last codepoint that was added to the list. - * @param {number} value The value component that representing the delta or - * range. - * @param {number} type The type component that representing whether the value - * is a positive or negative delta or range. - * @return {number} Last codepoint that is added to the list. - * @private - */ -goog.i18n.CharListDecompressor.prototype.addChars_ = function(list, lastcode, - value, type) { - if (type == 0) { - lastcode += value + 1; - goog.array.extend(list, goog.i18n.uChar.fromCharCode(lastcode)); - } else if (type == 1) { - lastcode -= value + 1; - goog.array.extend(list, goog.i18n.uChar.fromCharCode(lastcode)); - } else if (type == 2) { - for (var i = 0; i <= value; i++) { - lastcode++; - goog.array.extend(list, goog.i18n.uChar.fromCharCode(lastcode)); - } - } - return lastcode; -}; - - -/** - * Gets the list of characters specified in the given string by base 88 scheme. - * @param {string} str The string encoding character list. - * @return {Array.<string>} The list of characters specified by the given string - * in base 88 scheme. - */ -goog.i18n.CharListDecompressor.prototype.toCharList = function(str) { - var metasize = 8; - var result = []; - var lastcode = 0; - var i = 0; - while (i < str.length) { - var c = this.charMap_[str.charAt(i)]; - var meta = c % metasize; - var type = Math.floor(meta / 3); - var leng = (meta % 3) + 1; - if (leng == 3) { - leng++; - } - var code = this.getCodeAt_(str, i, leng); - var value = Math.floor(code / metasize); - lastcode = this.addChars_(result, lastcode, value, type); - - i += leng; - } - return result; -}; - |