let _ = require( 'wTools' ); // function nameFull( path ) { _.assert( arguments.length === 1 ); _.assert( _.strIs( path ), 'Expects strings {-path-}' ); let o = { path }; _.routine.options( nameFull, o ); let i = o.path.lastIndexOf( '/' ); if( i !== -1 ) o.path = o.path.substr( i+1 ); if( !o.full ) { let i = o.path.lastIndexOf( '.' ); if( i !== -1 ) o.path = o.path.substr( 0, i ); } return o.path; } nameFull.defaults = { path : null, full : 1, } // console.log( nameFull( '/foo/bar/baz.js' ) ); // function name( o ) { _.assert( arguments.length === 1 ); _.assert( _.mapIs( o ), 'Expects map' ); _.routine.options( name, o ); let i = o.path.lastIndexOf( '/' ); if( i !== -1 ) o.path = o.path.substr( i+1 ); if( !o.full ) { let i = o.path.lastIndexOf( '.' ); if( i !== -1 ) o.path = o.path.substr( 0, i ); } return o.path; } name.defaults = { path : null, full : 0, } // console.log( name( { path : '/foo/bar/baz.js' } ) ); console.log( name( { path : '/foo/bar/baz.js', full : 1 } ) ); // let o = { own : 1 }; var a = { a : 1 } var b = { b : 2 } Object.setPrototypeOf( a, b ); console.log( _.mapKeys( a ) ); console.log( _.mapKeys.call( o, a ) );