--- /dev/null
+package jalview.bin;
+
+import java.net.URLDecoder;
+import java.util.Vector;
+
+/**
+ * Notes: this argParser does not distinguish between parameter switches,
+ * parameter values and argument text. If an argument happens to be identical to
+ * a parameter, it will be taken as such (even though it didn't have a '-'
+ * prefixing it).
+ *
+ * @author Andrew Waterhouse and JBP documented.
+ *
+ */
+public class ArgsParser
+{
+ Vector<String> vargs = null;
+
+ public ArgsParser(String[] args)
+ {
+ vargs = new Vector<String>();
+ for (int i = 0; i < args.length; i++)
+ {
+ String arg = args[i].trim();
+ if (arg.charAt(0) == '-')
+ {
+ arg = arg.substring(1);
+ }
+ vargs.addElement(arg);
+ }
+ }
+
+ /**
+ * check for and remove first occurence of arg+parameter in arglist.
+ *
+ * @param arg
+ * @return return the argument following the given arg if arg was in list.
+ */
+ public String getValue(String arg)
+ {
+ return getValue(arg, false);
+ }
+
+ public String getValue(String arg, boolean utf8decode)
+ {
+ int index = vargs.indexOf(arg);
+ String dc = null, ret = null;
+ if (index != -1)
+ {
+ ret = vargs.elementAt(index + 1).toString();
+ vargs.removeElementAt(index);
+ vargs.removeElementAt(index);
+ if (utf8decode && ret != null)
+ {
+ try
+ {
+ dc = URLDecoder.decode(ret, "UTF-8");
+ ret = dc;
+ } catch (Exception e)
+ {
+ // TODO: log failure to decode
+ }
+ }
+ }
+ return ret;
+ }
+
+ /**
+ * check for and remove first occurence of arg in arglist.
+ *
+ * @param arg
+ * @return true if arg was present in argslist.
+ */
+ public boolean contains(String arg)
+ {
+ if (vargs.contains(arg))
+ {
+ vargs.removeElement(arg);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ public String nextValue()
+ {
+ return vargs.remove(0);
+ }
+
+ public int getSize()
+ {
+ return vargs.size();
+ }
+
+}
\ No newline at end of file