package org.erlide.wrangler.refactoring.util;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import com.ericsson.otp.erlang.OtpErlangAtom;
import com.ericsson.otp.erlang.OtpErlangInt;
import com.ericsson.otp.erlang.OtpErlangList;
import com.ericsson.otp.erlang.OtpErlangObject;
import com.ericsson.otp.erlang.OtpErlangString;
import com.ericsson.otp.erlang.OtpErlangTuple;
/**
* A class(structure) to aggregate data about each command in the composite
* refactoring
*
* @author Aleksandra Lipiec <aleksandra.lipiec@erlang-solutions.com>
* @version %I%, %G%
*/
public class CommandData {
public String command; // command text
public OtpErlangObject[] args; // arguments
public String msg; // question
public String type; // type of command (interactive, repeat interactive,
// non-interactive
public void addUserInput(final List<String> input) {
final List<OtpErlangObject> argsTmp = new LinkedList<>();
final OtpErlangObject[] userInput = new OtpErlangObject[input.size()];
int i = 0;
for (final String text : input) {
userInput[i] = new OtpErlangString(text);
i++;
}
for (final OtpErlangObject arg : args) {
if (arg instanceof OtpErlangTuple && ((OtpErlangTuple) arg).elementAt(0)
.equals(new OtpErlangAtom("prompt"))) {
argsTmp.add(new OtpErlangList(userInput));
// TODO make it so that it adds input only once, check repeat
// interactive
} else {
argsTmp.add(arg);
}
}
args = argsTmp.toArray(new OtpErlangObject[0]);
}
public void addTabWidth(final int tabWidth) {
final List<OtpErlangObject> argsTmp = Arrays.asList(args);
argsTmp.add(new OtpErlangInt(tabWidth));
args = argsTmp.toArray(new OtpErlangObject[0]);
}
}