Honour
Validation library for iOS inspired by Respect/Validation.
Validator.mustBe(Uppercase()).andMust(StartsWith("F")).validate("FOOBAR")
Usage
Single Validation
let username = "jeanpimentel"
Lowercase().validate(username) // true
Chained Validation
It is possible to use validators in a chain.
let v = Validator.addRule(Lowercase()).addRule(NoWhitespace()).addRule(Length(min: 3, max: 60))
v.validate("jeanpimentel") // true
Syntax sugar
It is possible to use some syntax tricks to be highly expressive.
let v = Validator.mustHave(Length(min: 3, max: 60)).and(NoWhitespace()).andMustBe(Lowercase())
v.validate("jeanpimentel") // true
Granularity control
We have 3 validation methods
validate()
- returns true or falseassert()
- returns a tuple with true/false and all errors, if any.check()
- returns a tuple with true/false and the first error, if any.
Validate
func validate(value: AnyObject) -> Bool
let validator = Validator().addRule(Uppercase()).addRule(StartsWith("J"))
validator.validate("JEAN") // true
validator.validate("PIMENTEL") // false
Assert
func assert(value: AnyObject) -> (isValid: Bool, invalidRules: Array<Rule>)
let validator = Validator().addRule(Uppercase()).addRule(StartsWith("J"))
let result = validator.assert("JEAN")
result.isValid // true
result.invalidRules // [] (empty)
let result = validator.assert("Jean")
result.isValid // false
result.invalidRules // [Uppercase()]
let result = validator.assert("Felipe")
result.isValid // false
result.invalidRules // [Uppercase(), StartsWith("J")]
Check
func check(value: AnyObject) -> (isValid: Bool, invalidRule: Rule?)
let validator = Validator().addRule(Uppercase()).addRule(StartsWith("J"))
let result = validator.check("JEAN")
result.isValid // true
result.invalidRule // nil
let result = validator.check("Felipe")
result.isValid // false
result.invalidRule // Uppercase()
let result = validator.check("FELIPE")
result.isValid // false
result.invalidRule // StartsWith("J")
Installation
Package is available on CocoaPods. See the "Using CocoaPods" guide for more information.
use_frameworks!
platform :ios, '7.0'
pod 'Honour', '~> 1.1.1'
Requirements
Honour Version | Minimum iOS Target | Notes |
---|---|---|
1.1.1 | iOS 7 | Swift 1.2 (Xcode 6.3) is required. |
Contributing
-
If you found a bug, and can provide steps to reliably reproduce it, open an issue.
-
If you have a feature request, open an issue.
-
If you want to contribute, submit a pull request.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request
Validators
Always a working in progress...
Available now:
- AllOf
- AlwaysInvalid
- AlwaysValid
- Between
- Composite
- Contains
- CountryCode
- EndsWith
- Even
- HexRGBColor
- Length
- Lowercase
- Max
- Min
- Negative
- NoWhitespace
- NoneOf
- NotEmpty
- Odd
- OneOf
- Positive
- Regex
- Roman
- StartsWith
- Uppercase
- Version
Localized validators
- Brazil (BR)
License
Honour is released under the MIT license. See LICENSE for details.