El otro día comprando entradas para el cine por Internet 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 en el trabajo 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é.

5 comentarios en este post

Feed de comentarios
  1. Avatar

    Rodolfo 10 enero. 2013 - 23:12

    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.

    Firefox 18.0 GNU/Linux 64 bits
    • Avatar

      Fernando 14 enero. 2013 - 21:30

      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.

      Firefox 20.0 GNU/Linux 64 bits
  2. Avatar

    sebastian 28 agosto. 2013 - 12:44

    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

    Google Chrome 29.0.1547.57 Windows 7
    • Avatar

      Fernando 28 agosto. 2013 - 16:47

      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!

      Firefox 25.0 Ubuntu 64 bits
  1. WordPress JavaScript para validar Cédula de Identidad Uruguaya | Picando Código | 26 marzo. 2014 - 12:30

    […] 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

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.

Toasty!