Mi nombre es Fernando Briano y soy programador.

Validación de la Cédula de Identidad Uruguaya en Ruby

El otro día estábamos comprando entradas para el cine por Internet con Cuervo, cuando tuve que llenar un campo “Cédula”. La cédula de identidad uruguaya tiene el formato: 0.000.000-0

Me molestó que en el sitio pidieran escribir la cédula con un formato específico. “¿Quién programó esto?” pensé, quitarle puntos y guiones al número es una estupidez en cualquier lenguaje de programación. Tendría que ser indiferente si la persona escribe “0.000.000/0” o “0000000”.

El dígito después del guión es el “dígito verificador” de la cédula. Pueden leer sobre el algoritmo de validación en Wikipedia. Uno de mis primeros proyectos hace años cuando trabajaba con .net fue un verificador de cédulas. Era una aplicación de escritorio con el diseño de la cédula, donde podíamos ingresar los números y nos decía si una cédula era válida. También generaba números de cédula al azar para una aplicación en la que estábamos trabajando que usaba validación de cédulas. Si alguna vez encuentro ese código prometo ponerlo en algún lado 😛

El tema es que aburridos con Bruno nos pusimos a hacer el algoritmo de validación de la cédula en Ruby en una sola línea. Estuvimos un rato con eso viendo distintas formas de hacerlo. Esa noche pensé en alguna manera de compartir ese código, porque es algo que no cambia y varias personas la pueden usar. Hace tiempo que venía buscando una excusa para crear una gema en Ruby, y esto me vino al pelo para hacerlo.

ci_uy en RubyGems

ci_uy en RubyGems

Fue así que creé mi primera gema: ci_uy, una gema para validar números de cédula uruguayas. La instalación es muy sencilla:

gem install ci_uy

Su uso:

fernando@hoth ~ $ irb
1.9.3p194 :001 > require 'ci_uy'
 => true
1.9.3p194 :002 > CiUY.validate_ci("1.111.111-1")
 => true
1.9.3p194 :003 > CiUY.get_validation_digit("2222222")
 => "2"

Pueden ver el código en GitHub. El código es bastante sencillo, pero ya me sirvió para leer un poco más sobre RubyGems y tener la experiencia de crear una gema desde cero. Había trabajado sobre otras gemas, pero esta es la primera que creé.

Feed de comentarios | Url para Trackbacks | Suscribirse a los posts por correo electrónico

5 comentarios en este post

  1. Avatar Rodolfo 10 Enero. 2013 - 11:12 pm Firefox 18.0 GNU/Linux 64 bits

    Hola esta interesante el codigo gracias por compartirlo tengo una consulta que tan diferente es Ruby de Java en lo personal me llama la atención Ruby en si me gustaría leer un poco mas sobre ello. Se que puedo leer sobre ello en internet pero me gusta saber opiniones personales.
    Gracias y Saludos.

    • Avatar Fernando 14 Enero. 2013 - 9:30 pm Firefox 20.0 GNU/Linux 64 bits

      El “problema” de Ruby en comparación con Java, por lo menos para mi, es: Una vez que empezás a usar Ruby a diario y ver todo lo bueno que tiene, volver a Java es una tortura XD

      Por lo menos JRuby te da lo mejor de ambos mundos. Es bastante diferente, aunque viniendo de Java no resulta TAN raro todo.

  2. Avatar sebastian 28 Agosto. 2013 - 12:44 pm Google Chrome 29.0.1547.57 Windows 7

    sabes que estoy realizando un proyecto en .net y tengo q validar la cédula, tu podrías subir como lo hiciste o mostrarme el código en .net, saludos

    • Avatar Fernando 28 Agosto. 2013 - 4:47 pm Firefox 25.0 Ubuntu 64 bits

      Sebastián,
      El código de la gema está disponible en GitHub en el archivo /lib/ci_uy.rb. Podés usarlo de referencia y sacar el algoritmo de la validación de la cédula. De paso es un buen ejercicio para que mires algo de código Ruby 🙂

      ¡Saludos!

  1. WordPress JavaScript para validar Cédula de Identidad Uruguaya | Picando Código | 26 Marzo. 2014 - 12:30 pm

    […] mayor que tienen varios sitios uruguayos es la validación de la cédula. Fue lo que me llevó a escribir la gema ci_uy en Ruby, y ahora la implementación en JS como […]

Dejar un comentario

Toasty!