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

Method replaceTokenOIF

code/src/java/pcgen/io/ExportHandler.java:2754–2847  ·  view source on GitHub ↗

Helper method to parse OIF token, e.g. OIF(expr,truepart,falsepart) OIF(HASFEAT:Armor Prof (Light), Yes , No ) If the character has the Light Armor proficiency, then returns "Yes". Otherwise it returns "No". @param aString String to parse @param output output to write to @param aPC PC

(String aString, java.io.Writer output, PlayerCharacter aPC)

Source from the content-addressed store, hash-verified

2752 * @param aPC PC we are exporting
2753 */
2754 private void replaceTokenOIF(String aString, java.io.Writer output, PlayerCharacter aPC)
2755 {
2756 int iParenCount = 0;
2757 final String[] tokenizedString = new String[3];
2758 int iParamCount = 0;
2759 int iStart = 4;
2760
2761 for (int i = iStart; i < aString.length(); ++i)
2762 {
2763 if (iParamCount == 3)
2764 {
2765 break;
2766 }
2767
2768 switch (aString.charAt(i))
2769 {
2770 case '(':
2771 iParenCount += 1;
2772 break;
2773 case ')':
2774 iParenCount -= 1;
2775
2776 if (iParenCount == -1)
2777 {
2778 if (iParamCount == 2)
2779 {
2780 tokenizedString[iParamCount] = aString.substring(iStart, i).trim();
2781 iParamCount++;
2782 iStart = i + 1;
2783 }
2784 else
2785 {
2786 Logging.errorPrint("OIF: not enough parameters (" + Integer.toString(iParamCount) + ')');
2787 for (int j = 0; j < iParamCount; ++j)
2788 {
2789 Logging.errorPrint(" " + Integer.toString(j) + ':' + tokenizedString[j]);
2790 }
2791 }
2792 }
2793 break;
2794 case ',':
2795
2796 if (iParenCount == 0)
2797 {
2798 if (iParamCount < 2)
2799 {
2800 tokenizedString[iParamCount] = aString.substring(iStart, i).trim();
2801 iStart = i + 1;
2802 }
2803 else
2804 {
2805 Logging.errorPrint("OIF: too many parameters");
2806 }
2807
2808 iParamCount += 1;
2809 }
2810
2811 break;

Callers 1

replaceTokenMethod · 0.95

Calls 6

errorPrintMethod · 0.95
evaluateExpressionMethod · 0.95
writeMethod · 0.95
trimMethod · 0.80
toStringMethod · 0.65
isEmptyMethod · 0.65

Tested by

no test coverage detected