
[0m[0m
[0m  .extract():[0m
{ 'fixtures/assemble.js': 
   { '1': 
      { comment: '!\nassemble <https://github.com/assemble/assemble>\n\nCopyright (c) 2014 Jon Schlinkert, Brian Woodward, contributors.\nLicensed under the MIT license.\n',
        begin: 1,
        end: 6,
        type: 'comment' },
     '34': 
      { begin: 34,
        comment: '\nJust about all the deps below this line\nwill be externalized into modules.\n',
        end: 37,
        type: 'comment' },
     '58': 
      { begin: 58,
        comment: '\nCreate an `assemble` task.\n\n```js\nvar assemble = require(\'assemble\');\n\nassemble.task(\'site\', function() {\n  assemble.src(\'templates/*.hbs\')\n    .pipe(assemble.dest(\'_gh_pages\'));\n});\n```\n\nOptionally initialize a new `Assemble` with the given `context`.\n\n```js\nvar config = new Assemble({foo: \'bar\'});\n```\n\n@class `Assemble`\n@param {Object} `context`\n@constructor\n@api public\n',
        end: 80,
        type: 'comment' },
     '87': 
      { begin: 87,
        comment: '\nExtend `Assemble`\n',
        end: 89,
        type: 'comment' },
     '95': 
      { begin: 95,
        comment: '\nInitialize Assemble.\n\n  - setup default configuration\n  - setup default middleware\n\n@api private\n',
        end: 102,
        type: 'comment' },
     '122': 
      { begin: 122,
        comment: '\nInitialize default configuration.\n\n@api private\n',
        end: 126,
        type: 'comment' },
     '189': 
      { begin: 189,
        comment: '\nSet defaults.\n\n@api private\n',
        end: 193,
        type: 'comment' },
     '200': 
      { begin: 200,
        comment: '\nOverride default options with user-defined `opts`\nduring initialization.\n\n@api private\n',
        end: 205,
        type: 'comment' },
     '214': 
      { begin: 214,
        comment: '\nPrivate method to load default plugins.\n\n@api private\n',
        end: 218,
        type: 'comment' },
     '243': 
      { begin: 243,
        comment: '\nPrivate method to register default templates.\n\n{%= docs("api-default-templates") %}\n\n@api private\n',
        end: 249,
        type: 'comment' },
     '258': 
      { begin: 258,
        comment: '\nPrivate method to register default parsers.\n\n@api private\n',
        end: 262,
        type: 'comment' },
     '279': 
      { begin: 279,
        comment: '\nPrivate method to register default view engines.\n\n@api private\n',
        end: 283,
        type: 'comment' },
     '298': 
      { begin: 298,
        comment: '\nPrivate method to register default syntax highlighter.\n\n@api private\n',
        end: 302,
        type: 'comment' },
     '314': 
      { begin: 314,
        comment: '\nLazily initalize router, to allow options to\nbe passed in after init.\n\n@api private\n',
        end: 319,
        type: 'comment' },
     '331': 
      { begin: 331,
        comment: '\nLazily add a `Layout` instance if it has not yet been added.\nAlso normalizes settings to pass to the `layouts` library.\n\nWe can\'t instantiate `Layout` in the `defaultConfig` because\nit reads settings which might not be set until after init.\n\nA new instance of `Layouts` is added to `this.layoutEngines`\nfor each engine that is instantiated.\n\n@api private\n',
        end: 342,
        type: 'comment' },
     '352': 
      { begin: 352,
        comment: '\nPrivate method to setup event listeners on Assemble.\n\n@api private\n',
        end: 356,
        type: 'comment' },
     '385': 
      { begin: 385,
        comment: '\nIntialize default contexts and context levels.\n\n@api private\n',
        end: 389,
        type: 'comment' },
     '414': 
      { begin: 414,
        comment: '\nSet the current working directory for all paths.\nDefault is `process.cwd()`, this does not need to\nbe changed unless you require something different.\n\n```js\nassemble.cwd(\'bench\');\n```\n\n@param  {String|Array} `args` File path or paths.\n@return {String}\n@api public\n',
        end: 426,
        type: 'comment' },
     '439': 
      { begin: 439,
        comment: '\nRun the given middleware `fns` during the specified\nstage or stages.\n\n```js\nassemble.middleware(\'src:*\', function() {\n  // do stuff\n});\n```\n\n@param  {String} `stage`\n@param  {Array} `fns`\n@return {Object} `Assemble` to enable chaining.\n',
        end: 452,
        type: 'comment' },
     '467': 
      { begin: 467,
        comment: '\nDefine an assemble task.\n\n**Example**\n\n```js\nassemble.task(\'site\', function() {\n  // do stuff\n});\n```\n\n@type method\n@param {String} `name`\n@param {Function} `fn`\n@api public\n',
        end: 482,
        type: 'comment' },
     '487': 
      { begin: 487,
        comment: '\nWrapper around Orchestrator.start to normalize task arguments.\n\n@api private\n',
        end: 491,
        type: 'comment' },
     '499': 
      { begin: 499,
        comment: '\nWrapper around Orchestrator._runTask to enable `sessions`\n\n@param  {Object} `task` Task to run\n@api private\n',
        end: 504,
        type: 'comment' },
     '515': 
      { begin: 515,
        comment: '\nNormalize a configuration object to provide a consistent\nAPI to `files` and `options` objects.\n',
        end: 518,
        type: 'comment' },
     '529': 
      { begin: 529,
        comment: '\nNormalizes a file object to be an assemble vinyl file with\nthe necessary properties to provide plugins in the pipeline\nwith a consistent API.\n\nThis method will be externalized to [assemble-utils].\n\n@param  {Object} `file` The file object to normalize. The following properties are expect on the source file.\n    @property {Object} `data`: Typically metadata from locals or parsed front matter.\n    @property {String} `content`: The actual content of the file.\n@param  {Object} `options` Options to pass to `normalize`\n@return {Object} `file` A normalize file object.\n',
        end: 541,
        type: 'comment' },
     '548': 
      { begin: 548,
        comment: '\nGlob patterns or filepaths to source files.\n\n```js\nassemble.src([patterns], [options])\n```\n\n**Example**\n\n```js\nassemble.task(\'site\', function() {\n  assemble.src(\'src/*.hbs\', {layout: \'default\'})\n    assemble.dest(\'dist\')\n});\n```\n\n@param {String} `filepath`\n@api public\n',
        end: 566,
        type: 'comment' },
     '583': 
      { begin: 583,
        comment: '\nSpecify a destination for processed files.\n\n```js\nassemble.dest([patterns], [opts])\n```\n\n**Example**\n\n```js\nassemble.task(\'sitemap\', function() {\n  assemble.src(\'src/*.txt\')\n    assemble.dest(\'dist\', {ext: \'.xml\'})\n});\n```\n@param {String|Array|Function} `patterns` Glob patterns, file paths, or renaming function.\n@param {Object} `opts` Options to be passed to `dest` plugins.\n@api public\n',
        end: 601,
        type: 'comment' },
     '618': 
      { begin: 618,
        comment: '\nRegister a collection to be used in assemble.\n\n{%= docs("api-collection") %}\n{%= crosslink("api-collections") %}\n\nReport any related issues to [assemble-collections].\n[assemble-collections]: https://github.com/assemble/assemble-collections/issues\n\n@param {Object} `options` Options used to build the collection.\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 630,
        type: 'comment' },
     '638': 
      { begin: 638,
        comment: '\nRegister an array of collections to be used in assemble.\n\n{%= docs("api-collections") %}\n\nReport any related issues to [assemble-collections].\n[assemble-collections]: https://github.com/assemble/assemble-collections/issues\n\n@param {Array|Object} `cols` Array of collections used to build the collection.\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 649,
        type: 'comment' },
     '664': 
      { begin: 664,
        comment: '\nAdd a new template `type` to Assemble by passing the singular\nand plural names to be used for `type`.\n\n{%= docs("api-templates") %}\n\n@param {String} `type` Name of the new type to add\n@param {Object} `options`\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 674,
        type: 'comment' },
     '748': 
      { begin: 748,
        comment: '\nReturns an object with all loaded helpers;\n\n{%= docs("api-helpers") %}\n\n@return {Object} all the resolved and loaded helpers\n@api public\n',
        end: 755,
        type: 'comment' },
     '763': 
      { begin: 763,
        comment: '\nReturns an object with all loaded helpers;\n\n{%= docs("api-helpers") %}\n\n@return {Object} all the resolved and loaded helpers\n@api public\n',
        end: 770,
        type: 'comment' },
     '783': 
      { begin: 783,
        comment: '\nRegister a helper for the current template engine.\n\n**Example:**\n\n```js\nassemble.registerHelper(\'include\', function(filepath) {\n  return fs.readFileSync(filepath, \'utf8\');\n});\n```\n\n**Usage:**\n\n```js\nassemble.render(\'<%= include("foo.md") %>\');\n```\n\n@param  {String} `key`\n@param  {Object} `value`\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 804,
        type: 'comment' },
     '813': 
      { begin: 813,
        comment: '\nRegister an array or glob of template helpers.\n\n**Example:**\n\n```js\nassemble.registerHelpers(\'a.js\');\n// or\nassemble.registerHelpers([\'a.js\', \'b.js\']);\n// or\nassemble.registerHelpers(\'*.js\');\n```\n\n@param  {String} `key`\n@param  {Object} `value`\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 830,
        type: 'comment' },
     '838': 
      { begin: 838,
        comment: '\nRegister a parser `fn` or array of `fns` to be used on\neach `.src` file. This is used to parse front matter, but\ncan be used for any kind of parsing.\n\nBy default, Assemble will parse front matter using\n[gray-matter][gray-matter]. For front-matter in particular\nit is probably not necessary to register additional parsing\nfunctions, since gray-matter can support almost any format,\nbut this is cusomizable if necessary or if a non-supported\nformat is required.\n\n**Example:**\n\n```js\nassemble.parser(\'textile\', function (file, enc, options) {\n  var str = textile(String(file.contents));\n  file.contents = new Buffer(str);\n});\n```\n\n[gray-matter]: https://github.com/assemble/gray-matter\n\n@param {String} `file` The file object\n@param {Object} `options` Options to pass to parser.\n@param {Function|Array} `fn` The parsing function or array of functions.\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 866,
        type: 'comment' },
     '890': 
      { begin: 890,
        comment: '\nRegister an array or glob of parsers for the given `ext`.\n\n**Example:**\n\n```js\nassemble.parsers(\'hbs\', \'a.js\');\n// or\nassemble.parsers(\'md\' [\'a.js\', \'b.js\']);\n// or\nassemble.parsers(\'md\', \'*.js\');\n```\n\n@param  {String} `ext` The extension to associate with the parsers.\n@param  {String|Array} `patterns` File paths or glob patterns.\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 907,
        type: 'comment' },
     '929': 
      { begin: 929,
        comment: '\nTraverse the `parser` stack, passing the `file` object to each\nparser and returning the accumlated result.\n\n@param  {Object} `options`\n@api private\n',
        end: 935,
        type: 'comment' },
     '942': 
      { begin: 942,
        comment: '\nRun a file through a parser stack.\n\n@param  {Object} `file`\n@param  {Object} `opts`\n@return {Object}\n',
        end: 948,
        type: 'comment' },
     '975': 
      { begin: 975,
        comment: '\nRegister the given view engine callback `fn` as `ext`.\n\n{%= docs("api-engine") %}\n\n@param {String} `ext`\n@param {Function|Object} `fn` or `options`\n@param {Object} `options`\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 985,
        type: 'comment' },
     '1022': 
      { begin: 1022,
        comment: '\nRegister the given layout engine callback `fn` as `ext`.\n\n@param {String} `ext`\n@param {Function|Object} `fn` or `options`\n@param {Object} `options`\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 1030,
        type: 'comment' },
     '1062': 
      { begin: 1062,
        comment: '\nPrivate method for adding layouts settings to the `cache` for\nthe current template engine.\n\n@param {String} `ext` The extension to associate with the layout settings.\n@param {String} `name`\n@param {Object} `value`\n@param {Object} `options`\n@api private\n',
        end: 1071,
        type: 'comment' },
     '1088': 
      { begin: 1088,
        comment: '\nThis is Assemble\'s internal render method, but it\'s exposed as a public method\nso it can be replaced with a custom `render` method.\n\n@param  {Object} `data` Data to pass to registered view engines.\n@param  {Object} `options` Options to pass to registered view engines.\n@return {String}\n@api public\n',
        end: 1096,
        type: 'comment' },
     '1136': 
      { begin: 1136,
        comment: '\nSet a router to be called.\n\n@param  {Object} `options`\n@return {Object} `Assemble` to enable chaining.\n@api private\n',
        end: 1142,
        type: 'comment' },
     '1152': 
      { begin: 1152,
        comment: '\n**Example:**\n\n```js\nvar routes = assemble.router();\nroutes.route(\':basename.hbs\', function (file, params, next) {\n  // do something with the file\n  next();\n});\n\nassemble.src(\'\')\n  .pipe(routes())\n  .pipe(assemble.dest())\n```\n\n@param  {Object} `options`\n@return {Function}\n',
        end: 1169,
        type: 'comment' },
     '1197': 
      { begin: 1197,
        comment: '\nProxy to `Router#param()` with one added api feature. The _name_ parameter\ncan be an array of names.\n\n@param {String|Array} `name`\n@param {Function} `fn`\n@return {Object} `Assemble` to enable chaining\n@api public\n',
        end: 1205,
        type: 'comment' },
     '1224': 
      { begin: 1224,
        comment: '\nThis is Assemble\'s internal buffer method, but it\'s exposed as a public method\nso it can be replaced with a custom `buffer` method.\n\n@param  {Object} `options` Options to pass to the buffer plugin.\n@return {String}\n@api public\n',
        end: 1231,
        type: 'comment' },
     '1239': 
      { begin: 1239,
        comment: '\nRegister a function for syntax highlighting.\n\nBy default, Assemble uses highlight.js for syntax highlighting.  It\'s not\nnecessary to register another function unless you want to override the default.\n\n**Examples:**\n\n```js\nassemble.highlight(function(code, lang) {\n  if (lang) {\n    return hljs.highlight(lang, code).value;\n  }\n  return hljs.highlightAuto(code).value;\n});\n```\n\n@param {Function} `fn`\n@return {Object} `Assemble` to enable chaining.\n@api public\n',
        end: 1259,
        type: 'comment' },
     '1274': 
      { begin: 1274,
        comment: '\nRerun the specified task when a file changes.\n\n```js\nassemble.task(\'watch\', function() {\n  assemble.watch(\'docs/*.md\', [\'docs\']);\n});\n```\n\n**Params:**\n\n@param  {String|Array} `glob` Filepaths or glob patterns.\n@param  {String} `options`\n@param  {Function} `fn` Task(s) to watch.\n@return {String}\n',
        end: 1289,
        type: 'comment' },
     '1307': 
      { begin: 1307,
        comment: '\nExpose middleware.\n',
        end: 1309,
        type: 'comment' },
     '1316': 
      { begin: 1316,
        comment: '\nExpose `Assemble`\n',
        end: 1318,
        type: 'comment' } },
  'fixtures/express/application.js': 
   { '1': 
      { comment: '\nModule dependencies.\n',
        begin: 1,
        end: 3,
        type: 'comment' },
     '15': 
      { begin: 15,
        comment: '\nApplication prototype.\n',
        end: 17,
        type: 'comment' },
     '21': 
      { begin: 21,
        comment: '\nInitialize the server.\n\n  - setup default configuration\n  - setup default middleware\n  - setup route reflection methods\n\n@api private\n',
        end: 29,
        type: 'comment' },
     '38': 
      { begin: 38,
        comment: '\nInitialize application configuration.\n\n@api private\n',
        end: 42,
        type: 'comment' },
     '94': 
      { begin: 94,
        comment: '\nProxy `connect#use()` to apply settings to\nmounted applications.\n\n@param {String|Function|Server} route\n@param {Function|Server} fn\n@return {app} for chaining\n@api public\n',
        end: 102,
        type: 'comment' },
     '137': 
      { begin: 137,
        comment: '\nRegister the given template engine callback `fn`\nas `ext`.\n\nBy default will `require()` the engine based on the\nfile extension. For example if you try to render\na "foo.jade" file Express will invoke the following internally:\n\n    app.engine(\'jade\', require(\'jade\').__express);\n\nFor engines that do not provide `.__express` out of the box,\nor if you wish to "map" a different extension to the template engine\nyou may use this method. For example mapping the EJS template engine to\n".html" files:\n\n    app.engine(\'html\', require(\'ejs\').renderFile);\n\nIn this case EJS provides a `.renderFile()` method with\nthe same signature that Express expects: `(path, options, callback)`,\nthough note that it aliases this method as `ejs.__express` internally\nso if you\'re using ".ejs" extensions you dont need to do anything.\n\nSome template engines do not follow this convention, the\n[Consolidate.js](https://github.com/visionmedia/consolidate.js)\nlibrary was created to map all of node\'s popular template\nengines to follow this convention, thus allowing them to\nwork seamlessly within Express.\n\n@param {String} ext\n@param {Function} fn\n@return {app} for chaining\n@api public\n',
        end: 169,
        type: 'comment' },
     '178': 
      { begin: 178,
        comment: '\nMap the given param placeholder `name`(s) to the given callback(s).\n\nParameter mapping is used to provide pre-conditions to routes\nwhich use normalized placeholders. For example a _:user_id_ parameter\ncould automatically load a user\'s information from the database without\nany additional code,\n\nThe callback uses the same signature as middleware, the only difference\nbeing that the value of the placeholder is passed, in this case the _id_\nof the user. Once the `next()` function is invoked, just like middleware\nit will continue on to execute the route, or subsequent parameter functions.\n\n     app.param(\'user_id\', function(req, res, next, id){\n       User.find(id, function(err, user){\n         if (err) {\n           next(err);\n         } else if (user) {\n           req.user = user;\n           next();\n         } else {\n           next(new Error(\'failed to load user\'));\n         }\n       });\n     });\n\n@param {String|Array} name\n@param {Function} fn\n@return {app} for chaining\n@api public\n',
        end: 208,
        type: 'comment' },
     '235': 
      { begin: 235,
        comment: '\nAssign `setting` to `val`, or return `setting`\'s value.\n\n   app.set(\'foo\', \'bar\');\n   app.get(\'foo\');\n   // => "bar"\n\nMounted servers inherit their parent server\'s settings.\n\n@param {String} setting\n@param {String} val\n@return {Server} for chaining\n@api public\n',
        end: 248,
        type: 'comment' },
     '259': 
      { begin: 259,
        comment: '\nReturn the app\'s absolute pathname\nbased on the parent(s) that have\nmounted it.\n\nFor example if the application was\nmounted as "/admin", which itself\nwas mounted as "/blog" then the\nreturn value would be "/blog/admin".\n\n@return {String}\n@api private\n',
        end: 271,
        type: 'comment' },
     '279': 
      { begin: 279,
        comment: '\nCheck if `setting` is enabled (truthy).\n\n   app.enabled(\'foo\')\n   // => false\n\n   app.enable(\'foo\')\n   app.enabled(\'foo\')\n   // => true\n\n@param {String} setting\n@return {Boolean}\n@api public\n',
        end: 292,
        type: 'comment' },
     '298': 
      { begin: 298,
        comment: '\nCheck if `setting` is disabled.\n\n   app.disabled(\'foo\')\n   // => true\n\n   app.enable(\'foo\')\n   app.disabled(\'foo\')\n   // => false\n\n@param {String} setting\n@return {Boolean}\n@api public\n',
        end: 311,
        type: 'comment' },
     '317': 
      { begin: 317,
        comment: '\nEnable `setting`.\n\n@param {String} setting\n@return {app} for chaining\n@api public\n',
        end: 323,
        type: 'comment' },
     '329': 
      { begin: 329,
        comment: '\nDisable `setting`.\n\n@param {String} setting\n@return {app} for chaining\n@api public\n',
        end: 335,
        type: 'comment' },
     '341': 
      { begin: 341,
        comment: '\nConfigure callback for zero or more envs,\nwhen no `env` is specified that callback will\nbe invoked for all environments. Any combination\ncan be used multiple times, in any order desired.\n\nExamples:\n\n   app.configure(function(){\n     // executed for all envs\n   });\n\n   app.configure(\'stage\', function(){\n     // executed staging env\n   });\n\n   app.configure(\'stage\', \'production\', function(){\n     // executed for stage and production\n   });\n\nNote:\n\n These callbacks are invoked immediately, and\n are effectively sugar for the following:\n\n    var env = process.env.NODE_ENV || \'development\';\n\n     switch (env) {\n       case \'development\':\n         ...\n         break;\n       case \'stage\':\n         ...\n         break;\n       case \'production\':\n         ...\n         break;\n     }\n\n@param {String} env...\n@param {Function} fn\n@return {app} for chaining\n@api public\n',
        end: 384,
        type: 'comment' },
     '395': 
      { begin: 395,
        comment: '\nDelegate `.VERB(...)` calls to `router.VERB(...)`.\n',
        end: 397,
        type: 'comment' },
     '417': 
      { begin: 417,
        comment: '\nSpecial-cased "all" method, applying the given route `path`,\nmiddleware, and callback to _every_ HTTP method.\n\n@param {String} path\n@param {Function} ...\n@return {app} for chaining\n@api public\n',
        end: 425,
        type: 'comment' },
     '439': 
      { begin: 439,
        comment: '\nRender the given view `name` name with `options`\nand a callback accepting an error and the\nrendered template string.\n\nExample:\n\n   app.render(\'email\', { name: \'Tobi\' }, function(err, html){\n     // ...\n   })\n\n@param {String} name\n@param {String|Function} options or fn\n@param {Function} fn\n@api public\n',
        end: 454,
        type: 'comment' },
     '510': 
      { begin: 510,
        comment: '\nListen for connections.\n\nA node `http.Server` is returned, with this\napplication (which is a `Function`) as its\ncallback. If you wish to create both an HTTP\nand HTTPS server you may do so with the "http"\nand "https" modules as shown here:\n\n   var http = require(\'http\')\n     , https = require(\'https\')\n     , express = require(\'express\')\n     , app = express();\n\n   http.createServer(app).listen(80);\n   https.createServer({ ... }, app).listen(443);\n\n@return {http.Server}\n@api public\n',
        end: 529,
        type: 'comment' } },
  'fixtures/express/express.js': 
   { '1': 
      { comment: '\nModule dependencies.\n',
        begin: 1,
        end: 3,
        type: 'comment' },
     '14': 
      { begin: 14,
        comment: '\nExpose `createApplication()`.\n',
        end: 16,
        type: 'comment' },
     '20': 
      { begin: 20,
        comment: '\nExpose mime.\n',
        end: 22,
        type: 'comment' },
     '26': 
      { begin: 26,
        comment: '\nCreate an express application.\n\n@return {Function}\n@api public\n',
        end: 31,
        type: 'comment' },
     '42': 
      { begin: 42,
        comment: '\nExpose connect.middleware as express.*\nfor example `express.logger` etc.\n',
        end: 45,
        type: 'comment' },
     '49': 
      { begin: 49,
        comment: '\nError on createServer().\n',
        end: 51,
        type: 'comment' },
     '64': 
      { begin: 64,
        comment: '\nExpose the prototypes.\n',
        end: 66,
        type: 'comment' },
     '72': 
      { begin: 72,
        comment: '\nExpose constructors.\n',
        end: 74,
        type: 'comment' } },
  'fixtures/express/middleware.js': 
   { '2': 
      { begin: 2,
        comment: '\nModule dependencies.\n',
        end: 4,
        type: 'comment' },
     '8': 
      { begin: 8,
        comment: '\nInitialization middleware, exposing the\nrequest and response to eachother, as well\nas defaulting the X-Powered-By header field.\n\n@param {Function} app\n@return {Function}\n@api private\n',
        end: 16,
        type: 'comment' } },
  'fixtures/express/request.js': 
   { '2': 
      { begin: 2,
        comment: '\nModule dependencies.\n',
        end: 4,
        type: 'comment' },
     '14': 
      { begin: 14,
        comment: '\nRequest prototype.\n',
        end: 16,
        type: 'comment' },
     '22': 
      { begin: 22,
        comment: '\nReturn request header.\n\nThe `Referrer` header field is special-cased,\nboth `Referrer` and `Referer` are interchangeable.\n\nExamples:\n\n    req.get(\'Content-Type\');\n    // => "text/plain"\n\n    req.get(\'content-type\');\n    // => "text/plain"\n\n    req.get(\'Something\');\n    // => undefined\n\nAliased as `req.header()`.\n\n@param {String} name\n@return {String}\n@api public\n',
        end: 44,
        type: 'comment' },
     '58': 
      { begin: 58,
        comment: '\nCheck if the given `type(s)` is acceptable, returning\nthe best match when true, otherwise `undefined`, in which\ncase you should respond with 406 "Not Acceptable".\n\nThe `type` value may be a single mime type string\nsuch as "application/json", the extension name\nsuch as "json", a comma-delimted list such as "json, html, text/plain",\nan argument list such as `"json", "html", "text/plain"`,\nor an array `["json", "html", "text/plain"]`. When a list\nor array is given the _best_ match, if any is returned.\n\nExamples:\n\n    // Accept: text/html\n    req.accepts(\'html\');\n    // => "html"\n\n    // Accept: text/*, application/json\n    req.accepts(\'html\');\n    // => "html"\n    req.accepts(\'text/html\');\n    // => "text/html"\n    req.accepts(\'json, text\');\n    // => "json"\n    req.accepts(\'application/json\');\n    // => "application/json"\n\n    // Accept: text/*, application/json\n    req.accepts(\'image/png\');\n    req.accepts(\'png\');\n    // => undefined\n\n    // Accept: text/*;q=.5, application/json\n    req.accepts([\'html\', \'json\']);\n    req.accepts(\'html\', \'json\');\n    req.accepts(\'html, json\');\n    // => "json"\n\n@param {String|Array} type(s)\n@return {String}\n@api public\n',
        end: 100,
        type: 'comment' },
     '107': 
      { begin: 107,
        comment: '\nCheck if the given `encoding` is accepted.\n\n@param {String} encoding\n@return {Boolean}\n@api public\n',
        end: 113,
        type: 'comment' },
     '119': 
      { begin: 119,
        comment: '\nCheck if the given `charset` is acceptable,\notherwise you should respond with 406 "Not Acceptable".\n\n@param {String} charset\n@return {Boolean}\n@api public\n',
        end: 126,
        type: 'comment' },
     '135': 
      { begin: 135,
        comment: '\nCheck if the given `lang` is acceptable,\notherwise you should respond with 406 "Not Acceptable".\n\n@param {String} lang\n@return {Boolean}\n@api public\n',
        end: 142,
        type: 'comment' },
     '151': 
      { begin: 151,
        comment: '\nParse Range header field,\ncapping to the given `size`.\n\nUnspecified ranges such as "0-" require\nknowledge of your resource length. In\nthe case of a byte range this is of course\nthe total number of bytes. If the Range\nheader field is not given `null` is returned,\n`-1` when unsatisfiable, `-2` when syntactically invalid.\n\nNOTE: remember that ranges are inclusive, so\nfor example "Range: users=0-3" should respond\nwith 4 users when available, not 3.\n\n@param {Number} size\n@return {Array}\n@api public\n',
        end: 169,
        type: 'comment' },
     '177': 
      { begin: 177,
        comment: '\nReturn an array of encodings.\n\nExamples:\n\n    [\'gzip\', \'deflate\']\n\n@return {Array}\n@api public\n',
        end: 186,
        type: 'comment' },
     '195': 
      { begin: 195,
        comment: '\nReturn an array of Accepted media types\nordered from highest quality to lowest.\n\nExamples:\n\n    [ { value: \'application/json\',\n        quality: 1,\n        type: \'application\',\n        subtype: \'json\' },\n      { value: \'text/html\',\n        quality: 0.5,\n        type: \'text\',\n        subtype: \'html\' } ]\n\n@return {Array}\n@api public\n',
        end: 212,
        type: 'comment' },
     '221': 
      { begin: 221,
        comment: '\nReturn an array of Accepted languages\nordered from highest quality to lowest.\n\nExamples:\n\n    Accept-Language: en;q=.5, en-us\n    [\'en-us\', \'en\']\n\n@return {Array}\n@api public\n',
        end: 232,
        type: 'comment' },
     '245': 
      { begin: 245,
        comment: '\nReturn an array of Accepted charsets\nordered from highest quality to lowest.\n\nExamples:\n\n    Accept-Charset: iso-8859-5;q=.2, unicode-1-1;q=0.8\n    [\'unicode-1-1\', \'iso-8859-5\']\n\n@return {Array}\n@api public\n',
        end: 256,
        type: 'comment' },
     '269': 
      { begin: 269,
        comment: '\nReturn the value of param `name` when present or `defaultValue`.\n\n - Checks route placeholders, ex: _/user/:id_\n - Checks body params, ex: id=12, {"id":12}\n - Checks query string params, ex: ?id=12\n\nTo utilize request bodies, `req.body`\nshould be an object. This can be done by using\nthe `connect.bodyParser()` middleware.\n\n@param {String} name\n@param {Mixed} [defaultValue]\n@return {String}\n@api public\n',
        end: 284,
        type: 'comment' },
     '296': 
      { begin: 296,
        comment: '\nCheck if the incoming request contains the "Content-Type"\nheader field, and it contains the give mime `type`.\n\nExamples:\n\n     // With Content-Type: text/html; charset=utf-8\n     req.is(\'html\');\n     req.is(\'text/html\');\n     req.is(\'text/*\');\n     // => true\n\n     // When Content-Type is application/json\n     req.is(\'json\');\n     req.is(\'application/json\');\n     req.is(\'application/*\');\n     // => true\n\n     req.is(\'html\');\n     // => false\n\n@param {String} type\n@return {Boolean}\n@api public\n',
        end: 320,
        type: 'comment' },
     '337': 
      { begin: 337,
        comment: '\nReturn the protocol string "http" or "https"\nwhen requested with TLS. When the "trust proxy"\nsetting is enabled the "X-Forwarded-Proto" header\nfield will be trusted. If you\'re running behind\na reverse proxy that supplies https for you this\nmay be enabled.\n\n@return {String}\n@api public\n',
        end: 347,
        type: 'comment' },
     '357': 
      { begin: 357,
        comment: '\nShort-hand for:\n\n   req.protocol == \'https\'\n\n@return {Boolean}\n@api public\n',
        end: 364,
        type: 'comment' },
     '370': 
      { begin: 370,
        comment: '\nReturn the remote address, or when\n"trust proxy" is `true` return\nthe upstream addr.\n\n@return {String}\n@api public\n',
        end: 377,
        type: 'comment' },
     '383': 
      { begin: 383,
        comment: '\nWhen "trust proxy" is `true`, parse\nthe "X-Forwarded-For" ip address list.\n\nFor example if the value were "client, proxy1, proxy2"\nyou would receive the array `["client", "proxy1", "proxy2"]`\nwhere "proxy2" is the furthest down-stream.\n\n@return {Array}\n@api public\n',
        end: 393,
        type: 'comment' },
     '403': 
      { begin: 403,
        comment: '\nReturn basic auth credentials.\n\nExamples:\n\n   // http://tobi:hello@example.com\n   req.auth\n   // => { username: \'tobi\', password: \'hello\' }\n\n@return {Object} or undefined\n@api public\n',
        end: 414,
        type: 'comment' },
     '433': 
      { begin: 433,
        comment: '\nReturn subdomains as an array.\n\nSubdomains are the dot-separated parts of the host before the main domain of\nthe app. By default, the domain of the app is assumed to be the last two\nparts of the host. This can be changed by setting "subdomain offset".\n\nFor example, if the domain is "tobi.ferrets.example.com":\nIf "subdomain offset" is not set, req.subdomains is `["ferrets", "tobi"]`.\nIf "subdomain offset" is 3, req.subdomains is `["tobi"]`.\n\n@return {Array}\n@api public\n',
        end: 446,
        type: 'comment' },
     '456': 
      { begin: 456,
        comment: '\nShort-hand for `url.parse(req.url).pathname`.\n\n@return {String}\n@api public\n',
        end: 461,
        type: 'comment' },
     '467': 
      { begin: 467,
        comment: '\nParse the "Host" header field hostname.\n\n@return {String}\n@api public\n',
        end: 472,
        type: 'comment' },
     '482': 
      { begin: 482,
        comment: '\nCheck if the request is fresh, aka\nLast-Modified and/or the ETag\nstill match.\n\n@return {Boolean}\n@api public\n',
        end: 489,
        type: 'comment' },
     '506': 
      { begin: 506,
        comment: '\nCheck if the request is stale, aka\n"Last-Modified" and / or the "ETag" for the\nresource has changed.\n\n@return {Boolean}\n@api public\n',
        end: 513,
        type: 'comment' },
     '519': 
      { begin: 519,
        comment: '\nCheck if the request was an _XMLHttpRequest_.\n\n@return {Boolean}\n@api public\n',
        end: 524,
        type: 'comment' } },
  'fixtures/express/response.js': 
   { '1': 
      { comment: '\nModule dependencies.\n',
        begin: 1,
        end: 3,
        type: 'comment' },
     '21': 
      { begin: 21,
        comment: '\nResponse prototype.\n',
        end: 23,
        type: 'comment' },
     '29': 
      { begin: 29,
        comment: '\nSet status `code`.\n\n@param {Number} code\n@return {ServerResponse}\n@api public\n',
        end: 35,
        type: 'comment' },
     '42': 
      { begin: 42,
        comment: '\nSet Link header field with the given `links`.\n\nExamples:\n\n   res.links({\n     next: \'http://api.example.com/users?page=2\',\n     last: \'http://api.example.com/users?page=5\'\n   });\n\n@param {Object} links\n@return {ServerResponse}\n@api public\n',
        end: 55,
        type: 'comment' },
     '65': 
      { begin: 65,
        comment: '\nSend a response.\n\nExamples:\n\n    res.send(new Buffer(\'wahoo\'));\n    res.send({ some: \'json\' });\n    res.send(\'<p>some html</p>\');\n    res.send(404, \'Sorry, cant find that\');\n    res.send(404);\n\n@param {Mixed} body or status\n@param {Mixed} body\n@return {ServerResponse}\n@api public\n',
        end: 80,
        type: 'comment' },
     '158': 
      { begin: 158,
        comment: '\nSend JSON response.\n\nExamples:\n\n    res.json(null);\n    res.json({ user: \'tj\' });\n    res.json(500, \'oh noes!\');\n    res.json(404, \'I dont have that\');\n\n@param {Mixed} obj or status\n@param {Mixed} obj\n@return {ServerResponse}\n@api public\n',
        end: 172,
        type: 'comment' },
     '199': 
      { begin: 199,
        comment: '\nSend JSON response with JSONP callback support.\n\nExamples:\n\n    res.jsonp(null);\n    res.jsonp({ user: \'tj\' });\n    res.jsonp(500, \'oh noes!\');\n    res.jsonp(404, \'I dont have that\');\n\n@param {Mixed} obj or status\n@param {Mixed} obj\n@return {ServerResponse}\n@api public\n',
        end: 213,
        type: 'comment' },
     '251': 
      { begin: 251,
        comment: '\nTransfer the file at the given `path`.\n\nAutomatically sets the _Content-Type_ response header field.\nThe callback `fn(err)` is invoked when the transfer is complete\nor when an error occurs. Be sure to check `res.sentHeader`\nif you wish to attempt responding, as the header and some data\nmay have already been transferred.\n\nOptions:\n\n  - `maxAge` defaulting to 0\n  - `root`   root directory for relative filenames\n\nExamples:\n\n The following example illustrates how `res.sendfile()` may\n be used as an alternative for the `static()` middleware for\n dynamic situations. The code backing `res.sendfile()` is actually\n the same code, so HTTP cache support etc is identical.\n\n    app.get(\'/user/:uid/photos/:file\', function(req, res){\n      var uid = req.params.uid\n        , file = req.params.file;\n\n      req.user.mayViewFilesFrom(uid, function(yes){\n        if (yes) {\n          res.sendfile(\'/uploads/\' + uid + \'/\' + file);\n        } else {\n          res.send(403, \'Sorry! you cant see that.\');\n        }\n      });\n    });\n\n@param {String} path\n@param {Object|Function} options or fn\n@param {Function} fn\n@api public\n',
        end: 289,
        type: 'comment' },
     '349': 
      { begin: 349,
        comment: '\nTransfer the file at the given `path` as an attachment.\n\nOptionally providing an alternate attachment `filename`,\nand optional callback `fn(err)`. The callback is invoked\nwhen the data transfer is complete, or when an error has\nocurred. Be sure to check `res.headerSent` if you plan to respond.\n\nThis method uses `res.sendfile()`.\n\n@param {String} path\n@param {String|Function} filename or fn\n@param {Function} fn\n@api public\n',
        end: 363,
        type: 'comment' },
     '377': 
      { begin: 377,
        comment: '\nSet _Content-Type_ response header with `type` through `mime.lookup()`\nwhen it does not contain "/", or set the Content-Type to `type` otherwise.\n\nExamples:\n\n    res.type(\'.html\');\n    res.type(\'html\');\n    res.type(\'json\');\n    res.type(\'application/json\');\n    res.type(\'png\');\n\n@param {String} type\n@return {ServerResponse} for chaining\n@api public\n',
        end: 392,
        type: 'comment' },
     '401': 
      { begin: 401,
        comment: '\nRespond to the Acceptable formats using an `obj`\nof mime-type callbacks.\n\nThis method uses `req.accepted`, an array of\nacceptable types ordered by their quality values.\nWhen "Accept" is not present the _first_ callback\nis invoked, otherwise the first match is used. When\nno match is performed the server responds with\n406 "Not Acceptable".\n\nContent-Type is set for you, however if you choose\nyou may alter this within the callback using `res.type()`\nor `res.set(\'Content-Type\', ...)`.\n\n   res.format({\n     \'text/plain\': function(){\n       res.send(\'hey\');\n     },\n\n     \'text/html\': function(){\n       res.send(\'<p>hey</p>\');\n     },\n\n     \'appliation/json\': function(){\n       res.send({ message: \'hey\' });\n     }\n   });\n\nIn addition to canonicalized MIME types you may\nalso use extnames mapped to these types:\n\n   res.format({\n     text: function(){\n       res.send(\'hey\');\n     },\n\n     html: function(){\n       res.send(\'<p>hey</p>\');\n     },\n\n     json: function(){\n       res.send({ message: \'hey\' });\n     }\n   });\n\nBy default Express passes an `Error`\nwith a `.status` of 406 to `next(err)`\nif a match is not made. If you provide\na `.default` callback it will be invoked\ninstead.\n\n@param {Object} obj\n@return {ServerResponse} for chaining\n@api public\n',
        end: 456,
        type: 'comment' },
     '488': 
      { begin: 488,
        comment: '\nSet _Content-Disposition_ header to _attachment_ with optional `filename`.\n\n@param {String} filename\n@return {ServerResponse}\n@api public\n',
        end: 494,
        type: 'comment' },
     '504': 
      { begin: 504,
        comment: '\nSet header `field` to `val`, or pass\nan object of header fields.\n\nExamples:\n\n   res.set(\'Foo\', [\'bar\', \'baz\']);\n   res.set(\'Accept\', \'application/json\');\n   res.set({ Accept: \'text/plain\', \'X-API-Key\': \'tobi\' });\n\nAliased as `res.header()`.\n\n@param {String|Object|Array} field\n@param {String} val\n@return {ServerResponse} for chaining\n@api public\n',
        end: 520,
        type: 'comment' },
     '536': 
      { begin: 536,
        comment: '\nGet value for header `field`.\n\n@param {String} field\n@return {String}\n@api public\n',
        end: 542,
        type: 'comment' },
     '548': 
      { begin: 548,
        comment: '\nClear cookie `name`.\n\n@param {String} name\n@param {Object} options\n@param {ServerResponse} for chaining\n@api public\n',
        end: 555,
        type: 'comment' },
     '564': 
      { begin: 564,
        comment: '\nSet cookie `name` to `val`, with the given `options`.\n\nOptions:\n\n   - `maxAge`   max-age in milliseconds, converted to `expires`\n   - `signed`   sign the cookie\n   - `path`     defaults to "/"\n\nExamples:\n\n   // "Remember Me" for 15 minutes\n   res.cookie(\'rememberme\', \'1\', { expires: new Date(Date.now() + 900000), httpOnly: true });\n\n   // save as above\n   res.cookie(\'rememberme\', \'1\', { maxAge: 900000, httpOnly: true })\n\n@param {String} name\n@param {String|Object} val\n@param {Options} options\n@api public\n',
        end: 585,
        type: 'comment' },
     '605': 
      { begin: 605,
        comment: '\nSet the location header to `url`.\n\nThe given `url` can also be "back", which redirects\nto the _Referrer_ or _Referer_ headers or "/".\n\nExamples:\n\n   res.location(\'/foo/bar\').;\n   res.location(\'http://example.com\');\n   res.location(\'../login\'); // /blog/post/1 -> /blog/login\n\nMounting:\n\n  When an application is mounted and `res.location()`\n  is given a path that does _not_ lead with "/" it becomes\n  relative to the mount-point. For example if the application\n  is mounted at "/blog", the following would become "/blog/login".\n\n     res.location(\'login\');\n\n  While the leading slash would result in a location of "/login":\n\n     res.location(\'/login\');\n\n@param {String} url\n@api public\n',
        end: 632,
        type: 'comment' },
     '661': 
      { begin: 661,
        comment: '\nRedirect to the given `url` with optional response `status`\ndefaulting to 302.\n\nThe resulting `url` is determined by `res.location()`, so\nit will play nicely with mounted apps, relative paths,\n`"back"` etc.\n\nExamples:\n\n   res.redirect(\'/foo/bar\');\n   res.redirect(\'http://example.com\');\n   res.redirect(301, \'http://example.com\');\n   res.redirect(\'http://example.com\', 301);\n   res.redirect(\'../login\'); // /blog/post/1 -> /blog/login\n\n@param {String} url\n@param {Number} code\n@api public\n',
        end: 680,
        type: 'comment' },
     '723': 
      { begin: 723,
        comment: '\nAdd `field` to Vary. If already present in the Vary set, then\nthis call is simply ignored.\n\n@param {Array|String} field\n@param {ServerResponse} for chaining\n@api public\n',
        end: 730,
        type: 'comment' },
     '761': 
      { begin: 761,
        comment: '\nRender `view` with the given `options` and optional callback `fn`.\nWhen a callback function is given a response will _not_ be made\nautomatically, otherwise a response of _200_ and _text/html_ is given.\n\nOptions:\n\n - `cache`     boolean hinting to the engine it should cache\n - `filename`  filename of the view being rendered\n\n@param  {String} view\n@param  {Object|Function} options or callback function\n@param  {Function} fn\n@api public\n',
        end: 775,
        type: 'comment' } },
  'fixtures/express/router/index.js': 
   { '1': 
      { comment: '\nModule dependencies.\n',
        begin: 1,
        end: 3,
        type: 'comment' },
     '11': 
      { begin: 11,
        comment: '\nExpose `Router` constructor.\n',
        end: 13,
        type: 'comment' },
     '17': 
      { begin: 17,
        comment: '\nInitialize a new `Router` with the given `options`.\n\n@param {Object} options\n@api private\n',
        end: 22,
        type: 'comment' },
     '37': 
      { begin: 37,
        comment: '\nRegister a param callback `fn` for the given `name`.\n\n@param {String|Function} name\n@param {Function} fn\n@return {Router} for chaining\n@api public\n',
        end: 44,
        type: 'comment' },
     '74': 
      { begin: 74,
        comment: '\nRoute dispatcher aka the route "middleware".\n\n@param {IncomingMessage} req\n@param {ServerResponse} res\n@param {Function} next\n@api private\n',
        end: 81,
        type: 'comment' },
     '176': 
      { begin: 176,
        comment: '\nRespond to __OPTIONS__ method.\n\n@param {IncomingMessage} req\n@param {ServerResponse} res\n@api private\n',
        end: 182,
        type: 'comment' },
     '191': 
      { begin: 191,
        comment: '\nReturn an array of HTTP verbs or "options" for `path`.\n\n@param {String} path\n@return {Array}\n@api private\n',
        end: 197,
        type: 'comment' },
     '212': 
      { begin: 212,
        comment: '\nAttempt to match a route for `req`\nwith optional starting index of `i`\ndefaulting to 0.\n\n@param {IncomingMessage} req\n@param {Number} i\n@return {Route}\n@api private\n',
        end: 221,
        type: 'comment' },
     '252': 
      { begin: 252,
        comment: '\nAttempt to match a route for `method`\nand `url` with optional starting\nindex of `i` defaulting to 0.\n\n@param {String} method\n@param {String} url\n@param {Number} i\n@return {Route}\n@api private\n',
        end: 262,
        type: 'comment' },
     '269': 
      { begin: 269,
        comment: '\nRoute `method`, `path`, and one or more callbacks.\n\n@param {String} method\n@param {String} path\n@param {Function} callback...\n@return {Router} for chaining\n@api private\n',
        end: 277,
        type: 'comment' } },
  'fixtures/express/router/route.js': 
   { '2': 
      { begin: 2,
        comment: '\nModule dependencies.\n',
        end: 4,
        type: 'comment' },
     '8': 
      { begin: 8,
        comment: '\nExpose `Route`.\n',
        end: 10,
        type: 'comment' },
     '14': 
      { begin: 14,
        comment: '\nInitialize `Route` with the given HTTP `method`, `path`,\nand an array of `callbacks` and `options`.\n\nOptions:\n\n  - `sensitive`    enable case-sensitive routes\n  - `strict`       enable strict matching for trailing slashes\n\n@param {String} method\n@param {String} path\n@param {Array} callbacks\n@param {Object} options.\n@api private\n',
        end: 28,
        type: 'comment' },
     '41': 
      { begin: 41,
        comment: '\nCheck if this route matches `path`, if so\npopulate `.params`.\n\n@param {String} path\n@return {Boolean}\n@api private\n',
        end: 48,
        type: 'comment' } },
  'fixtures/express/utils.js': 
   { '2': 
      { begin: 2,
        comment: '\nModule dependencies.\n',
        end: 4,
        type: 'comment' },
     '9': 
      { begin: 9,
        comment: '\ntoString ref.\n',
        end: 11,
        type: 'comment' },
     '15': 
      { begin: 15,
        comment: '\nReturn ETag for `body`.\n\n@param {String|Buffer} body\n@return {String}\n@api private\n',
        end: 21,
        type: 'comment' },
     '27': 
      { begin: 27,
        comment: '\nMake `locals()` bound to the given `obj`.\n\nThis is used for `app.locals` and `res.locals`.\n\n@param {Object} obj\n@return {Function}\n@api private\n',
        end: 35,
        type: 'comment' },
     '46': 
      { begin: 46,
        comment: '\nCheck if `path` looks absolute.\n\n@param {String} path\n@return {Boolean}\n@api private\n',
        end: 52,
        type: 'comment' },
     '60': 
      { begin: 60,
        comment: '\nFlatten the given `arr`.\n\n@param {Array} arr\n@return {Array}\n@api private\n',
        end: 66,
        type: 'comment' },
     '81': 
      { begin: 81,
        comment: '\nNormalize the given `type`, for example "html" becomes "text/html".\n\n@param {String} type\n@return {Object}\n@api private\n',
        end: 87,
        type: 'comment' },
     '95': 
      { begin: 95,
        comment: '\nNormalize `types`, for example "html" becomes "text/html".\n\n@param {Array} types\n@return {Array}\n@api private\n',
        end: 101,
        type: 'comment' },
     '113': 
      { begin: 113,
        comment: '\nReturn the acceptable type in `types`, if any.\n\n@param {Array} types\n@param {String} str\n@return {String}\n@api private\n',
        end: 120,
        type: 'comment' },
     '140': 
      { begin: 140,
        comment: '\nCheck if `type(s)` are acceptable based on\nthe given `str`.\n\n@param {String|Array} type(s)\n@param {String} str\n@return {Boolean|String}\n@api private\n',
        end: 148,
        type: 'comment' },
     '155': 
      { begin: 155,
        comment: '\nCheck if `type` array is acceptable for `other`.\n\n@param {Object} type\n@param {Object} other\n@return {Boolean}\n@api private\n',
        end: 162,
        type: 'comment' },
     '171': 
      { begin: 171,
        comment: '\nCheck if accept params are equal.\n\n@param {Object} a\n@param {Object} b\n@return {Boolean}\n@api private\n',
        end: 178,
        type: 'comment' },
     '186': 
      { begin: 186,
        comment: '\nParse accept `str`, returning\nan array objects containing\n`.type` and `.subtype` along\nwith the values provided by\n`parseQuality()`.\n\n@param {Type} name\n@return {Type}\n@api private\n',
        end: 196,
        type: 'comment' },
     '209': 
      { begin: 209,
        comment: '\nParse quality `str`, returning an\narray of objects with `.value`,\n`.quality` and optional `.params`\n\n@param {String} str\n@return {Array}\n@api private\n',
        end: 217,
        type: 'comment' },
     '235': 
      { begin: 235,
        comment: '\nParse accept params `str` returning an\nobject with `.value`, `.quality` and `.params`.\nalso includes `.originalIndex` for stable sorting\n\n@param {String} str\n@return {Object}\n@api private\n',
        end: 243,
        type: 'comment' },
     '261': 
      { begin: 261,
        comment: '\nEscape special characters in the given string of html.\n\n@param  {String} html\n@return {String}\n@api private\n',
        end: 267,
        type: 'comment' },
     '277': 
      { begin: 277,
        comment: '\nNormalize the given path string,\nreturning a regular expression.\n\nAn empty array should be passed,\nwhich will contain the placeholder\nkey names. For example "/user/:id" will\nthen contain ["id"].\n\n@param  {String|RegExp|Array} path\n@param  {Array} keys\n@param  {Boolean} sensitive\n@param  {Boolean} strict\n@return {RegExp}\n@api private\n',
        end: 292,
        type: 'comment' } },
  'fixtures/express/view.js': 
   { '1': 
      { comment: '\nModule dependencies.\n',
        begin: 1,
        end: 3,
        type: 'comment' },
     '14': 
      { begin: 14,
        comment: '\nExpose `View`.\n',
        end: 16,
        type: 'comment' },
     '20': 
      { begin: 20,
        comment: '\nInitialize a new `View` with the given `name`.\n\nOptions:\n\n  - `defaultEngine` the default template engine name\n  - `engines` template engine require() cache\n  - `root` root path for view lookup\n\n@param {String} name\n@param {Object} options\n@api private\n',
        end: 32,
        type: 'comment' },
     '47': 
      { begin: 47,
        comment: '\nLookup view by the given `path`\n\n@param {String} path\n@return {String}\n@api private\n',
        end: 53,
        type: 'comment' },
     '67': 
      { begin: 67,
        comment: '\nRender with the given `options` and callback `fn(err, str)`.\n\n@param {Object} options\n@param {Function} fn\n@api private\n',
        end: 73,
        type: 'comment' } } }

  [32m  √[0m[90m should read each file as a string and extract comments from the code. [0m[33m(43ms)[0m


[92m [0m[32m 1 passing[0m[90m (53ms)[0m

