fromChainAndObjectDefinition static method

Danger<CitrusObject, ChainException> fromChainAndObjectDefinition(
  1. Chain chain,
  2. ObjectDefinition objectDefinition
)

Implementation

static Danger<CitrusObject, ChainException> fromChainAndObjectDefinition(Chain chain, ObjectDefinition objectDefinition) {

    final log = Log(classLocation: CitrusObject, functionLocation: 'fromChainAndObjectDefinition');

    final List<CitrusObjectUnit> list = [];

    for (final unit in objectDefinition.units) {

        late final ObjectValuable value;

        switch (unit.type) {
        case CitrusFlag.TYPE:

            final getResult = chain.isFlag(unit.name);
            log.add(getResult);

            value = CitrusFlag(getResult.wrapped);

        case CitrusText.TYPE:

            final getResult = chain.getOptionAsSingleString(unit.name);
            log.add(getResult);
            if (getResult is! Success<String, ChainExceptionIJK>) return Failure(getResult.asException, log);

            value = CitrusText(getResult.wrapped);

        case CitrusTextArray.TYPE:

            final getResult = chain.getOptionAsMultipleString(unit.name);
            log.add(getResult);
            if (getResult is! Success<List<String>, ChainExceptionI>) return Failure(getResult.asException, log);

            value = CitrusTextArray.fromPrimitive(getResult.wrapped);

        }

        final result = CitrusObjectUnit(unit.name, value);

        list.add(result);

    }

    final result = CitrusObject(list);

    return Success(result, log);

}