1.1.1 • Published 8 years ago

x-enum v1.1.1

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

x-enum

A powerful enum implementation to Javascript

Installation

To use in node:

$ npm install x-enum

Then require it using CommonJS:

var Xenum = require('x-enum');

Or import using ES6 syntax:

import Xenum from 'x-enum';

To use in browser:

You can get the x-enum.js and x-enum.min.js scripts here.

And use directly in the browser:

<script src="path/to/yourCopyOf/x-enum.js"></script>

<script src="path/to/yourCopyOf/x-enum.min.js"></script>

Usage

A very simple example:

let Vowels = new XEnum('a', 'e', 'i', 'o', 'u');

console.log(Vowels.a.valueOf()); // 1
console.log(+Vowels.a); // 1
console.log(Vowels.a.toString()); // 'a'

console.log(Vowels.u.valueOf()); // 5
console.log(+Vowels.u); // 5
console.log(Vowels.u.toString()); // 'u'

You can set a string different from element name:

let Colors = new XEnum(
  {blue: 'Blue'},
  {lightBlue: 'Light Blue'}
);

console.log(+Colors.blue); // 1
console.log(Colors.blue.toString()); // 'Blue'

console.log(+Colors.lightBlue); // 2
console.log(Colors.lightBlue.toString()); // 'Light Blue'

You can set values manually

let Colors = new XEnum(
  {blue: 4},
  {lightBlue: 10}
);

console.log(+Colors.blue); // 4
console.log(Colors.blue.toString()); // 'blue'

console.log(+Colors.lightBlue); // 10
console.log(Colors.lightBlue.toString()); // 'lightBlue'

You can set new attributes to enum elements:

let Colors = new XEnum(
  {blue: {type: 'foo'}},
  {lightBlue: {type: 'bar'}}
);

console.log(+Colors.blue); // 1
console.log(Colors.blue.toString()); // 'blue'
console.log(Colors.blue.type); // 'foo'

console.log(+Colors.lightBlue); // 2
console.log(Colors.lightBlue.toString()); // 'lightBlue'
console.log(Colors.lightBlue.type); // 'bar'

Or you can set whatever you want:

let Colors = new XEnum(
  {blue: [4, 'Blue', {type: 'foo'}]},
  {lightBlue: [10, 'Light Blue', {type: 'bar'}]},
  {red: [11, 'Red']}
);

console.log(+Colors.blue); // 4
console.log(Colors.blue.toString()); // 'Blue'
console.log(Colors.blue.type); // 'foo'

console.log(+Colors.lightBlue); // 10
console.log(Colors.lightBlue.toString()); // 'Light Blue'
console.log(Colors.lightBlue.type); // 'bar'

console.log(+Colors.red); // 11
console.log(Colors.red.toString()); // 'Red'
console.log(Colors.red.type); // undefined

If you want a little cleaner syntax:

let Colors = new XEnum({
  blue: [4, 'Blue', {type: 'foo'}],
  lightBlue: [10, 'Light Blue', {type: 'bar'}],
  red: [11, 'Red']
});

Note

I've used it more than a year in production and it helped me a lot. I wish XEnum can be a good lib to you.

License

MIT