Skip to content
Snippets Groups Projects
Commit 032af96e authored by dgelessus's avatar dgelessus
Browse files

Add PositionedString.substring methods

parent cdcfd755
No related branches found
No related tags found
No related merge requests found
...@@ -94,10 +94,10 @@ public final class CommandUtils { ...@@ -94,10 +94,10 @@ public final class CommandUtils {
final SplitArguments splitArgs = new SplitArguments(Collections.emptyMap()); final SplitArguments splitArgs = new SplitArguments(Collections.emptyMap());
PositionedString remainingArgs = new PositionedString(argString, 0); PositionedString remainingArgs = new PositionedString(argString, 0);
if (parameters.getBodyParam().isPresent()) { if (parameters.getBodyParam().isPresent()) {
final Matcher bodySplitMatcher = BODY_SPLIT_PATTERN.matcher(argString); final Matcher bodySplitMatcher = BODY_SPLIT_PATTERN.matcher(remainingArgs.getValue());
if (bodySplitMatcher.find()) { if (bodySplitMatcher.find()) {
remainingArgs = new PositionedString(argString.substring(0, bodySplitMatcher.start()), remainingArgs.getStartPosition()); remainingArgs = remainingArgs.substring(0, bodySplitMatcher.start());
final PositionedString bodyValue = new PositionedString(argString.substring(bodySplitMatcher.end()), bodySplitMatcher.end()); final PositionedString bodyValue = remainingArgs.substring(bodySplitMatcher.end());
splitArgs.add(parameters.getBodyParam().get(), bodyValue); splitArgs.add(parameters.getBodyParam().get(), bodyValue);
} }
} }
......
...@@ -34,15 +34,15 @@ public interface Parameter<T> { ...@@ -34,15 +34,15 @@ public interface Parameter<T> {
final PositionedString splitArg; final PositionedString splitArg;
final PositionedString remainingArgString; final PositionedString remainingArgString;
if (argSplitMatcher.find()) { if (argSplitMatcher.find()) {
splitArg = new PositionedString(argString.getValue().substring(0, argSplitMatcher.start()), argString.getStartPosition()); splitArg = argString.substring(0, argSplitMatcher.start());
remainingArgString = new PositionedString(argString.getValue().substring(argSplitMatcher.end()), argString.getStartPosition() + argSplitMatcher.end()); remainingArgString = argString.substring(argSplitMatcher.end());
} else { } else {
splitArg = argString; splitArg = argString;
remainingArgString = new PositionedString("", argString.getStartPosition() + argString.getValue().length()); remainingArgString = argString.substring(argString.getValue().length());
} }
return new SplitResult(splitArg, remainingArgString); return new SplitResult(splitArg, remainingArgString);
}; };
public static final @NotNull Parameter.Splitter REMAINDER = argString -> new SplitResult(argString, new PositionedString("", argString.getStartPosition() + argString.getValue().length())); public static final @NotNull Parameter.Splitter REMAINDER = argString -> new SplitResult(argString, argString.substring(argString.getValue().length()));
public abstract Parameter.SplitResult split(final @NotNull PositionedString argString); public abstract Parameter.SplitResult split(final @NotNull PositionedString argString);
} }
......
...@@ -23,6 +23,14 @@ public final class PositionedString { ...@@ -23,6 +23,14 @@ public final class PositionedString {
return this.startPosition; return this.startPosition;
} }
public PositionedString substring(final int beginIndex, final int endIndex) {
return new PositionedString(this.getValue().substring(beginIndex, endIndex), this.getStartPosition() + beginIndex);
}
public PositionedString substring(final int beginIndex) {
return this.substring(beginIndex, this.getValue().length());
}
@Override @Override
public String toString() { public String toString() {
return MoreObjects.toStringHelper(this) return MoreObjects.toStringHelper(this)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment