summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
diff options
context:
space:
mode:
authorbculkin2442 <bjculkin@mix.wvu.edu>2016-04-08 13:28:09 -0400
committerbculkin2442 <bjculkin@mix.wvu.edu>2016-04-08 13:28:09 -0400
commit275a627719fc2231b16caea41130ff09f0f2b6a1 (patch)
tree757e8ca2061ba6ed9b2063f7155edbe954b72bdb /BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
parent79d3a4a47cbc1fcf17c77c6fc12ff826a3077bac (diff)
Switch functional data to use interfaces
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java32
1 files changed, 19 insertions, 13 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java b/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
index b6162e5..999503c 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/parserutils/RuleBasedConfigReader.java
@@ -8,6 +8,7 @@ import java.util.Scanner;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
+import bjc.utils.data.IPair;
import bjc.utils.data.Pair;
import bjc.utils.exceptions.UnknownPragmaException;
import bjc.utils.funcdata.FunctionalStringTokenizer;
@@ -20,9 +21,10 @@ import bjc.utils.funcdata.FunctionalStringTokenizer;
*
* @param <E>
* The type of the state object to use
+ *
*/
public class RuleBasedConfigReader<E> {
- private BiConsumer<FunctionalStringTokenizer, Pair<String, E>> startRule;
+ private BiConsumer<FunctionalStringTokenizer, IPair<String, E>> startRule;
private BiConsumer<FunctionalStringTokenizer, E> continueRule;
private Consumer<E> endRule;
@@ -39,7 +41,7 @@ public class RuleBasedConfigReader<E> {
* The action to fire when ending a rule
*/
public RuleBasedConfigReader(
- BiConsumer<FunctionalStringTokenizer, Pair<String, E>> startRule,
+ BiConsumer<FunctionalStringTokenizer, IPair<String, E>> startRule,
BiConsumer<FunctionalStringTokenizer, E> continueRule,
Consumer<E> endRule) {
this.startRule = startRule;
@@ -90,20 +92,26 @@ public class RuleBasedConfigReader<E> {
state = initialState;
boolean ruleOpen = false;
+
while (inputSource.hasNextLine()) {
String line = inputSource.nextLine();
- if (line.equals("")) {
+ if (line.startsWith("#") || line.startsWith("//")) {
+ // It's a comment
+ continue;
+ } else if (line.equals("")) {
if (ruleOpen == false) {
// Ignore blank line without an open rule
- }
-
- if (endRule == null) {
- // Nothing happens on rule end
} else {
- endRule.accept(state);
- }
+ if (endRule == null) {
+ // Nothing happens on rule end
+ ruleOpen = false;
+ } else {
+ endRule.accept(state);
+ }
+ ruleOpen = false;
+ }
continue;
} else if (line.startsWith("\t")) {
if (ruleOpen == false) {
@@ -125,9 +133,7 @@ public class RuleBasedConfigReader<E> {
String nextToken = tokenizer.nextToken();
- if (nextToken.equals("#") || nextToken.equals("//")) {
- // Do nothing, this is a comment
- } else if (nextToken.equals("pragma")) {
+ if (nextToken.equals("pragma")) {
String token = tokenizer.nextToken();
pragmas.getOrDefault(token, (tokenzer, stat) -> {
@@ -181,7 +187,7 @@ public class RuleBasedConfigReader<E> {
* The action to execute on starting of a rule
*/
public void setStartRule(
- BiConsumer<FunctionalStringTokenizer, Pair<String, E>> startRule) {
+ BiConsumer<FunctionalStringTokenizer, IPair<String, E>> startRule) {
if (startRule == null) {
throw new NullPointerException(
"Action on rule start must be non-null");