diff options
| author | Adam Soltys <[email protected]> | 2012-11-06 20:59:25 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2012-11-06 22:56:57 -0800 |
| commit | 5f907fcf5b98c5be780bb0edfe830b96d068e585 (patch) | |
| tree | 6819e040a4bc8f41330103dd9cb54ba528c550d1 /node_modules/express/lib/view.js | |
| parent | 08f341f692688f077e9080bded2b14fdd5979c1e (diff) | |
| download | coinos-server-5f907fcf5b98c5be780bb0edfe830b96d068e585.tar.gz coinos-server-5f907fcf5b98c5be780bb0edfe830b96d068e585.zip | |
Use node and express
Diffstat (limited to 'node_modules/express/lib/view.js')
| -rw-r--r-- | node_modules/express/lib/view.js | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/node_modules/express/lib/view.js b/node_modules/express/lib/view.js new file mode 100644 index 00000000..4007eccc --- /dev/null +++ b/node_modules/express/lib/view.js @@ -0,0 +1,76 @@ +/** + * Module dependencies. + */ + +var path = require('path') + , fs = require('fs') + , utils = require('./utils') + , dirname = path.dirname + , basename = path.basename + , extname = path.extname + , exists = fs.existsSync || path.existsSync + , join = path.join; + +/** + * Expose `View`. + */ + +module.exports = View; + +/** + * Initialize a new `View` with the given `name`. + * + * Options: + * + * - `defaultEngine` the default template engine name + * - `engines` template engine require() cache + * - `root` root path for view lookup + * + * @param {String} name + * @param {Object} options + * @api private + */ + +function View(name, options) { + options = options || {}; + this.name = name; + this.root = options.root; + var engines = options.engines; + this.defaultEngine = options.defaultEngine; + var ext = this.ext = extname(name); + if (!ext) name += (ext = this.ext = '.' + this.defaultEngine); + this.engine = engines[ext] || (engines[ext] = require(ext.slice(1)).__express); + this.path = this.lookup(name); +} + +/** + * Lookup view by the given `path` + * + * @param {String} path + * @return {String} + * @api private + */ + +View.prototype.lookup = function(path){ + var ext = this.ext; + + // <path>.<engine> + if (!utils.isAbsolute(path)) path = join(this.root, path); + if (exists(path)) return path; + + // <path>/index.<engine> + path = join(dirname(path), basename(path, ext), 'index' + ext); + if (exists(path)) return path; +}; + +/** + * Render with the given `options` and callback `fn(err, str)`. + * + * @param {Object} options + * @param {Function} fn + * @api private + */ + +View.prototype.render = function(options, fn){ + this.engine(this.path, options, fn); +}; |
