ui5plugin-parser
Version:
51 lines (50 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ResourceModelData = void 0;
const properties_file_1 = require("properties-file");
const LineColumn = require("line-column");
class ResourceModelData {
constructor(parser) {
this.resourceModels = {};
this.parser = parser;
}
async readTexts() {
const resourceModelFiles = this.parser.fileReader.getResourceModelFiles();
resourceModelFiles.forEach(resourceModelFile => {
this._updateResourceModelData(resourceModelFile);
});
}
_updateResourceModelData(resourceModelFile) {
this.resourceModels[resourceModelFile.componentName] = ResourceModelData.parseFile(resourceModelFile);
}
static parseFile(resourceModelFile) {
const lineColumn = LineColumn(resourceModelFile.content);
const propertyFile = new properties_file_1.Properties(resourceModelFile.content);
const lines = propertyFile?.lines ?? [];
return propertyFile.collection.map(translation => {
return {
text: `{i18n>${translation.key}}`,
description: translation.value,
id: translation.key,
ui5ignored: ["#@ui5ignore", "# @ui5ignore"].includes(lines[translation.startingLineNumber - 2]),
hasKeyCollisions: translation.hasKeyCollisions,
positionBegin: lineColumn.toIndex(translation.startingLineNumber, 1),
positionEnd: lineColumn.toIndex(translation.endingLineNumber, 1) +
lines[translation.endingLineNumber - 1].length
};
});
}
updateCache(document) {
const className = this.parser.fileReader.getClassNameFromPath(document.fileName);
if (className) {
const manifest = this.parser.fileReader.getManifestForClass(className);
if (manifest) {
this._updateResourceModelData({
componentName: manifest.componentName,
content: document.getText()
});
}
}
}
}
exports.ResourceModelData = ResourceModelData;