fromRootCitrusSyntax static method

Safety<Frame> fromRootCitrusSyntax(
  1. RootCitrusSyntax rootCitrusSyntax
)

Implementation

static Safety<Frame> fromRootCitrusSyntax(RootCitrusSyntax rootCitrusSyntax) {

    final log = Log(classLocation: Frame, functionLocation: 'fromRootCitrusSyntax');

    final List<FrameCitrusSemantic> list = [];

    for (final syntax in rootCitrusSyntax.derivationCitrusSyntaxList) {

        switch (syntax) {
        case AloneBlock():

            final blockTypeKeyword = syntax.second;
            late final Danger<FrameCitrusSemantic, CitrusSemanticException> result;

            switch (blockTypeKeyword) {
            case For(): result = ForAloneBlock.fromAloneBlock(syntax);
            case BooleanKeyword(): result = IfAloneBlock.fromAloneBlock(syntax);
            case _: continue through;
            }
            log.add(result);
            if (result is! Success<FrameCitrusSemantic, CitrusSemanticException>) continue through;

            list.add(result.wrapped);

        through:
        case _: ;

        }

    }

    final result = Frame.fromIterable(list);

    return Safety(result, log);

}