001package com.ericlam.mc.groovier; 002 003import com.google.inject.TypeLiteral; 004 005import java.lang.reflect.Type; 006 007/** 008 * mainly use for command argument 009 */ 010public interface ArgumentParser { 011 012 /** 013 * 014 * @param type argument type 015 * @param arg argument string 016 * @return argument value 017 * @param <T> argument type 018 * @throws ArgumentParseException if argument parse failed 019 */ 020 <T> T parse(Type type, String arg) throws ArgumentParseException; 021 022 /** 023 * 024 * @param typeLiteral argument type 025 * @param arg argument string 026 * @return argument value 027 * @param <T> argument type 028 * @throws ArgumentParseException if argument parse failed 029 */ 030 <T> T parse(TypeLiteral<T> typeLiteral, String arg) throws ArgumentParseException; 031}