public BasicSequenceMatchResult<T> copy() { BasicSequenceMatchResult<T> res = new BasicSequenceMatchResult<>(); res.pattern = pattern; res.elements = elements; res.matchedGroups = new MatchedGroup[matchedGroups.length]; res.nodesToStringConverter = nodesToStringConverter; res.score = score; res.priority = priority; res.order = order; res.varGroupBindings = varGroupBindings; for (int i = 0; i < matchedGroups.length; i++ ) { if (matchedGroups[i] != null) { res.matchedGroups[i] = new MatchedGroup(matchedGroups[i]); } } if (matchedResults != null) { res.matchedResults = new Object[matchedResults.length]; System.arraycopy(res.matchedResults, 0, matchedResults, 0, matchedResults.length); } return res; }
@Override public BasicSequenceMatchResult<T> toBasicSequenceMatchResult() { return copy(); }
@Override public MatchedGroupInfo<T> groupInfo(String var) { int g = getFirstVarGroup(var); if (g >= 0) { return groupInfo(g); } else { return null; } }
@Override public List<? extends T> groupNodes(String var) { int g = getFirstVarGroup(var); if (g >= 0) { return groupNodes(g); } else { return null; } }
@Override public Object groupMatchResult(String var, int index) { int g = getFirstVarGroup(var); if (g >= 0) { return groupMatchResult(g, index); } else { return null; } }
@Override public MatchedGroupInfo<T> groupInfo(int group) { List<? extends T> nodes = groupNodes(group); if (nodes != null) { Object value = groupValue(group); String text = group(group); List<Object> matchedResults = groupMatchResults(group); String varName = group >= this.varGroupBindings.varnames.length ? null : this.varGroupBindings.varnames[group]; return new MatchedGroupInfo<>(text, nodes, matchedResults, value, varName); } else { return null; } }
@Override public String group(String var) { int g = getFirstVarGroup(var); if (g >= 0) { return group(g); } else { return null; } }
@Override public int end(String var) { int g = getFirstVarGroup(var); if (g >= 0) { return end(g); } else { return -1; } }
@Override public List<T> groupNodes() { return groupNodes(0); }
@Override public int start(String var) { int g = getFirstVarGroup(var); if (g >= 0) { return start(g); } else { return -1; } }
@Override public List<Object> groupMatchResults(String var) { int g = getFirstVarGroup(var); if (g >= 0) { return groupMatchResults(g); } else { return null; } }
@Override public Object groupValue(String var) { int g = getFirstVarGroup(var); if (g >= 0) { return groupValue(g); } else { return null; } }
@Override public int end() { return end(0); }
@Override public int start() { return start(0); }
@Override public String group() { return group(0); }
/** * Returns a copy of the current match results. Use this method * to save away match results for later use, since future operations * using the SequenceMatcher changes the match results. * @return Copy of the the current match results */ public BasicSequenceMatchResult<T> toBasicSequenceMatchResult() { if (matchingCompleted && matched) { return super.toBasicSequenceMatchResult(); } else { String message = getStateMessage(); throw new IllegalStateException(message); } }
@Override public MatchedGroupInfo<T> groupInfo() { return groupInfo(0); }
public Object groupMatchResult(int group, int index) { if (matchingCompleted && matched) { return super.groupMatchResult(group, index); } else { String message = getStateMessage(); throw new IllegalStateException(message); } }
public MatchedGroupInfo<T> groupInfo(int group) { List<? extends T> nodes = groupNodes(group); if (nodes != null) { Object value = groupValue(group); String text = group(group); List<Object> matchedResults = groupMatchResults(group); return new MatchedGroupInfo<T>(text, nodes, matchedResults, value); } else { return null; } }