package gutenberg.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author <a href="http://twitter.com/aloyer">@aloyer</a>
*/
public class DimensionParser {
public Dimension parse(String input) throws DimensionFormatException {
Pattern digits = Pattern.compile("(\\d+)([^\\d]+)");
Matcher matcher = digits.matcher(input);
if (!matcher.matches())
throw new DimensionFormatException("Invalid input does not match <digits+><unit>");
float amount = Float.parseFloat(matcher.group(1));
String unitStr = matcher.group(2);
Dimension.Unit unit;
if (unitStr.equalsIgnoreCase("%"))
unit = Dimension.Unit.Percent;
else if (unitStr.equalsIgnoreCase("px"))
unit = Dimension.Unit.Px;
else
throw new DimensionFormatException("Unknown dimension unit '" + unitStr + "'");
return new Dimension(amount, unit);
}
}