BracketValidationResult.java

package com.datastructures.linear.stack.applied;

/** Outcome of validating one line of legacy source for balanced brackets. */
public record BracketValidationResult(boolean valid, String message) {

    public static BracketValidationResult ok() {
        return new BracketValidationResult(true, "balanced");
    }

    public static BracketValidationResult mismatch(char expectedClosing, char found, int position) {
        return new BracketValidationResult(false,
                "expected '" + expectedClosing + "' but found '" + found + "' at position " + position);
    }

    public static BracketValidationResult unexpectedClosing(char found, int position) {
        return new BracketValidationResult(false, "unexpected '" + found + "' at position " + position);
    }

    public static BracketValidationResult unclosed(char opening, int position) {
        return new BracketValidationResult(false, "unclosed '" + opening + "' opened at position " + position);
    }
}