all files / src/ AttributeValueParser.js

90.48% Statements 19/21
85.71% Branches 12/14
100% Functions 3/3
90.48% Lines 19/21
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34                             
"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