xiot-core-spec-ts
Version:
XIOT Specification Codec
56 lines (55 loc) • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActionTemplateCodec = void 0;
const ActionTemplate_1 = require("../../typedef/template/ActionTemplate");
const Spec_1 = require("../../typedef/constant/Spec");
const ActionType_1 = require("../../typedef/definition/urn/ActionType");
const DescriptionCodec_1 = require("../definition/DescriptionCodec");
const ArgumentCodec_1 = require("../instance/ArgumentCodec");
class ActionTemplateCodec {
static decodeArray(array) {
const list = [];
if (array != null) {
for (const o of array) {
list.push(ActionTemplateCodec.decode(o));
}
}
return list;
}
static decode(o) {
const iid = o[Spec_1.Spec.IID];
const required = o[Spec_1.Spec.X_REQUIRED];
const source = o[Spec_1.Spec.X_SOURCE];
const type = new ActionType_1.ActionType(o[Spec_1.Spec.TYPE]);
const description = DescriptionCodec_1.DescriptionCodec.decode(o[Spec_1.Spec.DESCRIPTION]);
const argumentsIn = ArgumentCodec_1.ArgumentCodec.decodeArray(o[Spec_1.Spec.IN]);
const argumentsOut = ArgumentCodec_1.ArgumentCodec.decodeArray(o[Spec_1.Spec.OUT]);
return new ActionTemplate_1.ActionTemplate(iid, required, type, description, argumentsIn, argumentsOut, source);
}
static encode(template) {
const o = {
iid: template.iid,
type: template.type.toString(),
description: DescriptionCodec_1.DescriptionCodec.encode(template.description)
};
o[Spec_1.Spec.X_REQUIRED] = template.required;
if (template.source) {
o[Spec_1.Spec.X_SOURCE] = template.source;
}
if (template.in.size > 0) {
o[Spec_1.Spec.IN] = ArgumentCodec_1.ArgumentCodec.encodeArray(template.getArgumentsIn());
}
if (template.out.size > 0) {
o[Spec_1.Spec.OUT] = ArgumentCodec_1.ArgumentCodec.encodeArray(template.getArgumentsOut());
}
return o;
}
static encodeArray(actions) {
const array = [];
actions.forEach((action, iid) => {
array.push(ActionTemplateCodec.encode(action));
});
return array;
}
}
exports.ActionTemplateCodec = ActionTemplateCodec;