Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

curp.js

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

curp.js - npm Package Compare versions

Comparing version 0.1.2 to 0.1.3

.travis.yml

2

bower.json
{
"name": "curp.js",
"main": "curp.js",
"version": "0.1.1",
"version": "0.1.3",
"authors": [

@@ -6,0 +6,0 @@ "Christopher Luna <dev@christopher-luna.com>"

@@ -82,4 +82,3 @@ /*jslint indent:2, regexp:true*/

}
var pad = zeropad.bind(null, 2);
var pad = zeropad.bind(null, 2), comunes = [ 'MARIA', 'MA', 'MA.', 'JOSE', 'J', 'J.' ];
/**

@@ -93,3 +92,3 @@ * primerConsonante()

str = str.trim().substring(1).replace(/[AEIOU]/ig, '').substring(0, 1);
return (str === '') ? 'X' : str;
return (str === '' || str === 'Ñ') ? 'X' : str;
}

@@ -130,7 +129,7 @@

'è', 'é', 'ë', 'ê', 'ì', 'í', 'ï', 'î', 'ò', 'ó', 'ö', 'ô', 'ù',
'ú', 'ü', 'û', 'Ñ', 'ñ', 'Ç', 'ç' ];
'ú', 'ü', 'û', 'Ç', 'ç' ];
destino = [ 'A', 'A', 'A', 'A', 'A', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I',
'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'a', 'a', 'a', 'a', 'a',
'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'u',
'u', 'u', 'u', 'n', 'n', 'c', 'c' ];
'u', 'u', 'u', 'c', 'c' ];
str = str.split('');

@@ -181,3 +180,20 @@ salida = str.map(function (char) {

/**
* extraerInicial()
* Funcion que extrae la inicial del primer nombre, o, si tiene mas de 1 nombre Y el primer
* nombre es uno de la lista de nombres comunes, la inicial del segundo nombre
* @param {string} nombre - String que representa todos los nombres (excepto los apellidos) separados por espacio
*/
function extrarInicial(nombre) {
var nombres, primerNombreEsComun;
nombres = nombre.toUpperCase().trim().split(/\s+/);
primerNombreEsComun = (nombres.length > 1 && comunes.indexOf(nombres[0]) > -1);
if (primerNombreEsComun) {
return nombres[1].substring(0, 1);
}
return nombres[0].substring(0, 1);
}
/**

@@ -199,3 +215,3 @@ * generaCurp()

function generaCurp(param) {
var inicial_nombre, vocal_apellido, posicion_1_4, posicion_14_16, curp;
var inicial_nombre, vocal_apellido, posicion_1_4, posicion_14_16, curp, primera_letra_paterno, primera_letra_materno, nombres, nombre_a_usar;

@@ -208,27 +224,25 @@ if (!estadoValido(param.estado)) {

param.apellido_paterno = ajustaCompuesto(normalizaString(param.apellido_paterno.toUpperCase())).trim();
param.apellido_materno = param.apellido_materno || "";
param.apellido_materno = ajustaCompuesto(normalizaString(param.apellido_materno.toUpperCase())).trim();
// La inicial del primer nombre, o, si tiene mas de 1 nombre Y el primer
// nombre es uno de la lista de nombres comunes, la inicial del segundo nombre
inicial_nombre = (function (nombre) {
var comunes, nombres, primerNombreEsComun;
comunes = [ 'MARIA', 'MA', 'MA.', 'JOSE', 'J', 'J.' ];
nombres = nombre.toUpperCase().trim().split(/\s+/);
primerNombreEsComun = (nombres.length > 1 && comunes.indexOf(nombres[0]) > -1);
inicial_nombre = extrarInicial(param.nombre);
if (primerNombreEsComun) {
return nombres[1].substring(0, 1);
}
if (!primerNombreEsComun) {
return nombres[0].substring(0, 1);
}
}(param.nombre));
vocal_apellido = param.apellido_paterno.trim().substring(1).replace(/[^AEIOU]/g, '').substring(0, 1);
vocal_apellido = param.apellido_paterno.trim().substring(1).replace(/[BCDFGHJKLMNÑPQRSTVWXYZ]/g, '').substring(0, 1);
vocal_apellido = (vocal_apellido === '') ? 'X' : vocal_apellido;
primera_letra_paterno = param.apellido_paterno.substring(0, 1);
primera_letra_paterno = primera_letra_paterno === 'Ñ' ? 'X' : primera_letra_paterno;
if (!param.apellido_materno || param.apellido_materno === "") {
primera_letra_materno = 'X';
} else {
primera_letra_materno = param.apellido_materno.substring(0, 1);
primera_letra_materno = primera_letra_materno === 'Ñ' ? 'X' : primera_letra_materno;
}
posicion_1_4 = [
param.apellido_paterno.substring(0, 1),
primera_letra_paterno,
vocal_apellido,
param.apellido_materno.substring(0, 1),
primera_letra_materno,
inicial_nombre

@@ -239,6 +253,11 @@ ].join('');

nombres = param.nombre.split(" ").filter(function (palabra) {
return palabra !== "";
});
nombre_a_usar = comunes.indexOf(nombres[0]) > -1 ? nombres[1] : nombres[0];
posicion_14_16 = [
primerConsonante(param.apellido_paterno),
primerConsonante(param.apellido_materno),
primerConsonante(param.nombre)
primerConsonante(nombre_a_usar)
].join('');

@@ -245,0 +264,0 @@

@@ -11,3 +11,3 @@ /*jslint node: true, indent:2*/

all : {
src : ['package.json', 'bower.json', 'curp.js', 'Gruntfile.js'],
src : ['package.json', 'bower.json', 'curp.js', 'Gruntfile.js', 'test/**.js'],
directives : {

@@ -18,2 +18,7 @@ indent : 2,

}
},
mochaTest : {
test : {
src : ['test/**/*.js']
}
}

@@ -23,6 +28,8 @@ });

grunt.loadNpmTasks('grunt-jslint');
grunt.loadNpmTasks('grunt-mocha-test');
// Default task(s).
grunt.registerTask('default', [
'jslint'
'jslint',
'mochaTest'
]);

@@ -29,0 +36,0 @@

{
"name": "curp.js",
"version": "0.1.2",
"version": "0.1.3",
"description": "Función para generar el CURP, de acuerdo a las especificaciones oficiales.",
"main": "curp.js",
"scripts": {
"test": "grunt"
"test": "grunt",
"mocha": "grunt mochaTest"
},

@@ -25,4 +26,6 @@ "repository": {

"grunt": "^0.4.5",
"grunt-jslint": "^1.1.12"
"grunt-jslint": "^1.1.12",
"grunt-mocha-test": "^0.12.7",
"mocha": "^2.2.5"
}
}
curp.js
=======
[![Build Status](https://travis-ci.org/prestigos/curp.js.png?branch=master)](https://travis-ci.org/prestigos/curp.js)
Función para generar el CURP, de acuerdo a las especificaciones oficiales.

@@ -11,2 +13,3 @@

Navegador : `<script src="curp.js"></script>`
Node.js : `var generaCurp = require('curp');`

@@ -27,2 +30,23 @@

## Pruebas
Para correr las pruebas utiliza el comando:
```bash
npm run mocha
```
## Changelog
* 0.1.3
- Agregadas pruebas con mocha (creditos a @Dudemullet)
- Correcciones en el algoritmo (creditos a @Dudemullet)
* 0.1.2
- Correccion en homonimia
- Reemplazado jshint por jslint
* 0.1.1
- Agregado `normalizaString()`
* 0.1.0
- Primer version
## Licencia

@@ -29,0 +53,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc