Introduction
enum-i18n
extends the excellent enum implementation adrai/enum. It exposes an Enum constructor that can be configured with a translate
function.
Installation
npm install -S enum-props
Usage
This document addresses the i18n features added here. For full documentation see adrai/enum.
Constructor Factory
The default export of this module is a factory that returns partially configured Enum
constructors. You can pass any config values supported by adrai/enum and they will be used for any enumerations instantiated with the returned constructor.
var enumI18n = ;var FrozenEnum = ; // Constructor for readonly enumsvar InsensitiveEnum = ; // Constructor for case insensitive enums
Translate Functions
Every enumeration must be provided a translate function. This function will be called to get a plain-text description of each enum member. A translate function will be passed an enum member and is expected to return a string.
You can pass a translate function to the constructor factory:
var Enum = { return ; } ; // Same as this shorthand:var Enum = { return ;} ;
Or you can pass a translate function to the constructor:
var Enum = ;var colors = "red" "yellow" "green" name: "colors" { return memberkey; } ;
If you pass both then the constructor's translate function will win.
Enum Construction
Every enumeration must be provided with a name
and a translate
function. The name
must be provided at the time the enumeration is instantiated.
var Enum = translator ;var colors = ; // Same as shorthand:var colors = ;
You can also pass any options supported by adrai/enum.
Example (shared translation set)
If you have a single translation collection for your app, you can pass a translate function in the enum-i18n
options:
// Pass config and get back an Enum constructorvar Enum = { // Return a string to use as the enum member's description return ;); // Define a simple enumvar colors = "red" "yellow" "green" "colors" ; // Render the member keys/values/descriptionscolorsenums;/*[ "red, 1, enums.colors.red", "yellow, 2, enums.colors.yellow", "green, 4, enums.colors.green"]*/
Example (independent translation sets)
If you have a translation collection per enumeration, you can pass a translate function in the constructor options:
// Pass config and get back an Enum constructorvar Enum = ; var COLOR_NAMES = red: "stop" yellow: "caution" green: "go"; // Define a simple enumvar colors = "red" "yellow" "green" name: "colors" { // Return a string to use as the enum member's description return COLOR_NAMES memberkey ; } ; // Render the member keys/values/descriptionscolorsenums;/*[ "red, 1, stop", "yellow, 2, caution", "green, 4, go"]*/
Development
npm test # run tests gulp coverage # run tests with linting and coverage gulp show-coverage # show coverage full report gulp # build compiled lib