Skip to content

Commit

Permalink
Fixed ValidationResult nullability (#240)
Browse files Browse the repository at this point in the history
  • Loading branch information
shibayan authored Nov 12, 2022
1 parent 169631f commit 9daacad
Show file tree
Hide file tree
Showing 12 changed files with 28 additions and 28 deletions.
4 changes: 2 additions & 2 deletions Sharprompt/Drivers/DefaultConsoleDriver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public ConsoleKeyInfo ReadKey()

if (keyInfo.Key == ConsoleKey.C && keyInfo.Modifiers == ConsoleModifiers.Control)
{
CancellationCallback?.Invoke();
CancellationCallback.Invoke();
}

return keyInfo;
Expand Down Expand Up @@ -114,7 +114,7 @@ public bool CursorVisible

public int WindowHeight => Console.WindowHeight;

public Action CancellationCallback { get; set; } = null!;
public Action CancellationCallback { get; set; } = () => { };

#endregion
}
2 changes: 1 addition & 1 deletion Sharprompt/Fluent/InputOptionsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public static InputOptions<T> WithDefaultValue<T>(this InputOptions<T> options,
return options;
}

public static InputOptions<T> AddValidators<T>(this InputOptions<T> options, params Func<object?, ValidationResult>[] validators)
public static InputOptions<T> AddValidators<T>(this InputOptions<T> options, params Func<object?, ValidationResult?>[] validators)
{
foreach (var validator in validators)
{
Expand Down
2 changes: 1 addition & 1 deletion Sharprompt/Fluent/ListOptionsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public static ListOptions<T> WithMaximum<T>(this ListOptions<T> options, int max
return options;
}

public static ListOptions<T> AddValidators<T>(this ListOptions<T> options, params Func<object?, ValidationResult>[] validators) where T : notnull
public static ListOptions<T> AddValidators<T>(this ListOptions<T> options, params Func<object?, ValidationResult?>[] validators) where T : notnull
{
foreach (var validator in validators)
{
Expand Down
2 changes: 1 addition & 1 deletion Sharprompt/Fluent/PasswordOptionsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public static PasswordOptions WithPasswordChar(this PasswordOptions options, str
return options;
}

public static PasswordOptions AddValidators(this PasswordOptions options, params Func<object?, ValidationResult>[] validators)
public static PasswordOptions AddValidators(this PasswordOptions options, params Func<object?, ValidationResult?>[] validators)
{
foreach (var validator in validators)
{
Expand Down
2 changes: 1 addition & 1 deletion Sharprompt/Forms/FormBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public T Start()

protected void SetError(ValidationResult validationResult) => SetError(validationResult.ErrorMessage!);

protected bool TryValidate([NotNullWhen(true)] object? input, IList<Func<object?, ValidationResult>> validators)
protected bool TryValidate([NotNullWhen(true)] object? input, IList<Func<object?, ValidationResult?>> validators)
{
var result = validators.Select(x => x(input))
.FirstOrDefault(x => x != ValidationResult.Success);
Expand Down
2 changes: 1 addition & 1 deletion Sharprompt/InputOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class InputOptions<T>

public object? DefaultValue { get; set; }

public IList<Func<object?, ValidationResult>> Validators { get; } = new List<Func<object?, ValidationResult>>();
public IList<Func<object?, ValidationResult?>> Validators { get; } = new List<Func<object?, ValidationResult?>>();

internal void EnsureOptions()
{
Expand Down
6 changes: 3 additions & 3 deletions Sharprompt/Internal/PropertyMetadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public PropertyMetadata(object model, PropertyInfo propertyInfo)
public string? Placeholder { get; set; }
public int? Order { get; }
public object? DefaultValue { get; }
public IReadOnlyList<Func<object?, ValidationResult>> Validators { get; }
public IReadOnlyList<Func<object?, ValidationResult?>> Validators { get; }
public IItemsProvider ItemsProvider { get; set; }
public bool BindIgnore { get; set; }

Expand Down Expand Up @@ -89,15 +89,15 @@ public ValidationAttributeAdapter(ValidationAttribute validationAttribute)

private readonly ValidationAttribute _validationAttribute;

public Func<object?, ValidationResult> GetValidator(string propertyName, object model)
public Func<object?, ValidationResult?> GetValidator(string propertyName, object model)
{
var validationContext = new ValidationContext(model)
{
DisplayName = propertyName,
MemberName = propertyName
};

return input => _validationAttribute.GetValidationResult(input, validationContext)!;
return input => _validationAttribute.GetValidationResult(input, validationContext);
}
}
}
4 changes: 2 additions & 2 deletions Sharprompt/Internal/ValidatorsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ namespace Sharprompt.Internal;

internal static class ValidatorsExtensions
{
public static void Merge(this IList<Func<object?, ValidationResult>> source, IEnumerable<Func<object?, ValidationResult>>? validators)
public static void Merge(this IList<Func<object?, ValidationResult?>> source, IEnumerable<Func<object?, ValidationResult?>>? validators)
{
foreach (var validator in validators ?? Enumerable.Empty<Func<object?, ValidationResult>>())
foreach (var validator in validators ?? Enumerable.Empty<Func<object?, ValidationResult?>>())
{
source.Add(validator);
}
Expand Down
2 changes: 1 addition & 1 deletion Sharprompt/ListOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ListOptions<T> where T : notnull

public int Maximum { get; set; } = int.MaxValue;

public IList<Func<object?, ValidationResult>> Validators { get; } = new List<Func<object?, ValidationResult>>();
public IList<Func<object?, ValidationResult?>> Validators { get; } = new List<Func<object?, ValidationResult?>>();

internal void EnsureOptions()
{
Expand Down
2 changes: 1 addition & 1 deletion Sharprompt/PasswordOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class PasswordOptions

public string PasswordChar { get; set; } = "*";

public IList<Func<object?, ValidationResult>> Validators { get; } = new List<Func<object?, ValidationResult>>();
public IList<Func<object?, ValidationResult?>> Validators { get; } = new List<Func<object?, ValidationResult?>>();

internal void EnsureOptions()
{
Expand Down
6 changes: 3 additions & 3 deletions Sharprompt/Prompt.Basic.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public static T Input<T>(Action<InputOptions<T>> configure)
return Input(options);
}

public static T Input<T>(string message, object? defaultValue = default, string? placeholder = default, IList<Func<object?, ValidationResult>>? validators = default)
public static T Input<T>(string message, object? defaultValue = default, string? placeholder = default, IList<Func<object?, ValidationResult?>>? validators = default)
{
return Input<T>(options =>
{
Expand Down Expand Up @@ -53,7 +53,7 @@ public static string Password(Action<PasswordOptions> configure)
return Password(options);
}

public static string Password(string message, string passwordChar = "*", string? placeholder = default, IList<Func<object?, ValidationResult>>? validators = default)
public static string Password(string message, string passwordChar = "*", string? placeholder = default, IList<Func<object?, ValidationResult?>>? validators = default)
{
return Password(options =>
{
Expand Down Expand Up @@ -186,7 +186,7 @@ public static IEnumerable<T> List<T>(Action<ListOptions<T>> configure) where T :
return List(options);
}

public static IEnumerable<T> List<T>(string message, int minimum = 1, int maximum = int.MaxValue, IList<Func<object?, ValidationResult>>? validators = default) where T : notnull
public static IEnumerable<T> List<T>(string message, int minimum = 1, int maximum = int.MaxValue, IList<Func<object?, ValidationResult?>>? validators = default) where T : notnull
{
return List<T>(options =>
{
Expand Down
22 changes: 11 additions & 11 deletions Sharprompt/Validators.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace Sharprompt;

public static class Validators
{
public static Func<object?, ValidationResult> Required(string? errorMessage = default)
public static Func<object?, ValidationResult?> Required(string? errorMessage = default)
{
return input =>
{
Expand All @@ -22,58 +22,58 @@ public static class Validators
return new ValidationResult(errorMessage ?? Resource.Validation_Required);
}

return ValidationResult.Success!;
return ValidationResult.Success;
};
}

public static Func<object?, ValidationResult> MinLength(int length, string? errorMessage = default)
public static Func<object?, ValidationResult?> MinLength(int length, string? errorMessage = default)
{
return input =>
{
if (input is not string strValue)
{
return ValidationResult.Success!;
return ValidationResult.Success;
}

if (strValue.Length >= length)
{
return ValidationResult.Success!;
return ValidationResult.Success;
}

return new ValidationResult(errorMessage ?? Resource.Validation_MinLength);
};
}

public static Func<object?, ValidationResult> MaxLength(int length, string? errorMessage = default)
public static Func<object?, ValidationResult?> MaxLength(int length, string? errorMessage = default)
{
return input =>
{
if (input is not string strValue)
{
return ValidationResult.Success!;
return ValidationResult.Success;
}

if (strValue.Length <= length)
{
return ValidationResult.Success!;
return ValidationResult.Success;
}

return new ValidationResult(errorMessage ?? Resource.Validation_MaxLength);
};
}

public static Func<object?, ValidationResult> RegularExpression(string pattern, string? errorMessage = default)
public static Func<object?, ValidationResult?> RegularExpression(string pattern, string? errorMessage = default)
{
return input =>
{
if (input is not string strValue)
{
return ValidationResult.Success!;
return ValidationResult.Success;
}

if (Regex.IsMatch(strValue, pattern))
{
return ValidationResult.Success!;
return ValidationResult.Success;
}

return new ValidationResult(errorMessage ?? Resource.Validation_RegularExpression);
Expand Down

0 comments on commit 9daacad

Please sign in to comment.