Salut à tous, je viens vers vous pour m'enquérir de votre avis. Petits et grands, expérimentés ou non, j'aimerais savoir ce que vous pensez de ma dernière création.
Pour divers besoins, j'ai dû créer mon propre validateur de données. Bon je sais vous allez me dire que j'ai réinventé la roue mais les trucs existants ne me convenaient pas. Et c'est toujours plus amusant de refaire soi même les choses pour les comprendre.
Du coup, j'ai créé un gist (https://gist.github.com/4148467) et j'aimerais bien votre avis.
Le validateur ValEngine fonctionne aussi bien en synchrone qu'asynchrone et est même totalement ouvert d'esprit à ce sujet puisqu'il peut même tolérer de travailler avec les deux types dans un même set de contrôles.
Le principe est d'avoir de vôtre côté un jeu de données à valider (un tableau par exemple). Vous indiquer à ValEngine quel tableau et quel est l'index (pour permettre à ValEngine de s'y retrouver), les méthodes de contrôles à appliquer sans vous soucier qu'elles soient synchrones ou non.
Pour le moment vous pouvez seulement vérifier qu'une donnée est bien existante (required), une adresse mail (is_email), une adresse URL (is_url), une chaîne de caractères ne contenant que des lettres (is_alpha_string) ou si c'est un nombre, entier ou non (is_numeric).
Précision à propos de is_email, même si le format est correct, il peut arriver que le domaine indiqué soit erroné. J'ai donc intégré une version personnalisée du validateur de mails de Kicksend embarquant les domaines de mails les plus courants en France, Angleterre, aux USA et en Allemagne (ce n'est pas la seule personnalisation). Ainsi si le format est correct mais que la fonction pense qu'il y a erreur, elle vous proposera vient l'objet JSON de résultat (méthode non-intrusive) un domaine plus approprié. Par exemple, si vous écrivez toto@gmil.com, la fonction vous dira que c'est ok, mais qu'elle pense que vous vouliez écrire toto@gmail.com.
Qu'en dites-vous ? Merci d'avance pour vos avis !
Rappel de l'adresse du gist https://gist.github.com/4148467