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

Method parseSpellString

code/src/java/pcgen/core/PlayerCharacter.java:5414–5477  ·  view source on GitHub ↗

Takes a String and a Class name and computes spell based variable such as Class level. @param aSpell The spell object @param aString the variable to evaluate @return String

(final CharacterSpell aSpell, String aString)

Source from the content-addressed store, hash-verified

5412 * @return String
5413 */
5414 public String parseSpellString(final CharacterSpell aSpell, String aString)
5415 {
5416 String aSpellClass = aSpell.getVariableSource(this);
5417
5418 if (aSpellClass.isEmpty())
5419 {
5420 return aString;
5421 }
5422
5423 // Only want to replace items between ()'s
5424 while (aString.lastIndexOf('(') >= 0)
5425 {
5426 boolean found = false;
5427
5428 final int start = aString.indexOf('(');
5429 int end = 0;
5430 int level = 0;
5431
5432 for (int i = start; i < aString.length(); i++)
5433 {
5434 if (aString.charAt(i) == '(')
5435 {
5436 level++;
5437 } else if (aString.charAt(i) == ')')
5438 {
5439 level--;
5440 if (level == 0)
5441 {
5442 end = i;
5443 break;
5444 }
5445 }
5446 }
5447
5448 /*
5449 * int x = CoreUtility.innerMostStringStart(aString); int y =
5450 * CoreUtility.innerMostStringEnd(aString); // bounds checking if
5451 * ((start > end) || (start >= aString.length())) { break; } if
5452 * ((end <= 0) || (end >= aString.length())) { break; }
5453 */
5454 final String inCalc = aString.substring(start + 1, end);
5455
5456 String replacement = "0";
5457
5458 final Float fVal = getVariableValue(aSpell, inCalc, aSpellClass);
5459 if (!CoreUtility.doublesEqual(fVal, 0.0f) || (inCalc.contains("MIN"))
5460 || (inCalc.contains("MAX")) || inCalc.toUpperCase().contains("MIN(")
5461 || inCalc.toUpperCase().contains("MAX("))
5462 {
5463 found = true;
5464 replacement = String.valueOf(fVal.intValue());
5465 }
5466
5467 if (found)
5468 {
5469 aString = aString.substring(0, start) + replacement + aString.substring(end + 1);
5470 } else
5471 {

Callers 4

getSpellRangeMethod · 0.95
getTokenMethod · 0.80
getDurationMethod · 0.80
getHTMLInfoMethod · 0.80

Calls 9

getVariableValueMethod · 0.95
doublesEqualMethod · 0.95
intValueMethod · 0.80
isEmptyMethod · 0.65
lastIndexOfMethod · 0.65
indexOfMethod · 0.65
containsMethod · 0.65
getVariableSourceMethod · 0.45
valueOfMethod · 0.45

Tested by

no test coverage detected