package org.shininet.bukkit.itemrenamer.configuration; import java.util.Deque; import java.util.List; import com.google.common.collect.Lists; import com.google.common.collect.Range; public class ConfigParsers { /** * Retrieve as many integers as possible from a given list. * @param args - list of candidate integers. * @param count - maximum number of values to consume. * @param range - range of permitted integers. * @return The list we're looking for. */ public static List<Integer> getIntegers(Deque<String> args, int count, Range<Integer> range) { List<Integer> values = Lists.newArrayList(); try { while (!args.isEmpty() && values.size() < count) { Integer value = Integer.parseInt(args.peekFirst().trim()); // Make sure its within the range if (range == null || range.contains(value)) { values.add(value); args.pollFirst(); // Consume it if we succeed } else { throw new IllegalArgumentException("The value " + value + " is outside the legal range of " + range); } } } catch (NumberFormatException e) { // Fine } return values; } }