You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
4.3 KiB
147 lines
4.3 KiB
/** |
|
* @licstart The following is the entire license notice for the |
|
* Javascript code in this page |
|
* |
|
* Copyright 2019 Mozilla Foundation |
|
* |
|
* 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. |
|
* |
|
* @licend The above is the entire license notice for the |
|
* Javascript code in this page |
|
*/ |
|
"use strict"; |
|
|
|
Object.defineProperty(exports, "__esModule", { |
|
value: true |
|
}); |
|
exports.getLookupTableFactory = getLookupTableFactory; |
|
exports.getInheritableProperty = getInheritableProperty; |
|
exports.toRomanNumerals = toRomanNumerals; |
|
exports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0; |
|
|
|
var _util = require("../shared/util"); |
|
|
|
function getLookupTableFactory(initializer) { |
|
var lookup; |
|
return function () { |
|
if (initializer) { |
|
lookup = Object.create(null); |
|
initializer(lookup); |
|
initializer = null; |
|
} |
|
|
|
return lookup; |
|
}; |
|
} |
|
|
|
var MissingDataException = function MissingDataExceptionClosure() { |
|
function MissingDataException(begin, end) { |
|
this.begin = begin; |
|
this.end = end; |
|
this.message = "Missing data [".concat(begin, ", ").concat(end, ")"); |
|
} |
|
|
|
MissingDataException.prototype = new Error(); |
|
MissingDataException.prototype.name = 'MissingDataException'; |
|
MissingDataException.constructor = MissingDataException; |
|
return MissingDataException; |
|
}(); |
|
|
|
exports.MissingDataException = MissingDataException; |
|
|
|
var XRefEntryException = function XRefEntryExceptionClosure() { |
|
function XRefEntryException(msg) { |
|
this.message = msg; |
|
} |
|
|
|
XRefEntryException.prototype = new Error(); |
|
XRefEntryException.prototype.name = 'XRefEntryException'; |
|
XRefEntryException.constructor = XRefEntryException; |
|
return XRefEntryException; |
|
}(); |
|
|
|
exports.XRefEntryException = XRefEntryException; |
|
|
|
var XRefParseException = function XRefParseExceptionClosure() { |
|
function XRefParseException(msg) { |
|
this.message = msg; |
|
} |
|
|
|
XRefParseException.prototype = new Error(); |
|
XRefParseException.prototype.name = 'XRefParseException'; |
|
XRefParseException.constructor = XRefParseException; |
|
return XRefParseException; |
|
}(); |
|
|
|
exports.XRefParseException = XRefParseException; |
|
|
|
function getInheritableProperty(_ref) { |
|
var dict = _ref.dict, |
|
key = _ref.key, |
|
_ref$getArray = _ref.getArray, |
|
getArray = _ref$getArray === void 0 ? false : _ref$getArray, |
|
_ref$stopWhenFound = _ref.stopWhenFound, |
|
stopWhenFound = _ref$stopWhenFound === void 0 ? true : _ref$stopWhenFound; |
|
var LOOP_LIMIT = 100; |
|
var loopCount = 0; |
|
var values; |
|
|
|
while (dict) { |
|
var value = getArray ? dict.getArray(key) : dict.get(key); |
|
|
|
if (value !== undefined) { |
|
if (stopWhenFound) { |
|
return value; |
|
} |
|
|
|
if (!values) { |
|
values = []; |
|
} |
|
|
|
values.push(value); |
|
} |
|
|
|
if (++loopCount > LOOP_LIMIT) { |
|
(0, _util.warn)("getInheritableProperty: maximum loop count exceeded for \"".concat(key, "\"")); |
|
break; |
|
} |
|
|
|
dict = dict.get('Parent'); |
|
} |
|
|
|
return values; |
|
} |
|
|
|
var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']; |
|
|
|
function toRomanNumerals(number) { |
|
var lowerCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; |
|
(0, _util.assert)(Number.isInteger(number) && number > 0, 'The number should be a positive integer.'); |
|
var pos, |
|
romanBuf = []; |
|
|
|
while (number >= 1000) { |
|
number -= 1000; |
|
romanBuf.push('M'); |
|
} |
|
|
|
pos = number / 100 | 0; |
|
number %= 100; |
|
romanBuf.push(ROMAN_NUMBER_MAP[pos]); |
|
pos = number / 10 | 0; |
|
number %= 10; |
|
romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); |
|
romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); |
|
var romanStr = romanBuf.join(''); |
|
return lowerCase ? romanStr.toLowerCase() : romanStr; |
|
} |