App-Mxpress-PDF
view release on metacpan or search on metacpan
public/javascripts/ace/worker-html.js view on Meta::CPAN
ElementStack.prototype.findIndex = function(localName) {
for (var i = this.elements.length - 1; i >= 0; i--) {
if (this.elements[i].localName == localName)
return i;
}
return -1;
};
ElementStack.prototype.remove_openElements_until = function(callback) {
var finished = false;
var element;
while (!finished) {
element = this.elements.pop();
finished = callback(element);
}
return element;
};
Object.defineProperty(ElementStack.prototype, 'top', {
get: function() {
return this.elements[this.elements.length - 1];
}
});
Object.defineProperty(ElementStack.prototype, 'length', {
get: function() {
return this.elements.length;
}
});
exports.ElementStack = ElementStack;
},
{}],
2:[function(_dereq_,module,exports){
var entities = _dereq_('html5-entities');
var InputStream = _dereq_('./InputStream').InputStream;
var namedEntityPrefixes = {};
Object.keys(entities).forEach(function (entityKey) {
for (var i = 0; i < entityKey.length; i++) {
namedEntityPrefixes[entityKey.substring(0, i + 1)] = true;
}
});
function isAlphaNumeric(c) {
return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');
}
function isHexDigit(c) {
return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
}
function isDecimalDigit(c) {
return (c >= '0' && c <= '9');
}
var EntityParser = {};
EntityParser.consumeEntity = function(buffer, tokenizer, additionalAllowedCharacter) {
var decodedCharacter = '';
var consumedCharacters = '';
var ch = buffer.char();
if (ch === InputStream.EOF)
return false;
consumedCharacters += ch;
if (ch == '\t' || ch == '\n' || ch == '\v' || ch == ' ' || ch == '<' || ch == '&') {
buffer.unget(consumedCharacters);
return false;
}
if (additionalAllowedCharacter === ch) {
buffer.unget(consumedCharacters);
return false;
}
if (ch == '#') {
ch = buffer.shift(1);
if (ch === InputStream.EOF) {
tokenizer._parseError("expected-numeric-entity-but-got-eof");
buffer.unget(consumedCharacters);
return false;
}
consumedCharacters += ch;
var radix = 10;
var isDigit = isDecimalDigit;
if (ch == 'x' || ch == 'X') {
radix = 16;
isDigit = isHexDigit;
ch = buffer.shift(1);
if (ch === InputStream.EOF) {
tokenizer._parseError("expected-numeric-entity-but-got-eof");
buffer.unget(consumedCharacters);
return false;
}
consumedCharacters += ch;
}
if (isDigit(ch)) {
var code = '';
while (ch !== InputStream.EOF && isDigit(ch)) {
code += ch;
ch = buffer.char();
}
code = parseInt(code, radix);
var replacement = this.replaceEntityNumbers(code);
if (replacement) {
tokenizer._parseError("invalid-numeric-entity-replaced");
code = replacement;
}
if (code > 0xFFFF && code <= 0x10FFFF) {
code -= 0x10000;
var first = ((0xffc00 & code) >> 10) + 0xD800;
var second = (0x3ff & code) + 0xDC00;
decodedCharacter = String.fromCharCode(first, second);
} else
decodedCharacter = String.fromCharCode(code);
if (ch !== ';') {
tokenizer._parseError("numeric-entity-without-semicolon");
buffer.unget(ch);
}
return decodedCharacter;
}
buffer.unget(consumedCharacters);
tokenizer._parseError("expected-numeric-entity");
return false;
}
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
var mostRecentMatch = '';
while (namedEntityPrefixes[consumedCharacters]) {
if (entities[consumedCharacters]) {
mostRecentMatch = consumedCharacters;
}
if (ch == ';')
break;
ch = buffer.char();
if (ch === InputStream.EOF)
break;
consumedCharacters += ch;
}
if (!mostRecentMatch) {
tokenizer._parseError("expected-named-entity");
buffer.unget(consumedCharacters);
return false;
}
decodedCharacter = entities[mostRecentMatch];
if (ch === ';' || !additionalAllowedCharacter || !(isAlphaNumeric(ch) || ch === '=')) {
if (consumedCharacters.length > mostRecentMatch.length) {
buffer.unget(consumedCharacters.substring(mostRecentMatch.length));
}
if (ch !== ';') {
tokenizer._parseError("named-entity-without-semicolon");
}
return decodedCharacter;
}
buffer.unget(consumedCharacters);
return false;
}
};
EntityParser.replaceEntityNumbers = function(c) {
switch(c) {
case 0x00: return 0xFFFD; // REPLACEMENT CHARACTER
case 0x13: return 0x0010; // Carriage return
case 0x80: return 0x20AC; // EURO SIGN
case 0x81: return 0x0081; // <control>
case 0x82: return 0x201A; // SINGLE LOW-9 QUOTATION MARK
case 0x83: return 0x0192; // LATIN SMALL LETTER F WITH HOOK
case 0x84: return 0x201E; // DOUBLE LOW-9 QUOTATION MARK
case 0x85: return 0x2026; // HORIZONTAL ELLIPSIS
case 0x86: return 0x2020; // DAGGER
case 0x87: return 0x2021; // DOUBLE DAGGER
case 0x88: return 0x02C6; // MODIFIER LETTER CIRCUMFLEX ACCENT
case 0x89: return 0x2030; // PER MILLE SIGN
case 0x8A: return 0x0160; // LATIN CAPITAL LETTER S WITH CARON
case 0x8B: return 0x2039; // SINGLE LEFT-POINTING ANGLE QUOTATION MARK
case 0x8C: return 0x0152; // LATIN CAPITAL LIGATURE OE
case 0x8D: return 0x008D; // <control>
case 0x8E: return 0x017D; // LATIN CAPITAL LETTER Z WITH CARON
case 0x8F: return 0x008F; // <control>
case 0x90: return 0x0090; // <control>
case 0x91: return 0x2018; // LEFT SINGLE QUOTATION MARK
case 0x92: return 0x2019; // RIGHT SINGLE QUOTATION MARK
case 0x93: return 0x201C; // LEFT DOUBLE QUOTATION MARK
case 0x94: return 0x201D; // RIGHT DOUBLE QUOTATION MARK
case 0x95: return 0x2022; // BULLET
case 0x96: return 0x2013; // EN DASH
case 0x97: return 0x2014; // EM DASH
case 0x98: return 0x02DC; // SMALL TILDE
case 0x99: return 0x2122; // TRADE MARK SIGN
case 0x9A: return 0x0161; // LATIN SMALL LETTER S WITH CARON
case 0x9B: return 0x203A; // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
case 0x9C: return 0x0153; // LATIN SMALL LIGATURE OE
case 0x9D: return 0x009D; // <control>
case 0x9E: return 0x017E; // LATIN SMALL LETTER Z WITH CARON
case 0x9F: return 0x0178; // LATIN CAPITAL LETTER Y WITH DIAERESIS
default:
if ((c >= 0xD800 && c <= 0xDFFF) || c > 0x10FFFF) {
return 0xFFFD;
} else if ((c >= 0x0001 && c <= 0x0008) || (c >= 0x000E && c <= 0x001F) ||
(c >= 0x007F && c <= 0x009F) || (c >= 0xFDD0 && c <= 0xFDEF) ||
c == 0x000B || c == 0xFFFE || c == 0x1FFFE || c == 0x2FFFFE ||
c == 0x2FFFF || c == 0x3FFFE || c == 0x3FFFF || c == 0x4FFFE ||
c == 0x4FFFF || c == 0x5FFFE || c == 0x5FFFF || c == 0x6FFFE ||
c == 0x6FFFF || c == 0x7FFFE || c == 0x7FFFF || c == 0x8FFFE ||
c == 0x8FFFF || c == 0x9FFFE || c == 0x9FFFF || c == 0xAFFFE ||
c == 0xAFFFF || c == 0xBFFFE || c == 0xBFFFF || c == 0xCFFFE ||
c == 0xCFFFF || c == 0xDFFFE || c == 0xDFFFF || c == 0xEFFFE ||
c == 0xEFFFF || c == 0xFFFFE || c == 0xFFFFF || c == 0x10FFFE ||
c == 0x10FFFF) {
return c;
}
}
};
( run in 1.076 second using v1.01-cache-2.11-cpan-39bf76dae61 )