import { HomieValuesTypes, ValueMapping, ValueMappingDefintion, ValueMappingList } from "../model"; import { evaluateValueCondition } from "./conditionals.func"; export function mapValue(value: FROM, mapping: ValueMapping): TO | undefined { if (mapping.from === undefined) { return mapping.to; } if (evaluateValueCondition(value, mapping.from)) { return mapping.to; } return undefined; } export function mapValueList(value: FROM, mappingList: ValueMappingList): TO | undefined { for (let index = 0; index < mappingList.length; index++) { const mapping = mappingList[index]; const to = mapValue(value, mapping); if (to !== undefined){ return to; } } return undefined; } export function mapValueIn(value: inFROM, mappingSet?: ValueMappingDefintion): inTO | inFROM | undefined { return mappingSet !== undefined ? mapValueList(value, mappingSet.in) : value; } export function mapValueOut(value: outFROM, mappingSet?: ValueMappingDefintion): outTO | outFROM | undefined { return mappingSet !== undefined ? mapValueList(value, mappingSet.out) : value; }