xiot-core-spec-ts
Version:
XIOT Specification Codec
49 lines (48 loc) • 1.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArgumentDefinitionCodec = void 0;
const ArgumentDefinition_1 = require("../../typedef/definition/ArgumentDefinition");
const PropertyType_1 = require("../../typedef/definition/urn/PropertyType");
const Spec_1 = require("../../typedef/constant/Spec");
class ArgumentDefinitionCodec {
static decodeArray(list) {
const array = [];
if (list != null) {
for (const o of list) {
if (typeof o === 'string') {
array.push(ArgumentDefinitionCodec.decodeString(o));
continue;
}
if (typeof o === 'object') {
array.push(ArgumentDefinitionCodec.decodeObject(o));
}
}
}
return array;
}
static decodeString(s) {
return new ArgumentDefinition_1.ArgumentDefinition(new PropertyType_1.PropertyType(s));
}
static decodeObject(o) {
const type = new PropertyType_1.PropertyType(o[Spec_1.Spec.PROPERTY]);
const def = new ArgumentDefinition_1.ArgumentDefinition(type);
const repeat = o[Spec_1.Spec.REPEAT];
if (repeat != null) {
def.minRepeat = repeat[0];
def.maxRepeat = repeat[1];
}
return def;
}
static encode(def) {
return {
property: def.type.toString(),
repeat: [def.minRepeat, def.maxRepeat]
};
}
static encodeArray(list) {
return list.map(x => {
return ArgumentDefinitionCodec.encode(x);
});
}
}
exports.ArgumentDefinitionCodec = ArgumentDefinitionCodec;