getFinalValue method

Danger<CitrusSymbolValue, CitrusSymbolTableException> getFinalValue(
  1. String symbolName
)

symbolName の最終的に解決された場合の primitive な値を取得する.

Implementation

Danger<CitrusSymbolValue, CitrusSymbolTableException> getFinalValue(String symbolName) {

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

    final getCitrusSymbolResult = 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': 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, TemporarySymbolExceptionA>) 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);

    }

}