getFinalValue method
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);
}
}