updated char replacer to better handle malformed input

This commit is contained in:
Sxtanna 2020-07-21 01:48:59 -04:00
parent a2a736d909
commit ee78fc1775

View File

@ -54,20 +54,19 @@ public final class CharsReplacer implements Replacer
} }
boolean identified = false; boolean identified = false;
boolean oopsitsbad = false; boolean oopsitsbad = true;
while (++i < chars.length) while (++i < chars.length)
{ {
final char p = chars[i]; final char p = chars[i];
if (p == closure.tail) if (p == ' ')
{ {
break; break;
} }
if (p == closure.tail)
if (p == ' ')
{ {
oopsitsbad = true; oopsitsbad = false;
break; break;
} }
@ -109,14 +108,28 @@ public final class CharsReplacer implements Replacer
final PlaceholderHook placeholder = lookup.apply(identifierString); final PlaceholderHook placeholder = lookup.apply(identifierString);
if (placeholder == null) if (placeholder == null)
{ {
builder.append(closure.head).append(identifierString).append('_').append(parametersString).append(closure.tail); builder.append(closure.head).append(identifierString);
if (identified)
{
builder.append('_');
}
builder.append(parametersString).append(closure.tail);
continue; continue;
} }
final String replacement = placeholder.onRequest(player, parametersString); final String replacement = placeholder.onRequest(player, parametersString);
if (replacement == null) if (replacement == null)
{ {
builder.append(closure.head).append(identifierString).append('_').append(parametersString).append(closure.tail); builder.append(closure.head).append(identifierString);
if (identified)
{
builder.append('_');
}
builder.append(parametersString).append(closure.tail);
continue; continue;
} }