@Override public List<PatternNote> generate(PatternNote baseNote) { List<PatternNote> list = new ArrayList<>(); list.add(baseNote); for (PatternStep element : stepList) { baseNote = element.transform(baseNote); list.add(baseNote); } return list; }
public boolean isPrefix(String[] segments, int startIndex) { int pos = startIndex; for (int i = 0; pos < segments.length && i < steps.size(); i++, pos++) { PatternStep step = steps.get(i); if (!step.matches(segments[pos])) { return false; } } if (pos == segments.length) { return true; } return next.isPrefix(segments, pos); }
public boolean matches(String[] segments, int startIndex) { int remaining = segments.length - startIndex; if (remaining < minSegments || remaining > maxSegments) { return false; } int pos = startIndex; for (int i = 0; i < steps.size(); i++, pos++) { PatternStep step = steps.get(i); if (!step.matches(segments[pos])) { return false; } } return next.matches(segments, pos); }