@abaplint/core
Version:
abaplint - Core API
91 lines • 3.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Domain = void 0;
const _abstract_object_1 = require("./_abstract_object");
const Types = require("../abap/types/basic");
const ddic_1 = require("../ddic");
const xml_utils_1 = require("../xml_utils");
class Domain extends _abstract_object_1.AbstractObject {
getType() {
return "DOMA";
}
getDescription() {
var _a;
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.description;
}
getConversionExit() {
var _a;
return (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.conversionExit;
}
getAllowedNaming() {
return {
maxLength: 30,
allowNamespace: true,
};
}
setDirty() {
this.parsedXML = undefined;
super.setDirty();
}
parseType(reg, dataElement, description) {
// dont cache the DOMA parsed type, they are cached on DTEL level
// also note that the type carries the name of the DTEL
if (this.parsedXML === undefined) {
this.parse();
}
if (this.parsedXML === undefined) {
return new Types.UnknownType("Domain " + this.getName() + " parser error", this.getName());
}
const ddic = new ddic_1.DDIC(reg);
return ddic.textToType({
text: this.parsedXML.datatype,
length: this.parsedXML.length,
decimals: this.parsedXML.decimals,
infoText: this.getName(),
qualifiedName: dataElement,
conversionExit: this.parsedXML.conversionExit,
ddicName: dataElement,
description: description,
});
}
parse() {
var _a, _b, _c, _d, _e, _f, _g;
if (this.parsedXML) {
return { updated: false, runtime: 0 };
}
const start = Date.now();
this.parsedXML = {};
const parsed = super.parseRaw2();
if (parsed === undefined) {
return { updated: false, runtime: 0 };
}
const dd01v = (_c = (_b = (_a = parsed.abapGit) === null || _a === void 0 ? void 0 : _a["asx:abap"]) === null || _b === void 0 ? void 0 : _b["asx:values"]) === null || _c === void 0 ? void 0 : _c.DD01V;
const dd07v_tab = (0, xml_utils_1.xmlToArray)((_g = (_f = (_e = (_d = parsed.abapGit) === null || _d === void 0 ? void 0 : _d["asx:abap"]) === null || _e === void 0 ? void 0 : _e["asx:values"]) === null || _f === void 0 ? void 0 : _f.DD07V_TAB) === null || _g === void 0 ? void 0 : _g.DD07V);
const values = [];
for (const ddo7v of dd07v_tab) {
const value = {
description: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DDTEXT,
low: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DOMVALUE_L,
high: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DOMVALUE_H,
language: ddo7v === null || ddo7v === void 0 ? void 0 : ddo7v.DDLANGUAGE,
};
values.push(value);
}
this.parsedXML = {
description: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DDTEXT,
datatype: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DATATYPE,
length: dd01v === null || dd01v === void 0 ? void 0 : dd01v.LENG,
conversionExit: dd01v === null || dd01v === void 0 ? void 0 : dd01v.CONVEXIT,
decimals: dd01v === null || dd01v === void 0 ? void 0 : dd01v.DECIMALS,
values: values,
};
const end = Date.now();
return { updated: true, runtime: end - start };
}
getFixedValues() {
var _a, _b;
return (_b = (_a = this.parsedXML) === null || _a === void 0 ? void 0 : _a.values) !== null && _b !== void 0 ? _b : [];
}
}
exports.Domain = Domain;
//# sourceMappingURL=domain.js.map