Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68966c7e authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Remove arity from dicttool commands (A1)" into jb-mr1-dev

parents 6242564c 77c8c738
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -55,11 +55,10 @@ public class Compress {
            return "compress <filename>: Compresses a file using gzip compression";
        }

        public int getArity() {
            return 1;
        }

        public void run() throws IOException {
            if (mArgs.length < 1) {
                throw new RuntimeException("Not enough arguments for command " + COMMAND);
            }
            final String inFilename = mArgs[0];
            final String outFilename = inFilename + SUFFIX;
            final FileInputStream input = new FileInputStream(new File(inFilename));
@@ -79,11 +78,10 @@ public class Compress {
            return "uncompress <filename>: Uncompresses a file compressed with gzip compression";
        }

        public int getArity() {
            return 1;
        }

        public void run() throws IOException {
            if (mArgs.length < 1) {
                throw new RuntimeException("Not enough arguments for command " + COMMAND);
            }
            final String inFilename = mArgs[0];
            final String outFilename = inFilename + SUFFIX;
            final FileInputStream input = new FileInputStream(new File(inFilename));
+9 −28
Original line number Diff line number Diff line
@@ -27,7 +27,6 @@ public class Dicttool {
        public void setArgs(String[] args) throws IllegalArgumentException {
            mArgs = args;
        }
        abstract public int getArity();
        abstract public String getHelp();
        abstract public void run() throws Exception;
    }
@@ -62,40 +61,23 @@ public class Dicttool {
        return sCommands.containsKey(commandName);
    }

    private String mPreviousCommand = null; // local to the getNextCommand function
    private Command getNextCommand(final ArrayList<String> arguments) {
    private Command getCommand(final ArrayList<String> arguments) {
        final String firstArgument = arguments.get(0);
        final String commandName;
        if (isCommand(firstArgument)) {
            commandName = firstArgument;
            arguments.remove(0);
        } else if (isCommand(mPreviousCommand)) {
            commandName = mPreviousCommand;
        } else {
            throw new RuntimeException("Unknown command : " + firstArgument);
        }
        final Command command = getCommandInstance(commandName);
        final int arity = command.getArity();
        if (arguments.size() < arity) {
            throw new RuntimeException("Not enough arguments to command " + commandName);
        }
        final String[] argsArray = new String[arity];
        arguments.subList(0, arity).toArray(argsArray);
        for (int i = 0; i < arity; ++i) {
            // For some reason, ArrayList#removeRange is protected
            arguments.remove(0);
        }
        final String[] argsArray = arguments.toArray(new String[arguments.size()]);
        command.setArgs(argsArray);
        mPreviousCommand = commandName;
        return command;
    }

    private void execute(final ArrayList<String> arguments) {
        ArrayList<Command> commandsToExecute = new ArrayList<Command>();
        while (!arguments.isEmpty()) {
            commandsToExecute.add(getNextCommand(arguments));
        }
        for (final Command command : commandsToExecute) {
        final Command command = getCommand(arguments);
        try {
            command.run();
        } catch (Exception e) {
@@ -104,7 +86,6 @@ public class Dicttool {
            return;
        }
    }
    }

    public static void main(final String[] args) {
        if (0 == args.length) {
+5 −4
Original line number Diff line number Diff line
@@ -17,6 +17,8 @@
package com.android.inputmethod.latin.dicttool;

public class Info extends Dicttool.Command {
    public static final String COMMAND = "info";

    public Info() {
    }

@@ -24,12 +26,11 @@ public class Info extends Dicttool.Command {
        return "info <filename>: prints various information about a dictionary file";
    }

    public int getArity() {
        return 1;
    }

    public void run() {
        // TODO: implement this
        if (mArgs.length < 1) {
            throw new RuntimeException("Not enough arguments for command " + COMMAND);
        }
        System.out.println("Not implemented yet");
    }
}