CitrusArray.fromChain constructor

CitrusArray.fromChain(
  1. VarietyEnumeration chain
)

すべての要素が 有効な chain source であり head.name が object である場合 CitrusObjectArray を返す.
それ以外は CitrusTextArray を返す

Implementation

factory CitrusArray.fromChain(VarietyEnumeration chain) {

    final List<CitrusObject> list = [];

    for (final i in chain.value) {

        final chainResult = Chain.fromSource(i);
        if (chainResult is! Success<Chain, ChainException>) return CitrusTextArray.from(chain.value);

        final headBox = chainResult.wrapped.head;
        if (headBox is! Some<Head>) return CitrusTextArray.from(chain.value);

        if (headBox.wrapped.name != 'object') return CitrusTextArray.from(chain.value);

        list.add(CitrusObject.fromChain(chainResult.wrapped.bodyList));

    }

    return CitrusObjectArray(list);

}