You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
774 B
40 lines
774 B
9 years ago
|
|
||
|
/*!
|
||
|
* Express - view - Partial
|
||
|
* Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>
|
||
|
* 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(''));
|
||
|
};
|