0.0.2 • Published 8 years ago

object-alias v0.0.2

Weekly downloads
5
License
-
Repository
github
Last release
8 years ago

Object Alias

Creates an alias object to another object.

Sometimes you need to accept an object in one format and map the object to a different format to use it in a different service. Object-Alias allows you to create this mapping in a compressed format using json-pointers.

Installation

npm install object-alias

Usage

Create an alias

var source = {
        rootProp: 'foo',
        deep: {
            prop: 'bar'
        }
    },
alias = new ObjectAlias(source);

alias.define('#/rootProp', '#/myProp');
console.log(alias.myProp); // foo

alias.define('#/deep/prop', '#/yourProp');
console.log(alias.yourProp); // bar

alias.define('#/deep/prop', '#/your/prop');
console.log(alias.your.prop); // bar

Parse values from one format to another

var source = {
        id: '0-0-2'
    }, 
    alias = new ObjectAlias(source);

alias.define('#/id', '#/id', {
    get: function (val) {
        return parseInt(val.substring(val.lastIndexOf('-') + 1), 10);
    }, 
    set: function (val, sourceVal) {
        return sourceVal.substring(0, sourceVal.lastIndexOf('-')+1) + val;
    }
});

console.log(alias.id); //2

alias.id = 3;
console.log(source.id); //'0-0-3'

Use an alternative source

var source2 = {
        prop: 'bar',
    };
// ...

alias.define('#/prop', '#/foo', null, source2);
console.log(alias.foo); // bar

Create multiple aliases

var definitions = [
    ['#/rootProp', '#/myProp'],
    ['#/deep/prop', '#/yourProp'],

    // You can use slash (/) or dot (.) as delimiter. #/ in the beginning is optional
    ['deep.prop', 'your.prop'],
    ['prop', 'foo', null, source2],
    ['#/id', '#/id', {
        set: function (val, sourceVal) {}, 
        get: function (val) {}
    }]
];    

alias = new ObjectAlias(source, definitions);

TODO

Implement the full json-pointer syntax