toChainString method

Danger<String, ChainException> toChainString(
  1. Box<Head> head
)

Implementation

Danger<String, ChainException> toChainString(Box<Head> head) {

    final log = Log(classLocation: runtimeType, functionLocation: 'toChainString');

    final List<Body> bodyList = [];

    for (final i in value) {

        final objectValuable = i.value;

        switch (objectValuable) {
        case CitrusFlag():

            // true なら flag 追加
            if (objectValuable.value) {

                final result = Flag.from(i.name);
                log.add(result);
                if (result is! Success<Flag, FlagException>) return Failure(result.asException, log);

                bodyList.add(result.wrapped);

            }

        case CitrusText():

            final result = Variety.from(i.name, Some(objectValuable.value));
            log.add(result);
            if (result is! Success<Variety, VarietyException>) return Failure(result.asException, log);

            bodyList.add(result.wrapped);

        case CitrusTextArray():

            final result = VarietyEnumeration.from(i.name, objectValuable.toPrimitive());
            log.add(result);
            if (result is! Success<VarietyEnumeration, VarietyEnumerationException>) return Failure(result.asException, log);

            bodyList.add(result.wrapped);

        }

    }

    final chainResult = Chain.result(head, bodyList);
    log.add(chainResult);
    if (chainResult is! Success<Chain, ChainException>) return Failure(chainResult.asException, log);

    final result = chainResult.wrapped.serialize();

    return Success(result, log);

}