https://github.com/gobwas/enum.js
Javascript Enum object.
https://github.com/gobwas/enum.js
Last synced: 5 months ago
JSON representation
Javascript Enum object.
- Host: GitHub
- URL: https://github.com/gobwas/enum.js
- Owner: gobwas
- Created: 2013-07-05T15:27:57.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-08-20T13:03:09.000Z (over 11 years ago)
- Last Synced: 2025-08-09T05:38:38.964Z (5 months ago)
- Language: JavaScript
- Size: 178 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
Enum.js
=======
Simple Enumerable object in javascript.
Usage
-----
##### Creating custom Enum
Enum.extend function expect two parameters:
- first is a static properties aka Enum constants,
- second is a custom prototype methods.
```javascript
var HTTPCodeEnum = Enum.extend({
CONTINUE: "100",
OK: "200",
MULTIPLE_CHOISES: "300",
BAD_REQUEST: "400",
INTERNAL_ERROR: "500"
});
```
You can also pass in first object:
- static functions, that will can be accessed like ```MyEnum.myFunction()```
- static objects,
- static values, needed for internal usage. To prevent parsing them as Enum constant, add double underscore as prefix, like: ```__myInternalValue```
Enum throws error in some usual cases. So there is an ability to use custom Errors for your custom Enums, to catch them upper and check with ```instanceOf``` function:
```javascript
var HTTPCodeEnum = Enum.extend({
... // constants
__error: MyOwnError // reference to your Error constructor
});
```
> If ```__error``` does not present in first parameter object, then Enum will use its own EnumError constructor.
> Anyway, u can always get the reference to the Error function via ```Enum.__error```
##### Simple usage
```javascript
function ajaxCallback(data) {
if (data.code == HTTPCodeEnum.OK) {
// ...
}
}
```
##### Enum usage:
```javascript
function ajaxCallback(data) {
// Throws a EnumError if catch non existing code
var status = new HTTPCodeEnum(data.code);
// Returns mapped message
// getMessage must be implemented in HTTPCodeEnum.prototype
console.log(status.getMessage());
}
// Exceptions handling
function indexController() {
try {
var request = $.ajax(...).done(ajaxCallback);
} catch(e) {
if (e instanceof HTTPCodeEnum.__error) {
console.log('Catched non existing HTTP code!', e.message);
}
}
}
```