UNPKG

node-deadline

Version:

Module to interface with Deadline Compute Management System by Thinkbox Software

73 lines (59 loc) 1.55 kB
var PropertyMap = module.exports = function( map ) { this.map = {}; this.revMap = {}; this.setMap( map ); }; PropertyMap.prototype.setMap = function( map ) { var prop; this.map = map; this.revMap = {}; for ( prop in this.map ) { this.revMap[ this.map[ prop ] ] = prop; } }; PropertyMap.prototype.mapObj = function( obj, dest ) { var propStack = [], prop; if ( "undefined" == typeof dest ) { dest = {}; } for ( prop in this.map ) { PropertyMap.writeProp( dest, prop, PropertyMap.readProp( obj, this.map[ prop ] ) ); } return dest; }; PropertyMap.prototype.unmapObj = function( obj, dest ) { var propStack = [], prop; if ( "undefined" == typeof dest ) { dest = {}; } for ( prop in this.revMap ) { PropertyMap.writeProp( dest, prop, PropertyMap.readProp( obj, this.revMap[ prop ] ) ); } return dest; }; //takes a list of period-seperated property names //and drills into the given object, returning the value PropertyMap.readProp = function( obj, prop ) { var i; prop = prop.split( "." ); for ( i in prop ) { obj = obj[ prop[ i ] ]; } return obj; }; //takes a list of period-seperated property names //and drills into the given object, returning the value PropertyMap.writeProp = function( obj, prop, val ) { var i; prop = prop.split( "." ); for ( i = 0; i < prop.length - 1; i++ ) { if ( "undefined" == typeof obj[ prop[ i ] ] ) { obj[ prop[ i ] ] = {}; } obj = obj[ prop[ i ] ]; } obj[ prop.pop() ] = val; return obj; };