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

Method parseTokenWithSeparator

code/src/java/plugin/lsttokens/DescLst.java:55–135  ·  view source on GitHub ↗
(LoadContext context, CDOMObject obj, String aDesc)

Source from the content-addressed store, hash-verified

53 }
54
55 @Override
56 protected ParseResult parseTokenWithSeparator(LoadContext context, CDOMObject obj, String aDesc)
57 {
58 if (Constants.LST_DOT_CLEAR.equals(aDesc))
59 {
60 context.getObjectContext().removeList(obj, ListKey.DESCRIPTION);
61 return ParseResult.SUCCESS;
62 }
63 if (aDesc.startsWith(Constants.LST_DOT_CLEAR_DOT))
64 {
65 context.getObjectContext().removePatternFromList(obj, ListKey.DESCRIPTION, aDesc.substring(7));
66 return ParseResult.SUCCESS;
67 }
68
69 StringTokenizer tok = new StringTokenizer(aDesc, Constants.PIPE);
70
71 String descString = tok.nextToken();
72
73 if (looksLikeAPrerequisite(descString))
74 {
75 return new ParseResult.Fail(getTokenName() + " encountered only a PRExxx: " + aDesc);
76 }
77 String ds = EntityEncoder.decode(descString);
78 if (!StringUtil.hasBalancedParens(ds))
79 {
80 return new ParseResult.Fail(getTokenName() + " encountered imbalanced Parenthesis: " + aDesc);
81 }
82 ParseResult pr = checkForInvalidXMLChars(ds);
83 if (!pr.passed())
84 {
85 return pr;
86 }
87 Description desc = new Description(ds);
88
89 if (tok.hasMoreTokens())
90 {
91 String token = tok.nextToken();
92 while (true)
93 {
94 if (Constants.LST_DOT_CLEAR.equals(token))
95 {
96 return new ParseResult.Fail(
97 getTokenName() + " tag confused by '.CLEAR' as a " + "middle token: " + aDesc);
98 }
99 else if (looksLikeAPrerequisite(token))
100 {
101 break;
102 }
103 else
104 {
105 desc.addVariable(token);
106 }
107
108 if (!tok.hasMoreTokens())
109 {
110 // No prereqs, so we're done
111 context.getObjectContext().addToList(obj, ListKey.DESCRIPTION, desc);
112 return ParseResult.SUCCESS;

Callers

nothing calls this directly

Calls 15

getTokenNameMethod · 0.95
decodeMethod · 0.95
hasBalancedParensMethod · 0.95
passedMethod · 0.95
addVariableMethod · 0.95
nextTokenMethod · 0.80
hasMoreTokensMethod · 0.80
getPrerequisiteMethod · 0.80
equalsMethod · 0.65
removeListMethod · 0.65

Tested by

no test coverage detected