Total Coverage: 92.39%
Coverage Report
File | Branches | Funcs | Lines | Uncovered Lines |
---|---|---|---|---|
Sources | ||||
experimental_annotation.swift | 100% | 75% | 78.57% | 15, 16, 17, 19, 20, 21 |
Sources/annotations | ||||
EmailAnnotation.swift | 100% | 100% | 100% | |
LengthAnnotation.swift | 100% | 100% | 100% | |
LowCaseAnnotation.swift | 100% | 75% | 90.91% | 20 |
Roadmap | Estado |
---|---|
Crear código base | ✅ |
SwiftPackage | ✅ |
CocoaPods | ✅ |
Example | ✅ |
UnitTest | ✅ |
Documentación | 🚀 |
Extensiones | [ ] |
Swift Package Manager es una herramienta para automatizar la distribución de código Swift y está integrado en el compilador Swift. Está en desarrollo temprano, pero experimental-annotation-swift admite su uso en plataformas compatibles.
Una vez que haya configurado su paquete Swift, agregar experimental-annotation-swift como dependencia es tan fácil como agregarlo al valor de dependencias de su Package.swift.
dependencies: [
.package(url: "https://github.com/JavierSaldivarRubio/esperimental-annotation-swift", .upToNextMajor(from: "0.0.1"))
]
CocoaPods es un administrador de dependencias para proyectos Cocoa. Para obtener instrucciones de uso e instalación, visite su sitio web. Para integrar AnnotationSwift en su proyecto Xcode usando CocoaPods, especifíquelo en su Podfile
:
pod 'AnnotationSwift'
En java se conoce ya desde hace mucho tiempo las funciones denominadas anotaciones las cuales son muy comunes en sprint, o al usar la serialización con gson en android, en iOS no existía si no hace pocos años el uso de property wrappers
Si bien es muy similar a las anotaciones de java, aun son muy simples y su principal limitante es que no se puede usar más de una anotación en una variable,
@Upercase
@MaxLenght(10) //(X) Error Property type 'String?' does not match that of the 'wrappedValue' property of its wrapper type 'Email'
var name: String?
la intención de esta librería es poder crear grupos de annotaciones para cualquier fin. Ejemplo:
struct Model {
@GroupSet(Email<String>(),
LowCase<String>())
var email: String?
@GroupSet(MinLength<String>(minLength: 3),
MaxLength<String>(maxLength: 10))
var min3Max10: String?
}
Se puede observar un modelo donde al attributo email
se le agregan dos restricciones, la primera es que se requiere ser de tipo email, la segunda es que necesita que el string sea minusculas, si yo agrego FSALDIVAR_DEV@example.com
el valor sera cambiado por fsaldivar_dev@example.com