getFinalValue method

Danger<CitrusDataType, CitrusSymbolTableException> getFinalValue(
  1. String symbolName,
  2. CitrusSymbolTable symbolTable
)

Implementation

Danger<CitrusDataType, CitrusSymbolTableException> getFinalValue(String symbolName, CitrusSymbolTable symbolTable) {

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

    final getCitrusSymbolResult = symbolTable.getSymbol(symbolName);
    log.add(getCitrusSymbolResult);
    if (getCitrusSymbolResult is! Success<CitrusSymbol, CitrusSymbolTableExceptionB>) return Failure(getCitrusSymbolResult.asException, log.monitor({
        'not exist symbol': symbolName,
        'exist symbol name list': symbolTable.symbolNameList,
    }));
    final symbol = getCitrusSymbolResult.wrapped;

    switch (symbol) {
    case TextSymbol():

        return Success(symbol.value, log);

    case TemporarySymbol():

        final result = symbol.getCurrentValue();
        log.add(result);
        if (result is! Success<CitrusArrayable, TemporarySymbolException>) return Failure(CitrusSymbolTableExceptionG(), log);

        return Success(result.wrapped, log);

    case TextArraySymbol():

        return Success(symbol.value, log);

    case FragmentSymbol():

        return Success(symbol.value, log);

    case FlagSymbol():

        return Success(symbol.value, log);

    case ObjectSymbol():

        return Success(symbol.value, log);

    case ObjectArraySymbol():

        return Success(symbol.value, log);

    }

}