Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    cocktail-trait-configurablepublic

    cocktail-trait-configurable

    A CocktailJS Trait Extension

    Build Status NPM version

    A trait to add configure(options) method that will call setters on each options key.

    Install

    npm install cocktail --save
    npm install cocktail-trait-configurable --save

    Trait requires (glue code)

    None

    Usage

    MyClass.js

     
    var cocktail     = require('cocktail'),
        Configurable = require('cocktail-trait-configurable');
        
    cocktail.mix({
        '@exports': module,
        '@as'     : 'class',
     
        '@traits' : [Configurable],
        
        '@properties': {
         property1: 'default value',
         property2: 0
        },
     
        constructor: function(config) {
            //we can use configurable method in the constructor 
            this.configure(config);
        }
        
    });
     

    index.js

     
    var MyClass = require('./MyClass'),
        options, obj, obj2;
     
    options = {
        property1: 'value from options', 
        property2: false, 
        discarded: 'this should be discarded!'
    });
     
    obj = new MyClass();
     
    //use the configure method publicly 
    obj.configure(options);
     
    console.log(obj.getProperty1()); //'value from options' 
    console.log(obj.getProperty2()); //false 
     
    //or in the constructor 
    obj2 = new MyClass(options);
     
    console.log(obj2.getProperty1()); //'value from options' 
    console.log(obj2.getProperty2()); //false 
     
     

    Configuring the Configurable Trait

    Since version 1.1.0 we can use Configurable.withOptions to return a configured Configurable Trait. This returns a trait that will look into the given options for the setter name given a key. If the key is not found, then it will default to set{Key} method.

    Example: The class will use addItems instead of setItems since we want to add items to our items properties and will allow to pass an array or a single element.

    MyClass.js

     
    var cocktail     = require('cocktail'),
        Configurable = require('cocktail-trait-configurable');
        
    cocktail.mix({
        '@exports': module,
        '@as'     : 'class',
     
        '@traits' : [
            Configurable.withOptions({ items: 'addItems' })
        ],
        
        '@properties': {
            prop: 'default value'
        },
     
        constructor: function() {
            this.items = [];
        },
     
        addItems: function (items) {
            this.items.concat(items);
        }
     
    });
     

    index.js

     
    var MyClass = require('./MyClass'),
        options, obj, obj2;
     
    options = {
        prop: 'value from options', 
        discarded: 'this should be discarded!',
        items: [1,2,3,4]
    });
     
    obj = new MyClass();
     
    //use the configure method publicly 
    obj.configure(options);
     
    console.log(obj.getProp()); //'value from options' 
    console.log(obj.items); // [1,2,3,4] 
     

    API

    The following methods will be publicly available on the host class:

    • configure(options): calls every available setter per each key defined in the the options object.
      • options: {Object} the object with values that are going to be applied.

    install

    npm i cocktail-trait-configurable

    Downloadslast 7 days

    5

    version

    1.1.0

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar