Skip to content

El objetivo del repositorio es poder usar un conjunto de anotaciones "property wrappers" a un atributo.

License

Notifications You must be signed in to change notification settings

fsaldivar-dev/experimental-annotation-swift

Repository files navigation

experimental-annotation-swift

AnnotationSwift

GitHub issues:	GitHub issues badge GitHub forks:	GitHub forks badge GitHub stars

GitHub license:	GitHub license badge Cocoapods Build Test

Coverage

Total Coverage: 92.39%

Coverage Report
FileBranchesFuncsLinesUncovered Lines
Sources
   experimental_annotation.swift100%75%78.57%15, 16, 17, 19, 20, 21
Sources/annotations
   EmailAnnotation.swift100%100%100%
   LengthAnnotation.swift100%100%100%
   LowCaseAnnotation.swift100%75%90.91%20
Librería que se usa para anidar anotaciones

Roadmap

Roadmap Estado
Crear código base
SwiftPackage
CocoaPods
Example
UnitTest
Documentación 🚀
Extensiones [ ]

Swift Package Manager

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

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'

Teoría

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

About

El objetivo del repositorio es poder usar un conjunto de anotaciones "property wrappers" a un atributo.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published