summaryrefslogtreecommitdiff
path: root/src/main/java/bjc/rgens/parser/RuleCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/bjc/rgens/parser/RuleCase.java')
-rwxr-xr-xsrc/main/java/bjc/rgens/parser/RuleCase.java73
1 files changed, 8 insertions, 65 deletions
diff --git a/src/main/java/bjc/rgens/parser/RuleCase.java b/src/main/java/bjc/rgens/parser/RuleCase.java
index 369c588..33aea0c 100755
--- a/src/main/java/bjc/rgens/parser/RuleCase.java
+++ b/src/main/java/bjc/rgens/parser/RuleCase.java
@@ -20,91 +20,34 @@ public abstract class RuleCase {
private static int nextSerial = 0;
- /**
- * The possible types of a case.
- *
- * @author EVE
- */
- public static enum CaseType {
- /** A normal case, composed from a list of elements. */
- NORMAL,
- /** A case that doesn't insert spaces. */
- SPACEFLATTEN,
- /** A case that applies a regex after generation. */
- REGEX;
- }
-
- /** The type of this case. */
- public final CaseType type;
-
public Rule belongsTo;
- /**
- * The list of element values for this case.
- *
- * <h2>Used For</h2>
- * <dl>
- * <dt>NORMAL, SPACEFLATTEN</dt>
- * <dd>Used as the list of elementList the rule is composed of.</dd>
- * </dl>
- */
- protected IList<CaseElement> elementList;
-
- protected RuleCase(CaseType typ) {
- serial = nextSerial;
-
- type = typ;
-
- nextSerial += 1;
- }
+ public IList<CaseElement> elementList;
/**
* Create a new case of the specified type that takes a element list
* parameter.
*
- * @param typ
- * The type of case to create.
- *
* @param elements
* The element list parameter of the case.
*
- * @throws IllegalArgumentException
- * If this type doesn't take a element list parameter.
*/
- public RuleCase(CaseType typ, IList<CaseElement> elements) {
- this(typ);
-
- switch (typ) {
- case NORMAL:
- case SPACEFLATTEN:
- break;
- case REGEX:
- throw new IllegalArgumentException("This type requires an element list and a pattern");
- default:
- throw new IllegalArgumentException("This type doesn't have a element list parameter");
- }
-
+ protected RuleCase(IList<CaseElement> elements) {
elementList = elements;
+
+ serial = nextSerial;
+ nextSerial += 1;
}
public abstract void generate(GenerationState state);
- /**
- * Get the element list value of this type.
- *
- * @return
- * The element list value of this case, or null if this type
- * doesn't have one.
- */
- public IList<CaseElement> getElements() {
- return elementList;
- }
+ public abstract RuleCase withElements(IList<CaseElement> elements);
public String toString() {
if(debugName != null) {
- return String.format("Case %d (%s) of %s", serial, debugName, belongsTo);
+ return String.format("Case %s (#%d) of %s", debugName, serial, belongsTo);
} else {
- return String.format("Case %d (%s-%d) of %s", serial, belongsTo, serial, belongsTo);
+ return String.format("Case #%d of %s", serial, belongsTo, serial, belongsTo);
}
}