/*
 * $Id: ArgumentParser.java,v 1.1 2005/02/28 13:27:52 rampil Exp $
 * Copyright (c) 2004 LOGICAL-PARADOX.ORG
 */
package org.logical_paradox.common.cli;

import org.apache.oro.text.perl.Perl5Util;

/**
 * コマンドラインパーザー
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.1 $
 */
public class ArgumentParser {
	/**
	 * 引数を解析して整理する
	 * @param arg 引数の配列
	 * @return 解析された引数の配列
	 */
	public static final Argument[] parse(String[] args) {
		Argument[] arguments = new Argument[args.length];
		String name = null;
		String value = null;

		Perl5Util p5u = new Perl5Util();

		for(int i = 0; i < args.length; i++) {
			if(p5u.match("/^--(.+?)=(.+)/", args[i].toCharArray())) {
				// 引数と値の取得
				name = p5u.group(1);
				value = p5u.group(2);
			} else if(p5u.match("/^-(.+?)=(.+)/", args[i].toCharArray())) {
				name = p5u.group(1);
				value = p5u.group(2);
			} else {
				name = null;
				value = args[i];
			}
			arguments[i] = new Argument(name, value);
		}

		return arguments;
	}
}
