all files / src/ SimpleAnalyzer.js

92% Statements 23/25
50% Branches 4/8
100% Functions 3/3
92% Lines 23/25
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51                          10× 10× 10× 10×           10×                    
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const parse5 = require("parse5");
const template_api_1 = require("@opticss/template-api");
const AttributeValueParser_1 = require("./AttributeValueParser");
class SimpleAnalyzer {
    /**
     * Creates an instance of SimpleAnalyzer.
     * @param template The template to be analyzed.
     * @param [includeSourceInformation=false] Whether to record source positions
     *   for elements in the analysis.
     */
    constructor(template, includeSourceInformation = false) {
        this.template = template;
        this.includeSourceInformation = includeSourceInformation;
        this.valueParser = new AttributeValueParser_1.AttributeValueParser(template.plainHtml);
    }
    attrValue(attrNamespace, attrName, valueStr) {
        return this.valueParser.parse(attrNamespace, attrName, valueStr);
    }
    analyze() {
        let analysis = new template_api_1.TemplateAnalysis(this.template);
        const parser = new parse5.SAXParser({ locationInfo: this.includeSourceInformation });
        parser.on("startTag", (name, attrs, _selfClosing, location) => {
            let startLocation = location ? { line: location.line, column: location.col } : template_api_1.POSITION_UNKNOWN;
            let endLocation = location ? { line: location.line, column: location.col + location.endOffset } : template_api_1.POSITION_UNKNOWN;
            analysis.startElement(new template_api_1.Tagname({ constant: name }), startLocation);
            attrs.forEach(attr => {
                Iif (attr.namespace) {
                    analysis.addAttribute(new template_api_1.AttributeNS(attr.namespace, attr.name, this.attrValue(attr.namespace, attr.name, attr.value)));
                }
                else {
                    analysis.addAttribute(new template_api_1.Attribute(attr.name, this.attrValue(attr.namespace, attr.name, attr.value)));
                }
            });
            analysis.endElement(endLocation);
        });
        return new Promise((resolve, reject) => {
            parser.write(this.template.contents, (err) => {
                Iif (err) {
                    reject(err);
                }
                else {
                    resolve(analysis);
                }
            });
        });
    }
}
exports.SimpleAnalyzer = SimpleAnalyzer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2ltcGxlQW5hbHl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2ltcGxlQW5hbHl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFDakMsd0RBQTZIO0FBQzdILGlFQUE4RDtBQU85RDtJQUlFOzs7OztPQUtHO0lBQ0gsWUFBWSxRQUFzQixFQUFFLHdCQUF3QixHQUFHLEtBQUs7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3pELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSwyQ0FBb0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNPLFNBQVMsQ0FBQyxhQUF3QyxFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDNUYsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLFFBQVEsR0FBRyxJQUFJLCtCQUFnQixDQUFpQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUM7UUFDckYsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRO1lBQ3hELElBQUksYUFBYSxHQUFHLFFBQVEsR0FBRyxFQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFDLEdBQUcsK0JBQWdCLENBQUM7WUFDOUYsSUFBSSxXQUFXLEdBQUcsUUFBUSxHQUFHLEVBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsRUFBQyxHQUFHLCtCQUFnQixDQUFDO1lBQ2pILFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxzQkFBTyxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJO2dCQUNoQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDbkIsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLDBCQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzNILENBQUM7Z0JBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ04sUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLHdCQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxRQUFRLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU07WUFDakMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQVE7Z0JBQzVDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ1IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLENBQUM7Z0JBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ04sT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVDRCx3Q0E0Q0MifQ==