using System; using System.Linq.Expressions; using ErsatzTV.Core; using LanguageExt; using static LanguageExt.Prelude; namespace ErsatzTV { public static partial class Validators { public static Func>, Validation> NotLongerThan( this T input, int maxLength) => expression => Optional(expression) .Map(exp => exp.Compile()(input)) .Where(s => s.Length <= maxLength) .ToValidation($"[{GetMemberName(expression)}] must not be longer than {maxLength}"); public static Validation NotEmpty(this T input, Expression> expression) => Optional(expression.Compile()(input)) .Where(s => !string.IsNullOrWhiteSpace(s)) .ToValidation($"[{GetMemberName(expression)}] is an empty string"); } }