lib/engines.js
function(exts, fn, options) {
      if (arguments.length === 1 && typeof exts === 'string') {
        return this.getEngine(exts);
      }
      exts = utils.arrayify(exts);
      var len = exts.length;
      while (len--) {
        var ext = exts[len];
        if (ext && ext[0] !== '.') ext = '.' + ext;
        this._.engines.setEngine(ext, fn, options);
      }
      return this;
    }
function(exts, fn, options) {
      if (arguments.length === 1 && typeof exts === 'string') {
        return this.getEngine(exts);
      }
      exts = utils.arrayify(exts);
      var len = exts.length;
      while (len--) {
        var ext = exts[len];
        if (ext && ext[0] !== '.') ext = '.' + ext;
        this._.engines.setEngine(ext, fn, options);
      }
      return this;
    }
function ( exts , fn , options ) { if ( arguments . length === 1 && typeof exts === 'string' ) { return this . getEngine ( exts ) ; } exts = utils . arrayify ( exts ) ; var len = exts . length ; while ( len -- ) { var ext = exts [ len ] ; if ( ext && ext [ 0 ] !== '.' ) ext = '.' + ext ; this . _ . engines . setEngine ( ext , fn , options ) ; } return this ; }
Register the given view engine callback `fn` as `ext`.

@param {String|Array} `exts` File extension or array of extensions.
@param {Function|Object} `fn` or `options`
@param {Object} `options`
@api public
Register the given view engine callback fn as ext .