CombineValidate

1.0.1

🚦 Validation library depends on SwiftUI & Combine. Reactive and fully customizable.
pridees/combine-validate

What's New

1.0.1

2021-11-13T20:41:26Z
  • Debounce validation publishers
  • Cover all RegularPattern RegExp cases
  • Add test default method to RegexProtocol for more concise API

CombineValidate

License Swift versions Platforms codecov Test And Coverage

What is CombineValidate?

Useful satellite for validation user inputs proposes for any SwiftUI architectures. (MVVM as basic reference)

Batteries:

  • SwiftUI native
  • Combine under the hood
  • Fully customizable
  • Validate simple fields for non empty values
  • Validate fields by predefined or your own regular expressions
  • Try input by multiple regex expressions and emerge up the result what is the regex got fired
  • Pass your own error messages
  • Localize error messages with custom localization table names
  • Use the wide validation extension library
  • Extend the set of validation possibilities as you want

Examples

Basic usage

Firstly you should define the validation publisher within your @Published property

class FormViewModel: ObservableObject {
    
    @Published var email = ""
    public lazy var emailValidator: ValidationPublisher = {
        $email.validateWithRegex(
            regex: RegularPattern.email,
            error: "Not email",
            tableName: nil
        )
    }()
}

Excellent! And then, call the validate view modifier from your SwiftUI Input

TextField("Should email", text: $viewModel.email)
        .validate(for: viewModel.emailValidator)

Enjoy!

Same steps you can apply to SecureField and Toggle.

CombineValidateExtended library

Useful set of validation publishers and regular expressions library. Validation for

  • any kind of credit card numbers
  • urls
  • hash tags
  • numbers
  • passwords
  • much more

Requirements

The CombineValidate dependes on the Combine reactive framework. Minimal requirements:

  • iOS 13
  • MacOS Catalina

Installation

Package installation occurs via SPM. Add package in your Xcode as dependency

Documentation

Look at here and explore documentation.

Description

  • Swift Tools 5.3.0
View More Packages from this Author

Dependencies

  • None
Last updated: Fri Nov 26 2021 13:19:00 GMT-0500 (GMT-05:00)