Package javarepl.console

Source Code of javarepl.console.ConsoleConfig

package javarepl.console;


import com.googlecode.totallylazy.Option;
import com.googlecode.totallylazy.Sequence;
import com.googlecode.totallylazy.Sequences;
import javarepl.Evaluator;
import javarepl.Result;
import javarepl.console.commands.*;

import java.io.File;

import static com.googlecode.totallylazy.Option.none;
import static com.googlecode.totallylazy.Option.option;
import static com.googlecode.totallylazy.Sequences.empty;
import static com.googlecode.totallylazy.Sequences.sequence;

public final class ConsoleConfig {
    public final Option<File> historyFile;
    public final Sequence<String> expressions;
    public final ConsoleLogger logger;
    public final Evaluator evaluator;
    public final Sequence<Class<? extends Command>> commands;
    public final Sequence<Result> results;
    public final Boolean sandboxed;


    private ConsoleConfig(Evaluator evaluator, Option<File> historyFile, Sequence<String> expressions, ConsoleLogger logger, Sequence<Class<? extends Command>> commands, Sequence<Result> results, Boolean sandboxed) {
        this.evaluator = evaluator;
        this.historyFile = historyFile;
        this.expressions = expressions;
        this.logger = logger;
        this.commands = commands;
        this.results = results;
        this.sandboxed = sandboxed;
    }

    public static ConsoleConfig consoleConfig() {
        return new ConsoleConfig(new Evaluator(), none(File.class), empty(String.class), new ConsoleLogger(), defaultCommands(), empty(Result.class), false);
    }

    public ConsoleConfig logger(ConsoleLogger logger) {
        return new ConsoleConfig(evaluator, historyFile, expressions, option(logger).getOrElse(new ConsoleLogger()), commands, results, sandboxed);
    }

    public ConsoleConfig historyFile(Option<File> file) {
        return new ConsoleConfig(evaluator, file, expressions, logger, commands, results, sandboxed);
    }

    public ConsoleConfig historyFile(File file) {
        return new ConsoleConfig(evaluator, option(file), expressions, logger, commands, results, sandboxed);
    }

    public ConsoleConfig expressions(String... expressions) {
        return new ConsoleConfig(evaluator, historyFile, sequence(expressions), logger, commands, results, sandboxed);
    }

    public ConsoleConfig commands(Class... cmds) {
        return new ConsoleConfig(evaluator, historyFile, expressions, logger, sequence(cmds).<Class<? extends Command>>unsafeCast(), results, sandboxed);
    }

    public ConsoleConfig results(Result... results) {
        return new ConsoleConfig(evaluator, historyFile, expressions, logger, commands, sequence(results), sandboxed);
    }

    public ConsoleConfig sandboxed(boolean sandboxed) {
        return new ConsoleConfig(evaluator, historyFile, expressions, logger, commands, results, sandboxed);
    }

    public static Sequence<Class<? extends Command>> defaultCommands() {
        return Sequences.<Class<? extends Command>>sequence()
                .append(ClearScreen.class)
                .append(QuitApplication.class)
                .append(ShowHistory.class)
                .append(SearchHistory.class)
                .append(EvaluateFromHistory.class)
                .append(ResetAllEvaluations.class)
                .append(ReplayAllEvaluations.class)
                .append(EvaluateFile.class)
                .append(AddToClasspath.class)
                .append(LoadSourceFile.class)
                .append(ListValues.class)
                .append(ShowLastSource.class)
                .append(ShowTypeOfExpression.class)
                .append(CheckExpression.class);
    }

}
TOP

Related Classes of javarepl.console.ConsoleConfig

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.