"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== |