package edu.sc.seis.sod.tools; import java.util.Map; import com.martiansoftware.jsap.FlaggedOption; import com.martiansoftware.jsap.ParseException; import edu.sc.seis.seisFile.client.BoxAreaParser; import edu.sc.seis.seisFile.client.PatternParser; public class PhaseTimeParser extends PatternParser { public PhaseTimeParser() { super("\\+?" + BoxAreaParser.DECIMAL_NUMBER_RE + "([A-Za-z]+)", new String[] {"offset", "name"}); } public static FlaggedOption createParam(String name, String defaultPhase, String helpMessage) { return new FlaggedOption(name, new PhaseTimeParser(), defaultPhase, false, name.toUpperCase().charAt(0), name, helpMessage); } @Override public Object parse(String arg) throws ParseException { Map<String, String> m = (Map<String,String>)super.parse(arg); if (m.get("name").equalsIgnoreCase("kmps")) { m.put("name", m.get("offset")+m.get("name")); m.put("offset", "0.0"); } return m; } public String getErrorMessage(String arg) { return "A phase time is specified as a time of offset in minutes and a phase name like 12ttp or -3s not '" + arg + "'"; } }