diff options
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedReaderPragmas.java')
| -rw-r--r-- | BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedReaderPragmas.java | 57 |
1 files changed, 27 insertions, 30 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedReaderPragmas.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedReaderPragmas.java index 9d9d1b1..2c77c5d 100644 --- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedReaderPragmas.java +++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedReaderPragmas.java @@ -15,66 +15,63 @@ import bjc.utils.funcutils.ListUtils; public class RuleBasedReaderPragmas { /** - * Creates a pragma that takes any number of arguments and collapses - * them all into a single string + * Creates a pragma that takes a single integer argument * * @param <StateType> * The type of state that goes along with this pragma * @param name * The name of this pragma, for error message purpose * @param consumer - * The function to invoke with the parsed string + * The function to invoke with the parsed integer * @return A pragma that functions as described above. */ - public static <StateType> - BiConsumer<FunctionalStringTokenizer, StateType> - buildStringCollapser(String name, - BiConsumer<String, StateType> consumer) { + public static <StateType> BiConsumer<FunctionalStringTokenizer, StateType> buildInteger( + String name, BiConsumer<Integer, StateType> consumer) { return (tokenizer, state) -> { if (!tokenizer.hasMoreTokens()) { throw new PragmaFormatException("Pragma " + name - + " requires one string argument"); + + " requires one integer argument"); } - consumer.accept(ListUtils.collapseTokens( - tokenizer.toList((strang) -> strang)), state); + String token = tokenizer.nextToken(); + + try { + consumer.accept(Integer.parseInt(token), state); + } catch (NumberFormatException nfex) { + PragmaFormatException pfex = new PragmaFormatException( + "Argument " + token + + " to version pragma isn't a valid integer. " + + "This pragma requires a integer argument"); + + pfex.initCause(nfex); + + throw pfex; + } }; } /** - * Creates a pragma that takes a single integer argument + * Creates a pragma that takes any number of arguments and collapses + * them all into a single string * * @param <StateType> * The type of state that goes along with this pragma * @param name * The name of this pragma, for error message purpose * @param consumer - * The function to invoke with the parsed integer + * The function to invoke with the parsed string * @return A pragma that functions as described above. */ - public static <StateType> - BiConsumer<FunctionalStringTokenizer, StateType> buildInteger( - String name, BiConsumer<Integer, StateType> consumer) { + public static <StateType> BiConsumer<FunctionalStringTokenizer, StateType> buildStringCollapser( + String name, BiConsumer<String, StateType> consumer) { return (tokenizer, state) -> { if (!tokenizer.hasMoreTokens()) { throw new PragmaFormatException("Pragma " + name - + " requires one integer argument"); + + " requires one string argument"); } - String token = tokenizer.nextToken(); - - try { - consumer.accept(Integer.parseInt(token), state); - } catch (NumberFormatException nfex) { - PragmaFormatException pfex = - new PragmaFormatException("Argument " + token - + " to version pragma isn't a valid integer. " - + "This pragma requires a integer argument"); - - pfex.initCause(nfex); - - throw pfex; - } + consumer.accept(ListUtils.collapseTokens( + tokenizer.toList((strang) -> strang)), state); }; } |
