MCPcopy Create free account
hub / github.com/PCGen/pcgen / parse

Method parse

code/src/java/plugin/pretokens/parser/PreStatParser.java:57–128  ·  view source on GitHub ↗

Parse the pre req list @param kind The kind of the prerequisite (less the "PRE" prefix) @param formula The body of the prerequisite. @param invertResult Whether the prerequisite should invert the result. @param overrideQualify if set true, this prerequisite will be enforced in spite

(String kind, String formula, boolean invertResult, boolean overrideQualify)

Source from the content-addressed store, hash-verified

55 * @throws PersistenceLayerException
56 */
57 @Override
58 public Prerequisite parse(String kind, String formula, boolean invertResult, boolean overrideQualify)
59 throws PersistenceLayerException
60 {
61 Prerequisite prereq = super.parse(kind, formula, invertResult, overrideQualify);
62 try
63 {
64 prereq.setKind(null); // PREMULT
65
66 // Get the comparator type STATGTEQ, STAT, STATNEQ etc.
67 String compType = kind.substring(4);
68
69 if (compType.isEmpty())
70 {
71 compType = "gteq";
72 }
73
74 String[] tokens = formula.split(",|\\|");
75 int currToken = 0;
76
77 // Get the minimum match count
78 String aString = tokens[currToken++];
79
80 try
81 {
82 prereq.setOperand(Integer.toString(Integer.parseInt(aString)));
83 }
84 catch (NumberFormatException e)
85 {
86 Logging.errorPrint("Badly formed PRESTAT attribute: " + aString);
87 prereq.setOperand("1");
88 }
89
90 while (currToken < tokens.length)
91 {
92 aString = tokens[currToken++];
93
94 final int idxEquals = aString.lastIndexOf('=');
95 if (idxEquals < 3)
96 {
97 throw new PersistenceLayerException(
98 "PRE" + kindsHandled()[0] + " formula '" + formula + "' is not valid.");
99 }
100
101 final String stat = aString.substring(0, Math.min(3, idxEquals));
102 Prerequisite statPrereq = new Prerequisite();
103 statPrereq.setKind("stat");
104 statPrereq.setKey(stat);
105 statPrereq.setOperator(compType);
106 statPrereq.setOperand(aString.substring(idxEquals + 1));
107
108 prereq.addPrerequisite(statPrereq);
109 }
110
111 if ((prereq.getPrerequisiteCount() == 1) && (prereq.getOperator() == PrerequisiteOperator.GTEQ)
112 && prereq.getOperand().equals("1"))
113 {
114 prereq = prereq.getPrerequisites().get(0);

Callers 5

testDex9Method · 0.95
testDex9Str13Method · 0.95
testDexEqual9Method · 0.95
testDexNegativeMethod · 0.95
testEmptyMethod · 0.95

Calls 15

setKindMethod · 0.95
setOperandMethod · 0.95
errorPrintMethod · 0.95
kindsHandledMethod · 0.95
setKeyMethod · 0.95
setOperatorMethod · 0.95
addPrerequisiteMethod · 0.95
getPrerequisiteCountMethod · 0.95
getOperatorMethod · 0.95
getOperandMethod · 0.95
getPrerequisitesMethod · 0.95
parseIntMethod · 0.80

Tested by 5

testDex9Method · 0.76
testDex9Str13Method · 0.76
testDexEqual9Method · 0.76
testDexNegativeMethod · 0.76
testEmptyMethod · 0.76