summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedReaderPragmas.java
diff options
context:
space:
mode:
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.java57
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);
};
}