castly

0.4.1 • Public • Published

castly

Javascript unmarshalling. Copies generic JSON attributes into "fresh" instances complete with methods and prototypes. Easily describe what you expect to come back from the server and it will optionally log or throw when it doesn't match.

Build Status

Installation

$ npm install is-a

Usage

 
var myJSON = JSON.stringify({
    tuple:[1, 2, "three"],
    flag: true,
    config1: {
        a:true,
        b:false
    },
    config2: {
        a:true,
        b:false,
        c:true
    }
});
 
 
function myConstructor() {
    this.describeType = function () {
        return {
            tuple: SpecialTuple,
            flag: typeIs.BOOLEAN,
            config1: Config,
            config2: Config
        };
    };
}
 
function Config() {
    this.describeType = function () {
        return {
            a: typeIs.BOOLEAN,
            b: typeIs.BOOLEAN,
            c: [typeIs.BOOLEAN, typeIs.UNDEFINED]
        };
    };
    this.do_stuff = function() {
        console.log(this.a && this.b || this.c)
    }
}
 
function SpecialTuple() {
    this.describeType = function () {
        this.length = 3;
        return function(obj, name, attr) {
            if(attr === '0') return castly.convert(obj, typeIs.NUMBER, name + "[0]");
            if(attr === '1') return castly.convert(obj, typeIs.NUMBER, name + "[1]");
            if(attr === '2') return castly.convert(obj, typeIs.STRING, name + "[2]");
            else return castly.convert(obj, typeIs.UNDEFINED, name + "[" + attr + "]");
        }
    };
    this.toString = function() {
        return "I'm a special tuple " + this.join("---");
    }
}
SpecialTuple.prototype = [];
 
 
 
var castly = require('../index');
var typeIs = castly.typeIs;
castly.strict = true;
 
var myObj = castly.unmarshal(myJSON, myConstructor);
console.log(myObj.tuple.toString());  //"I'm a special tuple 1---2---three"
myObj.config1.do_stuff(); //"undefined"
myObj.config2.do_stuff(); //"true"
 
 

Readme

Keywords

none

Package Sidebar

Install

npm i castly

Weekly Downloads

0

Version

0.4.1

License

MIT

Last publish

Collaborators

  • dtudury