UNPKG

xiot-core-spec-ts

Version:
49 lines (48 loc) 1.69 kB
"use strict"; 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;