putSymbol method

Implementation

Danger<CitrusSymbolTable, CitrusSymbolTableException> putSymbol(CitrusSymbol symbol) {

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

    late final Danger<CitrusSymbolTable, CitrusSymbolTableException> result;

    switch (symbol) {
    case TextSymbol():

        final putResult = textSymbolRoster.put(symbol);
        log.add(putResult);

        result = CitrusSymbolTable.result(putResult.wrapped, this.temporarySymbolRoster, this.textArraySymbolRoster, this.fragmentSymbolRoster, this.flagSymbolRoster, this.objectSymbolRoster, this.objectArraySymbolRoster);

    case TemporarySymbol():

        final putResult = temporarySymbolRoster.put(symbol);
        log.add(putResult);

        result = CitrusSymbolTable.result(this.textSymbolRoster, putResult.wrapped, this.textArraySymbolRoster, this.fragmentSymbolRoster, this.flagSymbolRoster, this.objectSymbolRoster, this.objectArraySymbolRoster);

    case TextArraySymbol():

        final putResult = textArraySymbolRoster.put(symbol);
        log.add(putResult);

        result = CitrusSymbolTable.result(this.textSymbolRoster, this.temporarySymbolRoster, putResult.wrapped, this.fragmentSymbolRoster, this.flagSymbolRoster, this.objectSymbolRoster, this.objectArraySymbolRoster);

    case FragmentSymbol():

        final putResult = fragmentSymbolRoster.put(symbol);
        log.add(putResult);

        result = CitrusSymbolTable.result(this.textSymbolRoster, this.temporarySymbolRoster, this.textArraySymbolRoster, putResult.wrapped, this.flagSymbolRoster, this.objectSymbolRoster, this.objectArraySymbolRoster);

    case FlagSymbol():

        final putResult = flagSymbolRoster.put(symbol);
        log.add(putResult);

        result = CitrusSymbolTable.result(this.textSymbolRoster, this.temporarySymbolRoster, this.textArraySymbolRoster, this.fragmentSymbolRoster, putResult.wrapped, this.objectSymbolRoster, this.objectArraySymbolRoster);

    case ObjectSymbol():

        final putResult = objectSymbolRoster.put(symbol);
        log.add(putResult);

        result = CitrusSymbolTable.result(this.textSymbolRoster, this.temporarySymbolRoster, this.textArraySymbolRoster, this.fragmentSymbolRoster, this.flagSymbolRoster, putResult.wrapped, this.objectArraySymbolRoster);

    case ObjectArraySymbol():

        final putResult = objectArraySymbolRoster.put(symbol);
        log.add(putResult);

        result = CitrusSymbolTable.result(this.textSymbolRoster, this.temporarySymbolRoster, this.textArraySymbolRoster, this.fragmentSymbolRoster, this.flagSymbolRoster, this.objectSymbolRoster, putResult.wrapped);

    }
    log.add(result);

    return Danger.fromDanger(result, log);

}