JS Abstraction via "dit"
dot.get, dot.abstract dot.make
by andypotanin
JavaScript
console.clear();
var dot = {
abstract: function( config ) {
var self = this;
var result = {};
var keys = Object.keys( config );
keys.forEach( function( key ) {
var value = config[ key ];
//console.log( typeof value, value );
dot.make( key, value, result );
});
return result;
},
get: function(obj, str) {
if( !str ) {
return obj;
}
try {
var result = str.split( '.' ).reduce( function(o, x) {
var result = o[x]
if( 'object' !== typeof o[x] ) {
//console.log( 'creating getters for', x );
return Object.defineProperty( {}, x, {
enumerable: true,
set: function() {
console.log( 'get' );
},
get: function() {
console.log( 'get' );
return 'hello!' || o[x];
}
});
}
return result;
}, obj);
if( typeof Object.getOwnPropertyDescriptor( result, str ) ) {
//console.log( str, 'is a descriptor' );
}
return result;
} catch( error ) {
console.log( error );
return null;
}
},
make: function ( string, value, hash, seperator ) {
if( hash == null ) { hash = {}; }
if( seperator == null ) { seperator = ":"; }
var parts = string.split( seperator );
var refHash = hash;
var depth = 0;
parts.forEach( function( part ) {
if( depth == parts.length - 1 ) {
...