firstStage static method

Danger<CitrusSymbolTable, CitrusSymbolTableException> firstStage(
  1. Chain chain,
  2. TemplateFileSetting tempalteFileSetting
)

Not Validate.

Implementation

static Danger<CitrusSymbolTable, CitrusSymbolTableException> firstStage(Chain chain, TemplateFileSetting tempalteFileSetting) {

    final log = Log(classLocation: CitrusSymbolTable, functionLocation: 'firstStage');

    // default の値は設定せず 入力が無い場合は exception として user に報告する.

    final textSymbolRosterResult = TextSymbol.fromChainAndTemplateFileSetting(chain, tempalteFileSetting);
    log.add(textSymbolRosterResult);
    if (textSymbolRosterResult is! Success<List<TextSymbol>, ChainException>) return Failure(CitrusSymbolTableExceptionF(), log);

    final textArraySymbolRosterResult = TextArraySymbol.fromChainAndTemplateFileSetting(chain, tempalteFileSetting);
    log.add(textArraySymbolRosterResult);
    if (textArraySymbolRosterResult is! Success<List<TextArraySymbol>, ChainException>) return Failure(CitrusSymbolTableExceptionF(), log);

    final flagSymbolRosterResult = FlagSymbol.fromChainAndTemplateFileSetting(chain, tempalteFileSetting);
    log.add(flagSymbolRosterResult);

    final objectSymbolRosterResult = ObjectSymbol.fromChainAndTemplateFileSetting(chain, tempalteFileSetting);
    log.add(objectSymbolRosterResult);
    if (objectSymbolRosterResult is! Success<List<ObjectSymbol>, ChainException>) return Failure(CitrusSymbolTableExceptionF(), log);

    final objectArraySymbolRosterResult = ObjectArraySymbol.fromChainAndTemplateFileSetting(chain, tempalteFileSetting);
    log.add(objectArraySymbolRosterResult);
    if (objectArraySymbolRosterResult is! Success<List<ObjectArraySymbol>, ChainException>) return Failure(CitrusSymbolTableExceptionF(), log);

    final result = CitrusSymbolTable(
        CitrusSymbolRoster(textSymbolRosterResult.wrapped),
        CitrusSymbolRoster(),
        CitrusSymbolRoster(textArraySymbolRosterResult.wrapped),
        CitrusSymbolRoster(tempalteFileSetting.fragmentSymbols),
        CitrusSymbolRoster(flagSymbolRosterResult.wrapped),
        CitrusSymbolRoster(objectSymbolRosterResult.wrapped),
        CitrusSymbolRoster(objectArraySymbolRosterResult.wrapped),
    );

    return Success(result, log);

}