Package javarepl.console.commands

Source Code of javarepl.console.commands.LoadSourceFile

package javarepl.console.commands;

import com.googlecode.totallylazy.Option;
import com.googlecode.totallylazy.Strings;
import javarepl.Evaluator;
import javarepl.completion.CommandCompleter;
import javarepl.console.ConsoleLogger;

import static com.googlecode.totallylazy.Files.asFile;
import static com.googlecode.totallylazy.Strings.startsWith;
import static java.lang.String.format;

public final class LoadSourceFile extends Command {
    private static final String COMMAND = ":load";
    private final Evaluator evaluator;
    private final ConsoleLogger logger;

    public LoadSourceFile(Evaluator evaluator, ConsoleLogger logger) {
        super(COMMAND + " <path> - loads source file ", startsWith(COMMAND), new CommandCompleter(COMMAND));
        this.evaluator = evaluator;
        this.logger = logger;
    }

    public void execute(String expression) {
        Option<String> path = parseStringCommand(expression).second();

        if (!path.isEmpty()) {
            try {
                evaluator.evaluate(Strings.lines(path.map(asFile()).get()).toString("\n"));
                logger.success(format("Loaded source file from %s", path.get()));
            } catch (Exception e) {
                logger.error(format("Could not load source file from %s.\n  %s", path.get(), e.getLocalizedMessage()));
            }
        } else {
            logger.error(format("Path not specified"));
        }
    }


}
TOP

Related Classes of javarepl.console.commands.LoadSourceFile

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.