/*! * Express - view - Partial * Copyright(c) 2010 TJ Holowaychuk * MIT Licensed */ /** * Memory cache. */ var cache = {}; /** * Resolve partial object name from the view path. * * Examples: * * "user.ejs" becomes "user" * "forum thread.ejs" becomes "forumThread" * "forum/thread/post.ejs" becomes "post" * "blog-post.ejs" becomes "blogPost" * * @return {String} * @api private */ exports.resolveObjectName = function ( view ) { return cache[view] || (cache[view] = view .split( '/' ) .slice( -1 )[0] .split( '.' )[0] .replace( /^_/, '' ) .replace( /[^a-zA-Z0-9 ]+/g, ' ' ) .split( / +/ ).map( function ( word, i ) { return i ? word[0].toUpperCase() + word.substr( 1 ) : word; } ).join( '' )); };