default void visitPrevious(Pattern pattern) { Pattern previous = pattern.previous(); if (previous != null) { previous.accept(this); } } }
default void visitPrevious(Pattern pattern) { Optional<Pattern> previous = pattern.previous(); if (previous.isPresent()) { previous.get().accept(this); } } }
@Override public String toString() { DefaultPrinter printer = new DefaultPrinter(); accept(printer); return printer.result(); } }
@Override public String toString() { DefaultPrinter printer = new DefaultPrinter(); accept(printer); return printer.result(); } }
@Override public <T> Match<T> match(Pattern<T> pattern, Object object, Captures captures) { if (pattern.previous() != null) { Match<?> match = match(pattern.previous(), object, captures); return match.flatMap((value) -> pattern.accept(this, value, match.captures())); } else { return pattern.accept(this, object, captures); } }
@Override public void visitWith(WithPattern<?> pattern) { visitPrevious(pattern); appendLine("with(%s)", pattern.getProperty().getName()); level += 1; pattern.getPattern().accept(this); level -= 1; }
@Override public void visitWith(WithPattern<?> pattern) { visitPrevious(pattern); appendLine("with(%s)", pattern.getProperty().getName()); level += 1; pattern.getPattern().accept(this); level -= 1; }