@arskang/enumsjs

1.0.5 • Public • Published

Enums con JavaScript

Instalación:

npm i @arskang/enumsjs

¿Cómo lo importo?

const Enums = require('@arskang/enumsjs');

¿Cómo utilizarlo?

  • La forma más sencilla es utilizar el método set y enviar un arreglo de strings.
const Roles = Enums.set(['Usuario', 'Moderador', 'Administrador']);
//> Enums generado: USUARIO,MODERADOR,ADMINISTRADOR

Roles.USUARIO; // Retorna -> Enum { 0 }
Roles.MODERADOR; // Retorna -> Enum { 1 }
Roles.ADMINISTRADOR; // Retorna -> Enum { 2 }

El valor inicial es 0, todos los enums retornan un objeto Enum (new Enum(x))

  • Si se necesita personalizar los valores y agregar una descripción, se envía un objeto con las propiedades name, value y description en lugar de un string.
const Roles = Enums.set(['Usuario', {
    name: 'Moderador',
    value: 3,
    description: 'Rol Moderador'
}, 'Administrador']);
//> Enums generado: USUARIO,MODERADOR,ADMINISTRADOR

Roles.USUARIO; // Retorna -> Enum { 0 }
Roles.MODERADOR; // Retorna -> Enum { 3 }
Roles.ADMINISTRADOR; // Retorna -> Enum { 4 }

value y description son opcionales, si no lleva name se enviará un warning en la consola y se omitirá en la generación del Enums

// El name ${name} tiene un tipo de dato no valido
  • Para acceder a las propiedades se utliza .getName(), .getValue() y .getDescription().
const Roles = Enums.set([{
    name: 'Usuario',
    description: 'Rol Usuario'
}, {
    name: 'Moderador',
    value: 3,
    description: 'Rol Moderador'
}, 'Administrador']);
//> Enums generado: USUARIO,MODERADOR,ADMINISTRADOR

Roles.USUARIO.getName(); // Retorna el string: 'Usuario'
Roles.USUARIO.getValue(); // Retorna el number: 0
Roles.USUARIO.getDescription(); // Retorna el string: 'Rol Usuario'

Roles.MODERADOR.getName(); // Retorna el string: 'Moderador'
Roles.MODERADOR.getValue(); // Retorna el number: 3
Roles.MODERADOR.getDescription(); // Retorna el string: 'Rol Moderador'

Roles.ADMINISTRADOR.getName(); // Retorna el string: 'Administrador'
Roles.ADMINISTRADOR.getValue(); // Retorna el number: 4
Roles.ADMINISTRADOR.getDescription(); // Retorna el string: 'Administrador'
  • También se pueden utilizar los métodos .toString() y .toNumber() para acceder a sus respectivos valores.
Roles.USUARIO.toString(); // Retorna el string: 'Usuario'
Roles.USUARIO.toNumber(); // Retorna el number: 0

Roles.MODERADOR.toString(); // Retorna el string: 'Moderador'
Roles.MODERADOR.toNumber(); // Retorna el number: 3

Roles.ADMINISTRADOR.toString(); // Retorna el string: 'Administrador'
Roles.ADMINISTRADOR.toNumber(); // Retorna el number: 4
  • Para validar el valor de un Enums se utiliza .isEqual(value), value puede recibir: Enums, strings o numbers.
// Validar Enums
Roles.USUARIO.isEqual(Roles.USUARIO); // Retorna True
Roles.USUARIO.isEqual(Roles.MODERADOR); // Retorna False

// Validar Value
Roles.USUARIO.isEqual(0); // Retorna True
Roles.USUARIO.isEqual(2); // Retorna False

// Validar Value como String
Roles.USUARIO.isEqual('0'); // Retorna True
Roles.USUARIO.isEqual('2'); // Retorna False

// Validar Name
//> Se puede enviar: 'Usuario', 'usuario', 'UsuariO', etc.
Roles.USUARIO.isEqual('usuario'); // Retorna True
Roles.USUARIO.isEqual('moderador'); // Retorna False

Se puede utilizar mayúsculas/minúsculas/espacios al enviar el name

Si se envia un tipo de dato no permitido, retorna: Dato no valido

  • Para convertir un valor que coincida con uno de los Enums se utiliza .convert(value), value puede recibir: Enums, strings o numbers.
// Convertir por Enums
Roles.convert(Roles.USUARIO); // Retorna -> Enum { 0 }
Roles.convert(Roles.CANELA); // Retorna -> Null

// Convertir por Value
Roles.convert(0); // Retorna -> Enum { 0 }
Roles.convert(87); // Retorna -> Null

// Convertir por Value como String
Roles.convert('0'); // Retorna -> Enum { 0 }
Roles.convert('87'); // Retorna -> Null

// Convertir por Name
//> Se puede enviar: 'Usuario', 'usuario', 'UsuariO', etc.
Roles.convert('usuario'); // Retorna -> Enum { 0 }
Roles.convert('usuario basico'); // Retorna -> Null

Se puede utilizar mayúsculas/minúsculas/espacios al enviar el name

Si se envia un tipo de dato no permitido, retorna: Dato no valido

Puntos importantes

  • Se agrega un guión bajo en cada espacio que se detecte, ejemplo:
const Roles = Enums.set(['Usuario Basico', 'Moderador', 'Administrador']);
//> Enums generado: USUARIO_BASICO,MODERADOR,ADMINISTRADOR

Roles.USUARIO_BASICO; // Retorna -> Enum { 0 }
  • Si por alguna razón se utilizán caracteres especiales para los enums, solo se puede acceder a su valor de la siguiente forma:
const Roles = Enums.set(['Usuario Básico', 'Moderador', 'Administrador']);
//> Enums generado: USUARIO_BÁSICO,MODERADOR,ADMINISTRADOR

Roles['USUARIO_BÁSICO']; // Retorna -> Enum { 0 }

Test

npm run test

Package Sidebar

Install

npm i @arskang/enumsjs

Weekly Downloads

4

Version

1.0.5

License

ISC

Unpacked Size

15 kB

Total Files

5

Last publish

Collaborators

  • arskang