"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const nearley = require("nearley");
const grammar = require("./grammar/attrvalue");
class AttributeValueParser {
constructor(plainHtml) {
// support for normal html instead of dynamic attribute expressions.
this.plainHtml = plainHtml;
}
parse(attrNamespace, attrName, value) {
let whitespaceDelimited = attrName === "class" && !attrNamespace;
Iif (attrName.match(/^on/) || value.startsWith("javascript:")) {
return { absent: true };
}
else if (isTextAttribute(attrNamespace, attrName, value)) {
return { constant: value };
}
Iif (!whitespaceDelimited && this.plainHtml) {
return { constant: value };
}
let startProduction = whitespaceDelimited ? "whitespaceDelimitedAttribute" : "attribute";
let grammarObj = nearley.Grammar.fromCompiled(grammar);
grammarObj.start = startProduction; // because this api is stupid.
let parser = new nearley.Parser(grammarObj);
parser.feed(value);
let res = parser.finish();
return res[0];
}
}
exports.AttributeValueParser = AttributeValueParser;
function isTextAttribute(_attrNamespace, attrName, _value) {
return ["title", "media", "content", "style"].indexOf(attrName) !== -1;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlVmFsdWVQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQXR0cmlidXRlVmFsdWVQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtQ0FBbUM7QUFDbkMsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFL0M7SUFFRSxZQUFZLFNBQWtCO1FBQzVCLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBQ0QsS0FBSyxDQUFDLGFBQXdDLEVBQUUsUUFBZ0IsRUFBRSxLQUFhO1FBQzdFLElBQUksbUJBQW1CLEdBQUcsUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNqRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQztRQUN4QixDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRCxNQUFNLENBQUMsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDLENBQUM7UUFDM0IsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxDQUFDLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBQyxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLGVBQWUsR0FBRyxtQkFBbUIsR0FBRyw4QkFBOEIsR0FBRyxXQUFXLENBQUM7UUFDekYsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQU0sT0FBTyxDQUFDLENBQUM7UUFDdEQsVUFBVyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsQ0FBQyw4QkFBOEI7UUFDekUsSUFBSSxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGO0FBeEJELG9EQXdCQztBQUVELHlCQUF5QixjQUF5QyxFQUFFLFFBQWdCLEVBQUUsTUFBYztJQUNsRyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyJ9 |