[
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\ntab_width = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": ".gitattributes",
    "content": "*   text=auto eol=lf\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\npatreon: # Replace with a single Patreon username\nopen_collective: pug\nko_fi: # Replace with a single Ko-fi username\ntidelift: npm/pug\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\ncustom: # Replace with a single custom sponsorship URL\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "<!-- For bugs and feature request, please fillin the following -->\n<!-- For general questions, please use the pug tag on stack overflow: -->\n<!-- https://stackoverflow.com/questions/tagged/pug -->\n\n**Pug Version:** your version number here\n\n**Node Version:** your version number here\n\n## Input JavaScript Values\n\n```js\npug.renderFile('input.pug', {\n  whatIsIt: 'language',\n});\n```\n\n## Input Pug\n\n```pug\nh1 I Love Pug\np It's a great #{whatIsIt}\n```\n\n## Expected HTML\n\n```html\n<h1>I Love Pug</h1>\n<p>It's a great language</p>\n```\n\n## Actual HTML\n\n```html\n<h1>I Love Pug</h1>\n<p>It's a great language</p>\n```\n\n## Additional Comments\n\n<!-- Please give us any additional details we'll need in order to understand the issue here -->\n"
  },
  {
    "path": ".github/workflows/rollingversions.yml",
    "content": "name: Release\non:\n  push:\n    branches:\n      - master\n  repository_dispatch:\n    types: [rollingversions_publish_approved]\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [10.x, 12.x, 14.x]\n\n    steps:\n      - uses: actions/checkout@v2\n      - name: Use Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v1\n        with:\n          node-version: ${{ matrix.node-version }}\n      - run: yarn install --frozen-lockfile\n      - run: yarn prettier:check\n      - run: yarn test\n\n\n  publish-canary:\n    runs-on: ubuntu-latest\n    if: ${{ github.event_name == 'push' }}\n    needs: test\n    steps:\n      - uses: actions/checkout@v2\n      - uses: actions/setup-node@v1\n        with:\n          node-version: 24.x\n          registry-url: 'https://registry.npmjs.org'\n      - run: yarn install --frozen-lockfile\n      - run: yarn build\n      - run: npx rollingversions publish --canary $GITHUB_RUN_NUMBER\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n  publish:\n    runs-on: ubuntu-latest\n    if: ${{ github.event_name == 'repository_dispatch' }}\n    needs: test\n    steps:\n      - uses: actions/checkout@v2\n      - uses: actions/setup-node@v1\n        with:\n          node-version: 24.x\n          registry-url: 'https://registry.npmjs.org'\n      - run: yarn install --frozen-lockfile\n      - run: yarn build\n      - run: npx rollingversions publish\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\npermissions:\n  id-token: write\n  contents: write"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: Test\n\non:\n  pull_request:\n    branches:\n      - master\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n\n    strategy:\n      matrix:\n        node-version: [10.x, 12.x, 14.x]\n\n    steps:\n      - uses: actions/checkout@v2\n      - name: Use Node.js ${{ matrix.node-version }}\n        uses: actions/setup-node@v1\n        with:\n          node-version: ${{ matrix.node-version }}\n      - run: yarn install --frozen-lockfile\n      - run: yarn prettier:check\n      - run: yarn test\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n.idea\n.vscode\ntesting\nnode_modules\nlib-cov\ncoverage\ncov-pt*\n*.seed\n*.log\n*.csv\n*.dat\n*.out\n*.patch\n*.pid\n*.gz\n**/test/output*\n**/test/temp\n.release.json\npackage-lock.json\n\nscripts/tsconfig.json\npackages/pug-error/lib\n"
  },
  {
    "path": ".prettierrc.js",
    "content": "module.exports = {\n  bracketSpacing: false,\n  singleQuote: true,\n  trailingComma: 'all',\n  overrides: [\n    {\n      files: '*.js',\n      options: {\n        parser: 'babel',\n        trailingComma: 'es5',\n      },\n    },\n  ],\n};\n"
  },
  {
    "path": "README.md",
    "content": "<a href=\"https://pugjs.org\"><img src=\"https://cdn.rawgit.com/pugjs/pug-logo/eec436cee8fd9d1726d7839cbe99d1f694692c0c/SVG/pug-final-logo-_-colour-128.svg\" height=\"200\" align=\"right\"></a>\n\n# Pug\n\nFull documentation is at [pugjs.org](https://pugjs.org/)\n\nPug is a high-performance template engine heavily influenced by [Haml](http://haml.info/)\nand implemented with JavaScript for [Node.js](http://nodejs.org) and browsers. For bug reports,\nfeature requests and questions, [open an issue](https://github.com/pugjs/pug/issues/new).\nFor discussion join the [chat room](https://gitter.im/pugjs/pug).\n\nYou can test drive Pug online [here](https://pugjs.org/).\n\n[Professionally supported pug is now available](https://tidelift.com/subscription/pkg/npm-pug?utm_source=npm-pug&utm_medium=referral&utm_campaign=readme)\n\n[![Build Status](https://img.shields.io/github/workflow/status/pugjs/pug/Test/master?style=for-the-badge)](https://github.com/pugjs/pug/actions?query=workflow%3ATest+branch%3Amaster)\n[![Rolling Versions](https://img.shields.io/badge/Rolling%20Versions-Enabled-brightgreen?style=for-the-badge)](https://rollingversions.com/pugjs/pug)\n[![NPM version](https://img.shields.io/npm/v/pug?style=for-the-badge)](https://www.npmjs.com/package/pug)\n[![Join Gitter Chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg?style=for-the-badge)](https://gitter.im/pugjs/pug?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n## Packages\n\n<!-- VERSION_TABLE -->\nPackage Name | Version\n-------------|--------\npug | [![NPM version](https://img.shields.io/npm/v/pug?style=for-the-badge)](https://www.npmjs.com/package/pug)\npug-attrs | [![NPM version](https://img.shields.io/npm/v/pug-attrs?style=for-the-badge)](https://www.npmjs.com/package/pug-attrs)\npug-code-gen | [![NPM version](https://img.shields.io/npm/v/pug-code-gen?style=for-the-badge)](https://www.npmjs.com/package/pug-code-gen)\npug-error | [![NPM version](https://img.shields.io/npm/v/pug-error?style=for-the-badge)](https://www.npmjs.com/package/pug-error)\npug-filters | [![NPM version](https://img.shields.io/npm/v/pug-filters?style=for-the-badge)](https://www.npmjs.com/package/pug-filters)\npug-lexer | [![NPM version](https://img.shields.io/npm/v/pug-lexer?style=for-the-badge)](https://www.npmjs.com/package/pug-lexer)\npug-linker | [![NPM version](https://img.shields.io/npm/v/pug-linker?style=for-the-badge)](https://www.npmjs.com/package/pug-linker)\npug-load | [![NPM version](https://img.shields.io/npm/v/pug-load?style=for-the-badge)](https://www.npmjs.com/package/pug-load)\npug-parser | [![NPM version](https://img.shields.io/npm/v/pug-parser?style=for-the-badge)](https://www.npmjs.com/package/pug-parser)\npug-runtime | [![NPM version](https://img.shields.io/npm/v/pug-runtime?style=for-the-badge)](https://www.npmjs.com/package/pug-runtime)\npug-strip-comments | [![NPM version](https://img.shields.io/npm/v/pug-strip-comments?style=for-the-badge)](https://www.npmjs.com/package/pug-strip-comments)\npug-walk | [![NPM version](https://img.shields.io/npm/v/pug-walk?style=for-the-badge)](https://www.npmjs.com/package/pug-walk)\n<!-- VERSION_TABLE -->\n\n## Rename from \"Jade\"\n\nThis project was formerly known as \"Jade\". However, it was revealed to us that \"Jade\" is a registered trademark; as a result, a rename was needed. After some discussion among the maintainers, **\"Pug\"** was chosen as the new name for this project. As of version 2, \"pug\" is the official package name.\n\nIf your package or app currently uses `jade`, don't worry: we have secured permissions to continue to occupy that package name, although all new versions will be released under `pug`.\n\nBefore the renaming, work had already begun on “Jade 2.0.0”. Therefore, the rename to Pug coincided with the major version bump. As a result, upgrading from Jade to Pug will be the same process as upgrading any other package with a major version bump.\n\nThe syntax of Pug has several differences, deprecations, and removals compared to its predecessor. These differences are documented in [#2305](https://github.com/pugjs/pug/issues/2305).\n\nThe website and documentation for Pug are still being updated. But if you are new to Pug, you should get started with the new syntax and install the Pug package from npm.\n\n## Installation\n\n### Package\n\nTo use Pug in your own JavaScript projects:\n\n```bash\n$ npm install pug\n```\n\n### Command Line\n\nAfter installing the latest version of [Node.js](http://nodejs.org), install with:\n\n```bash\n$ npm install pug-cli -g\n```\n\nand run with\n\n```bash\n$ pug --help\n```\n\n## Syntax\n\nPug is a clean, whitespace sensitive syntax for writing HTML. Here is a simple example:\n\n```pug\ndoctype html\nhtml(lang=\"en\")\n  head\n    title= pageTitle\n    script(type='text/javascript').\n      if (foo) bar(1 + 5);\n  body\n    h1 Pug - node template engine\n    #container.col\n      if youAreUsingPug\n        p You are amazing\n      else\n        p Get on it!\n      p.\n        Pug is a terse and simple templating language with a\n        strong focus on performance and powerful features.\n```\n\nPug transforms the above to:\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Pug</title>\n    <script type=\"text/javascript\">\n      if (foo) bar(1 + 5);\n    </script>\n  </head>\n  <body>\n    <h1>Pug - node template engine</h1>\n    <div id=\"container\" class=\"col\">\n      <p>You are amazing</p>\n      <p>\n        Pug is a terse and simple templating language with a strong focus on\n        performance and powerful features.\n      </p>\n    </div>\n  </body>\n</html>\n```\n\n## API\n\nFor full API, see [pugjs.org/api/reference.html](https://pugjs.org/api/reference.html)\n\n```js\nvar pug = require('pug');\n\n// compile\nvar fn = pug.compile('string of pug', options);\nvar html = fn(locals);\n\n// render\nvar html = pug.render('string of pug', merge(options, locals));\n\n// renderFile\nvar html = pug.renderFile('filename.pug', merge(options, locals));\n```\n\n### Options\n\n- `filename` Used in exceptions, and required when using includes\n- `compileDebug` When `false` no debug instrumentation is compiled\n- `pretty` Add pretty-indentation whitespace to output _(`false` by default)_\n\n## Browser Support\n\nThe latest version of pug can be [downloaded for the browser in standalone form](https://pugjs.org/js/pug.js). It only supports the very latest browsers, though, and is a large file. It is recommended that you pre-compile your pug templates to JavaScript.\n\nTo compile a template for use on the client using the command line, do:\n\n```bash\n$ pug --client --no-debug filename.pug\n```\n\nwhich will produce `filename.js` containing the compiled template.\n\n## Tutorials\n\n- cssdeck interactive [Pug syntax tutorial](http://cssdeck.com/labs/learning-the-jade-templating-engine-syntax)\n- cssdeck interactive [Pug logic tutorial](http://cssdeck.com/labs/jade-templating-tutorial-codecast-part-2)\n- [Pug について。](https://gist.github.com/japboy/5402844) (A Japanese Tutorial)\n\n## Implementations in other languages\n\n### Ports in other languages\n\nPorts to other languages, with very close syntax:\n\n- [PHP](https://github.com/pug-php/pug)\n- [Java](https://github.com/neuland/jade4j)\n- [Python](https://github.com/kakulukia/pypugjs)\n- [Ruby](https://github.com/yivo/pug-ruby)\n- [C# (ASP.NET Core)](https://github.com/AspNetMonsters/pugzor)\n- [RPG/ILE](https://github.com/WorksOfLiam/apug)\n\n### Equivalents in other languages\n\nTemplates engines for other languages with a different syntax, but a similar philosophy:\n\n- [Scaml for Scala](https://scalate.github.io/scalate/documentation/scaml-reference.html)\n- [Slim for Ruby](https://github.com/slim-template/slim) (should not be confused with Slim PHP framework)\n- [HAML for Ruby](http://haml.info)\n\n### Framework implementations/adapters\n\nEmbedded view engines for frameworks:\n\n- [Laravel](https://github.com/BKWLD/laravel-pug)\n- [Symfony](https://github.com/pug-php/pug-symfony)\n- [Phalcon](https://github.com/pug-php/pug-phalcon)\n- [CodeIgniter](https://github.com/pug-php/ci-pug-engine)\n- [Yii 2](https://github.com/pug-php/pug-yii2)\n- [Slim 3](https://github.com/pug-php/pug-slim)\n- [Silex (implementation example)](https://gist.github.com/kylekatarnls/ba13e4361ab14f4ff5d2a5775eb0cc10)\n- [Lumen](https://github.com/BKWLD/laravel-pug#use-in-lumen)\n- [Rails](https://github.com/yivo/pug-rails)\n\n### CMS plugins\n\n- [WordPress](https://github.com/welaika/wordless)\n\n## Additional Resources\n\n- [Emacs Mode](https://github.com/brianc/jade-mode)\n- [Vim Syntax](https://github.com/digitaltoad/vim-pug)\n- [TextMate Bundle](http://github.com/miksago/jade-tmbundle)\n- [Coda/SubEtha syntax Mode](https://github.com/aaronmccall/jade.mode)\n- [html2pug](https://github.com/donpark/html2jade) converter\n- [pug2php](https://github.com/SE7ENSKY/jade2php) converter\n- [Pug Server](https://github.com/ctrlaltdev/pug-server) Ideal for building local prototypes apart from any application\n- [cache-pug-templates](https://github.com/ladjs/cache-pug-templates) Cache Pug templates for [Lad](https://github.com/ladjs/lad)/[Koa](https://github.com/koajs/koa)/[Express](https://github.com/expressjs/express)/[Connect](https://github.com/senchalabs/connect) with [Redis](https://redis.io)\n- [Prettier Plugin](https://github.com/prettier/plugin-pug)\n\n## Backers\n\nSupport us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/pug#backer)]\n\n<a href=\"https://opencollective.com/pug/backer/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/backer/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/backer/29/avatar.svg\"></a>\n\n## Sponsors\n\nBecome a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/pug#sponsor)]\n\n<a href=\"https://opencollective.com/pug/sponsor/0/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/0/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/1/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/1/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/2/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/2/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/3/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/3/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/4/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/4/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/5/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/5/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/6/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/6/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/7/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/7/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/8/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/8/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/9/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/9/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/10/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/10/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/11/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/11/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/12/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/12/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/13/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/13/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/14/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/14/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/15/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/15/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/16/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/16/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/17/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/17/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/18/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/18/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/19/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/19/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/20/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/20/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/21/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/21/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/22/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/22/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/23/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/23/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/24/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/24/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/25/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/25/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/26/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/26/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/27/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/27/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/28/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/28/avatar.svg\"></a>\n<a href=\"https://opencollective.com/pug/sponsor/29/website\" target=\"_blank\"><img src=\"https://opencollective.com/pug/sponsor/29/avatar.svg\"></a>\n\n## License\n\nMIT\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\n| Version  | Supported          |\n| -------- | ------------------ |\n| ^3.0.1   | :white_check_mark: |\n| <3.0.1   | :x:                |\n\n## Reporting a Vulnerability\n\nTo report a security vulnerability, please use the\n[Tidelift security contact](https://tidelift.com/security).\nTidelift will coordinate the fix and disclosure.\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"pug-monorepo\",\n  \"private\": true,\n  \"@rollingversions/ignore\": true,\n  \"workspaces\": [\n    \"packages/*\"\n  ],\n  \"devDependencies\": {\n    \"coveralls\": \"3.0.9\",\n    \"jest\": \"^26.0.1\",\n    \"prettier\": \"1.19.1\",\n    \"typescript\": \"^4.1.2\",\n    \"wsrun\": \"^5.2.0\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug.git\"\n  },\n  \"scripts\": {\n    \"prettier:check\": \"prettier --ignore-path .gitignore --list-different './**/*.js'\",\n    \"format\": \"prettier --ignore-path .gitignore --write './**/*.js'\",\n    \"build\": \"node scripts/prebuild && wsrun --stages --exclude-missing --fast-exit --collect-logs build && tsc --build scripts\",\n    \"pretest\": \"yarn build\",\n    \"test\": \"jest\",\n    \"coverage\": \"jest --coverage\",\n    \"coveralls\": \"jest --coverage --coverageReporters=text-lcov | coveralls\",\n    \"watch\": \"jest --watch\"\n  },\n  \"jest\": {\n    \"testEnvironment\": \"node\",\n    \"snapshotSerializers\": [\n      \"./scripts/filename-serializer.js\",\n      \"./scripts/prettier-javascript-serializer.js\",\n      \"./scripts/buffer-serializer.js\"\n    ]\n  },\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug/History.md",
    "content": "1.11.0 / 2015-06-12\n==================\n\n  * Added block code support ([@alephyud](https://github.com/alephyud))\n  * Improved runtime performance of mixins significantly ([Andreas Lubbe](https://github.com/alubbe))\n  * Improved runtime performance of pug's string escaping ([Andreas Lubbe](https://github.com/alubbe)) and ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Better line number counting for pipeless text ([@alephyud](https://github.com/alephyud))\n\n\n1.10.0 / 2015-05-25\n==================\n\n  * Now supports jstransformers, which allows improved handling of embedded languages such as Coffee-Script, and deprecated Transformers support in filters - to be removed in 2.0.0 ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * CLI: added a flag to keep directory hierarchy when a directory is specified - this behavior will be the default in 2.0.0 ([@TimothyGu](https://github.com/TimothyGu))\n  * disabled 'compileDebug' flag by default when used with express in production mode ([Andreas Lubbe](https://github.com/alubbe))\n  * Fixed a memory leak on modern versions of Chrome as well as node 0.12 and iojs ([Andreas Lubbe](https://github.com/alubbe))\n  * update website ([@GarthDB](https://github.com/GarthDB))\n\n1.9.2 / 2015-01-18\n==================\n\n  * Do not ignore some parser errors for mismatched parenthesis ([@TimothyGu](https://github.com/TimothyGu))\n  * Warn for `:` that is not followed by a space ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix #1794 (a bizzare bug with a certain combination of inheritance, mixins and &attributes) ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Add `compileClientWithDependenciesTracked` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Support comments in `case` blocks ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix blocks in nested mixins ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Lots more documentation ([@enlore](https://github.com/enlore))\n  * Fix watching in CLI ([@pavel](https://github.com/pavel))\n\n1.9.1 / 2015-01-17\n==================\n\n  * Clean up path/fs functions in CLI as we no longer support node@0.6 ([@TimothyGu](https://github.com/TimothyGu))\n  * Update commander ([@TimothyGu](https://github.com/TimothyGu))\n  * Document `cache` and `parser` options ([@TimothyGu](https://github.com/TimothyGu))\n  * Fix bug in 1.9.0 where we read the file if cache was enabled, even if a string was provided ([@TimothyGu](https://github.com/TimothyGu))\n  * Fix year in changelog ([@tomByrer](https://github.com/tomByrer))\n\n1.9.0 / 2015-01-13\n==================\n\n  * Fix `--watch` sometimes dying when there were file-system errors ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix `--watch` by using `fs.watchFile` correctly ([@TimothyGu](https://github.com/TimothyGu))\n  * Fix errors with using the CLI to compile from stdin\n  * Better looking badges ([@TimothyGu](https://github.com/TimothyGu))\n  * Added `--extension` to CLI([@nicocedron](https://github.com/nicocedron) and [@TimothyGu](https://github.com/TimothyGu))\n  * Refactor and improve internal cache handling ([@TimothyGu](https://github.com/TimothyGu))\n  * Loads more tests ([@TimothyGu](https://github.com/TimothyGu))\n\n1.8.2 / 2014-12-16\n==================\n\n  * Use `-` as the default filename when using stdin on CLI ([@TimothyGu](https://github.com/TimothyGu))\n  * Prevent some compiler errors being silenced ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove use of non-standard `string.trimLeft()` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix bug in CLI when no name was provided for child template ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove dependency on monocle (hopefully fixing installation on 0.8) ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Add gitter chat room ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.8.1 / 2014-11-30\n==================\n\n  * Fix corner case when the pretty option was passed a non-string truthy value ([@TimothyGu](https://github.com/TimothyGu))\n  * Warn when `lexer` is given as an option ([@TimothyGu](https://github.com/TimothyGu))\n  * Update dependencies ([@TimothyGu](https://github.com/TimothyGu))\n\n1.8.0 / 2014-11-28\n==================\n\n  * Fix empty text-only block ([@rlidwka](https://github.com/rlidwka))\n  * Warn about future change to ISO 8601 style dates ([@TimothyGu](https://github.com/TimothyGu) and [@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Add warnings when data-attributes contain ampersands ([@TimothyGu](https://github.com/TimothyGu))\n  * Allow custom pretty indentation ([@bfred-it](https://github.com/bfred-it))\n  * Add support for an object in the style attribute ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Add support for an object in the class attribute ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Ignore fs module in browser builds ([@sokra](https://github.com/sokra))\n  * Update dependencies ([@hildjj](https://github.com/hildjj))\n  * Check mixin arguments are valid JavaScript expressions ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove symlink ([@slang800](https://github.com/slang800))\n\n1.7.0 / 2014-09-17\n==================\n\n  * Add Doctype option on command line ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Support ES6 style rest args in mixins ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix support for unicode newlines (\\u2028, \\u2029) ([@rlidwka](https://github.com/rlidwka))\n  * Expose `globals` option from the `with` module ([@sokra](https://github.com/sokra))\n  * Lots of new documentation ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.6.0 / 2014-08-31\n==================\n\n  * Allow optional white space after `+` when calling a mixin ([@char101](https://github.com/char101))\n  * Use void-elements module to replace internal self-closing list ([@hemanth](https://github.com/hemanth))\n  * Fix a warning that eroniously warned for un-used blocks if in an extending template from an include (Reported by [@Dissimulazione](https://github.com/Dissimulazione))\n  * Fix mixins not working at end of file ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix error reporting when mixin block was followed by blank lines ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n\n1.5.0 / 2014-07-23\n==================\n\n  * Added compileFile API ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix line number in un-used blocks warning ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix a warning that eroniously warned for un-used blocks if they were under another block (Reported by [@pesho](https://github.com/pesho))\n\n1.4.2 / 2014-07-16\n==================\n\n  * Fix a warning that eroniously warned for un-used blocks if they were under a \"Code\" element (Reported by [@narirou](https://github.com/narirou))\n\n1.4.1 / 2014-07-16\n==================\n\n  * Fix an error that sometimes resulted in 'unexpected token \"pipless-text\"' being erroniously thrown (Reported by [@Artazor](https://github.com/Artazor) and [@thenitai](https://github.com/thenitai))\n\n1.4.0 / 2014-07-15\n==================\n\n  * Fix CLI so it keeps watching when errors occur ([@AndrewTsao](https://github.com/AndrewTsao))\n  * Support custom names for client side templates ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) and [@dscape](https://github.com/dscape))\n  * Allow whitepsace other than \"space\" before attributes passed to mixins (N.B. there is a small chance this could be a breaking change for you) ([@regular](https://github.com/regular))\n  * Track dependencies so file watchers can be more clever ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) and [@sdether](https://github.com/sdether))\n  * Allow passing options to filtered includes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix bugs with indentation in filters ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) and [@lackac](https://github.com/lackac))\n  * Warn on block names that are never used ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.3.1 / 2014-04-04\n==================\n\n  * Fix error with tags in xml that are self-closing in html ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix error message for inline tags with content ([@hiddentao](https://github.com/hiddentao))\n\n1.3.0 / 2014-03-02\n==================\n\n  * Fix a bug where sometimes mixins were removed by an optimisation even though they were being called ([@ForbesLindesay](http://www.forbeslindesay.co.uk/), reported by [@leider](https://github.com/leider))\n  * Updated with to support automatically detecting when a value is \"global\" and removed redundant `options.globals` option ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Improve warnings for tags with multiple attributes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Deprecate (with a warning) `node.clone`, `block.replace`, `attrs.removeAttribute`, `attrs.getAttribute` - these are all internal APIs for the AST ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.2.0 / 2014-02-26\n==================\n\n  * Use variables instead of properties of pug, improving performance and reliability with nested templates ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Support compiling templates from stdin via a user typing ([@yorkie](https://github.com/yorkie))\n  * Lazily add mixins ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix case fall-through ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Earlier errors for `when` without `case` and `else` without `if` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Allow `if`/`else` etc. to not have a block.\n  * Remove lib-cov legacy to make browserify work better ([@silver83](https://github.com/silver83))\n  * Add and improve test coverage using istanbul ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.1.5 / 2014-01-19\n==================\n\n  * Add filename to and fix line numbers for missing space before text warning (@ijin82)\n  * Fix filenames for some error reporting in extends/includes (@doublerebel)\n  * Fix a corner case where a mixin was called with `&attributes` but no other attributes and a block that was supposed to be fixed in 1.1.4 ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.1.4 / 2014-01-09\n==================\n\n  * Fix a corner case where a mixin was called with `&attributes` but no other attributes and a block ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.1.3 / 2014-01-09\n==================\n\n  * Fix failure of npm prepublish not running\n\n1.1.2 / 2014-01-09\n==================\n\n  * Fix same interaction of `&attributes` with `false` `null` or `undefined` but combined with dynamic attributes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.1.1 / 2014-01-09\n==================\n\n  * Fix a bug when `&attributes` is combined with static attributes that evaluate to `false` or `null` or `undefined` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.1.0 / 2014-01-07\n==================\n\n  * Fix class merging to work as documented ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Throw an error when the same attribute is duplicated multiple times ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Move more errors into the parser/lexer so they have more info about line numbers ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Support mixin blocks at the end of files ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.0.2 / 2013-12-31\n==================\n\n  * Fix a bug when `&attributes` is combined with dynamic attributes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.0.1 / 2013-12-29\n==================\n\n  * Allow self closing tags to contian whitespace ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Allow tags to have a single white space after them ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Support text bodies of tags that begin with `//` rather than treating them as comments ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n\n1.0.0 / 2013-12-22\n==================\n\n  * No longer support node@0.8 ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix error reporting in layouts & includes ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Allow a list of 'globals' to be passed as an array at compile time & don't automatically expose all globals ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Escape apostrophes in data attributes (@qualiabyte)\n  * Fix mixin/block interaction ([@ForbesLindesay](http://www.forbeslindesay.co.uk/) & [@paulyoung](https://github.com/paulyoung))\n  * Ignore trailing space after mixin declaration ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Make literal `.` work as expected ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove implicit text only for script/style ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Stop parsing comments and remove support for conditional comments ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Make filtering includes explicit ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove special assignment syntax ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove `!!!` shortcut for `doctype` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove `5` shorcut for `html` doctype ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove `colons` option from the distant past ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Add a sepatate `compileClient` and `compileFileClient` to replace the `client` option ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove polyfills for supporting old browsers ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Allow interpolation for mixin names ([@jeromew](https://github.com/jeromew)\n  * Use `node.type` instead of `node.constructor.name` so it can be minified ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Allow hyphens in filter names ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Throw an error if a self closing tag has content ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Support inline tags ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Replace `attributes` magic attribute with `&attributes(attributes)` ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove automatic tag wrapping for filters, you can just put the tags in yourself now ([@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Remove whitespace from tags nested inside pre tags ([@markdalgleish](http://markdalgleish.com))\n\n0.35.0 / 2013-08-21\n===================\n\n  * Add support for space separated attributes (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Add earlier errors for invalid JavaScript expressions (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * Fix parsing files with UTF8 BOMs when they are includes or parent/layout templates (thanks to [@kiinoo](https://github.com/kiinoo))\n\n0.34.1 / 2013-07-26\n===================\n\n  * fix render file not working when called with callback (reported by [@xieren58](https://github.com/xieren58))\n\n0.34.0 / 2013-07-26\n===================\n\n  * callbacks only called once for async methods even if they throw (reported by [@davidcornu](https://github.com/davidcornu))\n  * HTML comments are pretty printed better (thanks to [@eddiemonge](https://github.com/eddiemonge))\n  * callbacks are optional and leaving them out results in synchronous operation (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/))\n  * empty filter nodes are now permitted (thanks to [@coderanger](https://github.com/coderanger))\n  * overhaul website and documentation (thanks to [@ForbesLindesay](http://www.forbeslindesay.co.uk/)), much more of this to come.\n\n0.33.0 / 2013-07-12\n===================\n\n  * Hugely more powerful error reporting (especially with `compileDebug` set explicitly to `true`)\n  * Add a warning for tags with multiple attributes\n  * be strict about requiring newlines after tags to fix some odd corner cases\n  * fix escaping of class to allow it to be unescaped (thanks to [@christiangenco](https://github.com/christiangenco))\n\n0.32.0 / 2013-06-28\n===================\n\n  * remove `pug.version` and fix `pug --version`\n  * add file name and line number to deprecation warnings\n  * use constantinople for better constant detection\n  * update `with` for a massive performance upgrade at compile time\n\n0.31.2 / 2013-06-07\n===================\n\n  * fix overzealous deprecation warnings\n\n0.31.1 / 2013-05-31\n===================\n\n  * fix line endings for executable command\n  * fix `locals` variable being undefined\n  * fix an obscure bug that could occur if multiple mixins interact badly (see [substack/lexical-scope#13](https://github.com/substack/lexical-scope/issues/13))\n\n0.31.0 / 2013-05-30\n==================\n\n  * deprecate implicit text-only `script` and `style` tags\n  * make `with` at compile time using `lexical-scope`\n  * add `options.parser` that behaves exactly like `options.compiler`\n  * add \"component.json\" for component (runtime) support\n  * removed `hasOwnProperty` check in each loops\n  * removed .min files from the repository (people can just generate these themselves)\n  * use browserify to compile client side libraries\n  * fix buggy block extending should now be fixed\n  * fix preserve case of custom doctypes\n  * fix regexps in attributes sometimes not being accepted\n  * fix allow `$` sign in each loop variable names\n  * fix mixins with buffered code on the same line\n  * fix separate class names by ` ` rather than `,` (was sometimes incorrect)\n\n0.30.0 / 2013-04-25\n==================\n\n  * add support for 'include' and 'extends' to use paths relative to basedir\n  * fix accidental calling of functions in iteration block. Closes #986\n  * fix: skip rethrow on client\n  * fix each/else prefixed with `-`\n  * fix multi-block prepend/append\n  * swap -o and -O, set -o to --out\n\n0.29.0 / 2013-04-16\n==================\n\n  * add \"monocle\" for watcher that actually works...\n  * fix interpolation in blocks of text\n  * fix attribute interpolation\n  * move filters to an external library\n  * fix JavaScript escaping corner cases\n\n0.28.2 / 2013-03-04\n==================\n\n  * wtf coffeescript is not a dep\n\n0.28.1 / 2013-01-10\n==================\n\n  * add passing of filename to include filters\n  * fix wrong new lines for include filters\n\n0.28.0 / 2013-01-08\n==================\n\n  * add .css and .js \"filters\". re #438\n  * add include filters. Closes #283\n  * fix \"class:\" within attribute escaping\n  * removing ast filters\n  * things I can't read:\n  * 反馈地址\n  * 样式\n  * 联系\n  * 初稿，翻译完\n  * 接受大鸟的建议\n  * 头晕，翻译一点点\n  * 到过滤器翻译完毕\n  * 翻译一部分\n  * 中文翻译单独放\n  * 特性部分\n  * 再翻\n  * 翻译一点点\n\n0.27.7 / 2012-11-05\n==================\n\n  * fix each/else clause for enumerated objects\n  * fix #764 (incorrect line number for error messages)\n  * fix double-escaping of interpolated js slashes. Closes #784\n\n0.27.6 / 2012-10-05\n==================\n\n  * Included templates can not override blocks of their parent. Closes #699\n\n0.27.5 / 2012-09-24\n==================\n\n  * fix attr interpolation escaping. Closes #771\n\n0.27.4 / 2012-09-18\n==================\n\n  * fix include yields. Closes #770\n\n0.27.3 / 2012-09-18\n==================\n\n  * fix escaping of interpolation. Closes #769\n  * loosen \"mkdirp\" version restriction [TooTallNate]\n\n0.27.2 / 2012-08-07\n==================\n\n  * Revert \"fixing string interpolation escaping #731\", problems reported\n\n0.27.1 / 2012-08-06\n==================\n\n  * fix attribute interpolation escaping #731\n  * fix string interpolation escaping #731\n\n0.27.0 / 2012-07-26\n==================\n\n  * added ability to pass in json file to `--obj`\n  * add preliminary `each` `else` support. Closes #716\n  * fix doctype bug overlooked in #712\n  * fix stripping of utf-8 BOMs\n\n0.26.3 / 2012-06-25\n==================\n\n  * Update version of commander that supports node v0.8.\n\n0.26.2 / 2012-06-22\n==================\n\n  * Added --options alias of --obj\n  * Added reserved word conflict prevention in Google's Closure Compiler\n  * Added tag interpolation. Closes #657\n  * Allow the compiled client to use it's own pug util functions [3rd-Eden]\n  * Fixed `attrs()` escape bug [caseywebdev]\n\n0.26.1 / 2012-05-27\n==================\n\n  * Changed default doctype to __html5__\n  * Performance: statically compile attrs when possible [chowey]\n  * Fixed some class attribute merging cases\n  * Fixed so `block` doesn't consume `blockquotes` tag [chowey]\n  * Fixed backslashes in text nodes [chowey]\n  * Fixed / in text. Closes #638\n\n0.26.0 / 2012-05-04\n==================\n\n  * Added package.json __component__ support\n  * Added explicit self-closing tag support. Closes #605\n  * Added `block` statement\n  * Added mixin tag-like behaviour [chowey]\n  * Fixed mixins with extends [chowey]\n\n0.25.0 / 2012-04-18\n==================\n\n  * Added preliminary mixin block support. Closes #310\n  * Fixed whitespace handling in various situations [chowey]\n  * Fixed indentation in various situations [chowey]\n\n0.24.0 / 2012-04-12\n==================\n\n  * Fixed unescaped attribute compilation\n  * Fixed pretty-printing of text-only tags (__Warning__: this may affect rendering) [chowey]\n\n0.23.0 / 2012-04-11\n==================\n\n  * Added data-attr json stringification support. Closes #572\n  * Added unescaped attr support. Closes #198\n  * Fixed #1070, reverted mixin function statements\n  * Fixed pug.1 typo\n\n0.22.1 / 2012-04-04\n==================\n\n  * Fixed source tags. now self-closing. Closes #308\n  * Fixed: escape backslashes in coffeescript filter\n\n0.22.0 / 2012-03-22\n==================\n\n  * Added pug manpage (`man pug` after installation for docs)\n  * Added `-D, --no-debug` to pug(1)\n  * Added `-p, --pretty` to pug(1)\n  * Added `-c, --client` option to pug(1)\n  * Fixed `-o { client: true }` with stdin\n  * Fixed: skip blank lines in lexer (unless within pipeless text). Closes #399\n\n0.21.0 / 2012-03-10\n==================\n\n  * Added new input/output test suite using Mocha's string diffing\n  * Added alias `extend` -> `extends`. Closes #527 [guillermo]\n  * Fixed include escapes. Closes #513\n  * Fixed block-expansion with .foo and #foo short-hands. Closes #498\n\n0.20.3 / 2012-02-16\n==================\n\n  * Changed: pass `.filename` to filters only\n\n0.20.2 / 2012-02-16\n==================\n\n  * Fixed `:stylus` import capabilities, pass .filename\n\n0.20.1 / 2012-02-02\n==================\n\n  * Fixed Block#includeBlock() with textOnly blocks\n\n0.20.0 / 2011-12-28\n==================\n\n  * Added a browser example\n  * Added `yield` for block `include`s\n  * Changed: replaced internal `__` var with `__pug` [chrisleishman]\n  * Fixed two globals. Closes #433\n\n0.19.0 / 2011-12-02\n==================\n\n  * Added block `append` / `prepend` support. Closes #355\n  * Added link in readme to pug-mode for Emacs\n  * Added link to python implementation\n\n0.18.0 / 2011-11-21\n==================\n\n  * Changed: only ['script', 'style'] are text-only. Closes #398'\n\n0.17.0 / 2011-11-10\n==================\n\n  * pug.renderFile() is back! (for express 3.x)\n  * Fixed `Object.keys()` failover bug\n\n0.16.4 / 2011-10-24\n==================\n\n  * Fixed a test due to reserved keyword\n  * Fixed: commander 0.1.x dep for 0.5.x\n\n0.16.3 / 2011-10-24\n==================\n\n  * Added: allow leading space for conditional comments\n  * Added quick implementation of a switch statement\n  * Fixed parens in mixin args. Closes #380\n  * Fixed: include files with a .pug extension as pug files\n\n0.16.2 / 2011-09-30\n==================\n\n  * Fixed include regression. Closes #354\n\n0.16.1 / 2011-09-29\n==================\n\n  * Fixed unexpected `else` bug when compileDebug: false\n  * Fixed attr state issue for balancing pairs. Closes #353\n\n0.16.0 / 2011-09-26\n==================\n\n  * Added `include` block support. Closes #303\n  * Added template inheritance via `block` and `extends`. Closes #242\n  * Added 'type=\"text/css\"' to the style tags generated by filters.\n  * Added 'uglifyjs' as an explicit devDependency.\n  * Added  -p, --path <path> flag to pug(1)\n  * Added support for any arbitrary doctype\n  * Added `pug.render(str[,options], fn)` back\n  * Added first-class `while` support\n  * Added first-class assignment support\n  * Fixed runtime.js `Array.isArray()` polyfill. Closes #345\n  * Fixed: set .filename option in pug(1) when passing filenames\n  * Fixed `Object.keys()` polyfill typo. Closes #331\n  * Fixed `include` error context\n  * Renamed magic \"index\" to \"$index\". Closes #350\n\n0.15.4 / 2011-09-05\n==================\n\n  * Fixed script template html. Closes #316\n  * Revert \"Fixed script() tag with trailing \".\". Closes #314\"\n\n0.15.3 / 2011-08-30\n==================\n\n  * Added Makefile example. Closes #312\n  * Fixed script() tag with trailing \".\". Closes #314\n\n0.15.2 / 2011-08-26\n==================\n\n  * Fixed new conditional boundaries. Closes #307\n\n0.15.1 / 2011-08-26\n==================\n\n  * Fixed pug(1) support due to `res.render()` removal\n  * Removed --watch support (use a makefile + watch...)\n\n0.15.0 / 2011-08-26\n==================\n\n  * Added `client` option to reference runtime helpers\n  * Added `Array.isArray()` for runtime.js as well\n  * Added `Object.keys()` for the client-side runtime\n  * Added first-class `if`, `unless`, `else` and `else if` support\n  * Added first-class `each` / `for` support\n  * Added `make benchmark` for continuous-bench\n  * Removed `inline` option, SS helpers are no longer inlined either\n  * Removed `Parser#debug()`\n  * Removed `pug.render()` and `pug.renderFile()`\n  * Fixed runtime.js `escape()` bug causing window.escape to be used\n  * Fixed a bunch of tests\n\n0.14.2 / 2011-08-16\n==================\n\n  * Added `include` support for non-pug files\n  * Fixed code indentation when followed by newline(s). Closes #295 [reported by masylum]\n\n0.14.1 / 2011-08-14\n==================\n\n  * Added `colons` option for everyone stuck with \":\". Closes #231\n  * Optimization: consecutive lines are merged in compiled js\n\n0.14.0 / 2011-08-08\n==================\n\n  * Added array iteration with index example. Closes #276\n  * Added _runtime.js_\n  * Added `compileDebug` option to enable lineno instrumentation\n  * Added `inline` option to disable inlining of helpers (for client-side)\n\n0.13.0 / 2011-07-13\n==================\n\n  * Added `mixin` support\n  * Added `include` support\n  * Added array support for the class attribute\n\n0.12.4 / 2011-06-23\n==================\n\n  * Fixed filter indentation bug. Closes #243\n\n0.12.3 / 2011-06-21\n==================\n\n  * Fixed empty strings support. Closes #223\n  * Fixed conditional comments documentation. Closes #245\n\n0.12.2 / 2011-06-16\n==================\n\n  * Fixed `make test`\n  * Fixed block comments\n\n0.12.1 / 2011-06-04\n==================\n\n  * Fixed attribute interpolation with double quotes. Fixes #232 [topaxi]\n\n0.12.0 / 2011-06-03\n==================\n\n  * Added `doctype` as alias of `!!!`\n  * Added; doctype value is now case-insensitive\n  * Added attribute interpolation support\n  * Fixed; retain original indentation spaces in text blocks\n\n0.11.1 / 2011-06-01\n==================\n\n  * Fixed text block indentation [Laszlo Bacsi]\n  * Changed; utilizing devDependencies\n  * Fixed try/catch issue with renderFile(). Closes #227\n  * Removed attribute \":\" support, use \"=\" (option for ':' coming soon)\n\n0.11.0 / 2011-05-14\n==================\n\n  * Added `self` object to avoid poor `with(){}` performance [masylum]\n  * Added `doctype` option [Jeremy Larkin]\n\n0.10.7 / 2011-05-04\n==================\n\n  * expose Parser\n\n0.10.6 / 2011-04-29\n==================\n\n  * Fixed CS `Object.keys()` [reported by robholland]\n\n0.10.5 / 2011-04-26\n==================\n\n  * Added error context after the lineno\n  * Added; indicate failing lineno with \">\"\n  * Added `Object.keys()` for the client-side\n  * Fixed attr strings when containing the opposite quote. Closes 207\n  * Fixed attr issue with js expressions within strings\n  * Fixed single-quote filter escape bug. Closes #196\n\n\n0.10.4 / 2011-04-05\n==================\n\n  * Added `html` doctype, same as \"5\"\n  * Fixed `pre`, no longer text-only\n\n0.10.3 / 2011-03-30\n==================\n\n  * Fixed support for quoted attribute keys ex `rss(\"xmlns:atom\"=\"atom\")`\n\n0.10.2 / 2011-03-30\n==================\n\n  * Fixed pipeless text bug with missing outdent\n\n0.10.1 / 2011-03-28\n==================\n\n  * Fixed `support/compile.js` to exclude browser js in node\n  * Fixes for IE [Patrick Pfeiffer]\n\n0.10.0 / 2011-03-25\n==================\n\n  * Added AST-filter support back in the form of `<tag>[attrs]<:><block>`\n\n0.9.3 / 2011-03-24\n==================\n\n  * Added `Block#unshift(node)`\n  * Added `pug.js` for the client-side to the repo\n  * Added `pug.min.js` for the client-side to the repo\n  * Removed need for pipes in filters. Closes #185\n    Note that this _will_ break filters used to\n    manipulate the AST, until we have a different\n    syntax for doing so.\n\n0.9.2 / 2011-03-23\n==================\n\n  * Added pug `--version`\n  * Removed `${}` interpolation support, use `#{}`\n\n0.9.1 / 2011-03-16\n==================\n\n  * Fixed invalid `.map()` call due to recent changes\n\n0.9.0 / 2011-03-16\n==================\n\n  * Added client-side browser support via `make pug.js` and `make pug.min.js`.\n\n0.8.9 / 2011-03-15\n==================\n\n  * Fixed preservation of newlines in text blocks\n\n0.8.8 / 2011-03-14\n==================\n\n  * Fixed pug(1) stdio\n\n0.8.7  / 2011-03-14\n==================\n\n  * Added `mkdirs()` to pug(1)\n  * Added pug(1) stdio support\n  * Added new features to pug(1), `--watch`, recursive compilation etc [khingebjerg]\n  * Fixed pipe-less text newlines\n  * Removed pug(1) `--pipe` flag\n\n0.8.6 / 2011-03-11\n==================\n\n  * Fixed parenthesized expressions in attrs. Closes #170\n  * Changed; default interpolation values `== null` to ''. Closes #167\n\n0.8.5 / 2011-03-09\n==================\n\n  * Added pipe-less text support with immediate \".\". Closes #157\n  * Fixed object support in attrs\n  * Fixed array support for attrs\n\n0.8.4 / 2011-03-08\n==================\n\n  * Fixed issue with expressions being evaluated several times. closes #162\n\n0.8.2 / 2011-03-07\n==================\n\n  * Added markdown, discount, and markdown-js support to `:markdown`. Closes #160\n  * Removed `:discount`\n\n0.8.1 / 2011-03-04\n==================\n\n  * Added `pre` pipe-less text support (and auto-escaping)\n\n0.8.0 / 2011-03-04\n==================\n\n  * Added block-expansion support. Closes #74\n  * Added support for multi-line attrs without commas. Closes #65\n\n0.7.1 / 2011-03-04\n==================\n\n  * Fixed `script()` etc pipe-less text with attrs\n\n0.7.0 / 2011-03-04\n==================\n\n  * Removed `:javascript` filter (it doesn't really do anything special, use `script` tags)\n  * Added pipe-less text support. Tags that only accept text nodes (`script`, `textarea`, etc) do not require `|`.\n  * Added `:text` filter for ad-hoc pipe-less\n  * Added flexible indentation. Tabs, arbitrary number of spaces etc\n  * Added conditional-comment support. Closes #146\n  * Added block comment support\n  * Added rss example\n  * Added `:stylus` filter\n  * Added `:discount` filter\n  * Fixed; auto-detect xml and do not self-close tags. Closes #147\n  * Fixed whitespace issue. Closes #118\n  * Fixed attrs. `,`, `=`, and `:` within attr value strings are valid  Closes #133\n  * Fixed; only output \"\" when code == null. Ex: `span.name= user.name` when undefined or null will not output \"undefined\". Closes #130\n  * Fixed; throw on unexpected token instead of hanging\n\n0.6.3 / 2011-02-02\n==================\n\n  * Added `each` support for Array-like objects [guillermo]\n\n0.6.2 / 2011-02-02\n==================\n\n  * Added CSRF example, showing how you can transparently add inputs to a form\n  * Added link to vim-pug\n  * Fixed self-closing col support [guillermo]\n  * Fixed exception when getAttribute or removeAttribute run into removed attributes [Naitik Shah]\n\n0.6.0 / 2010-12-19\n==================\n\n  * Added unescaped interpolation variant `!{code}`. Closes #124\n  * Changed; escape interpolated code by default `#{code}`\n\n0.5.7 / 2010-12-08\n==================\n\n  * Fixed; hyphen in get `tag()`\n\n0.5.6 / 2010-11-24\n==================\n\n  * Added `exports.compile(str, options)`\n  * Renamed internal `_` to `__`, since `_()` is commonly used for translation\n\n0.5.5 / 2010-10-30\n==================\n\n  * Add _coffeescript_ filter [Michael Hampton]\n  * Added link to _slim_; a ruby implementation\n  * Fixed quoted attributes issue.\n\n  * Fixed attribute issue with over greedy regexp.\n    Previously \"p(foo=(((('bar')))))= ((('baz')))\"\n    would __fail__ for example since the regexp\n    would lookahead to far. Now we simply pair\n    the delimiters.\n\n0.5.4 / 2010-10-18\n==================\n\n  * Adding newline when using tag code when preceding text\n  * Assume newline in tag text when preceding text\n  * Changed; retain leading text whitespace\n  * Fixed code block support to prevent multiple buffer openings [Jake Luer]\n  * Fixed nested filter support\n\n0.5.3 / 2010-10-06\n==================\n\n  * Fixed bug when tags with code also have a block [reported by chrisirhc]\n\n0.5.2 / 2010-10-05\n==================\n\n  * Added; Text introduces newlines to mimic the grammar.\n    Whitespace handling is a little tricky with this sort of grammar.\n    Pug will now mimic the written grammar, meaning that text blocks\n    using the \"|\" margin character will introduce a literal newline,\n    where as immediate tag text (ex \"a(href='#') Link\") will not.\n\n    This may not be ideal, but it makes more sense than what Pug was\n    previously doing.\n\n  * Added `Tag#text` to disambiguate between immediate / block text\n  * Removed _pretty_ option (was kinda useless in the state it was in)\n  * Reverted ignoring of newlines. Closes #92.\n  * Fixed; `Parser#parse()` ignoring newlines\n\n0.5.1 / 2010-10-04\n==================\n\n  * Added many examples\n  * Added; compiler api is now public\n  * Added; filters can accept / manipulate the parse tree\n  * Added filter attribute support. Closes #79\n  * Added LL(*) capabilities\n  * Performance; wrapping code blocks in {} instead of `(function(){}).call(this)`\n  * Performance; Optimized attribute buffering\n  * Fixed trailing newlines in blocks\n\n0.5.0 / 2010-09-11\n==================\n\n  * __Major__ refactor. Logic now separated into lexer/parser/compiler for future extensibility.\n  * Added _pretty_ option\n  * Added parse tree output for _debug_ option\n  * Added new examples\n  * Removed _context_ option, use _scope_\n\n0.4.1 / 2010-09-09\n==================\n\n  * Added support for arbitrary indentation for single-line comments. Closes #71\n  * Only strip first space in text (ex '|  foo' will buffer ' foo')\n\n0.4.0 / 2010-08-30\n==================\n\n  * Added tab naive support (tabs are converted to a single indent, aka two spaces). Closes #24\n  * Added unbuffered comment support. Closes #62\n  * Added hyphen support for tag names, ex: \"fb:foo-bar\"\n  * Fixed bug with single quotes in comments. Closes #61\n  * Fixed comment whitespace issue, previously padding. Closes #55\n\n0.3.0 / 2010-08-04\n==================\n\n  * Added single line comment support. Closes #25\n  * Removed CDATA from _:javascript_ filter. Closes #47\n  * Removed _sys_ local\n  * Fixed code following tag\n\n0.2.4 / 2010-08-02\n==================\n\n  * Added Buffer support to `render()`\n  * Fixed filter text block exception reporting\n  * Fixed tag exception reporting\n\n0.2.3 / 2010-07-27\n==================\n\n  * Fixed newlines before block\n  * Fixed; tag text allowing arbitrary trailing whitespace\n\n0.2.2 / 2010-07-16\n==================\n\n  * Added support for `pug.renderFile()` to utilize primed cache\n  * Added link to [textmate bundle](http://github.com/miksago/pug-tmbundle)\n  * Fixed filter issue with single quotes\n  * Fixed hyphenated attr bug\n  * Fixed interpolation single quotes. Closes #28\n  * Fixed issue with comma in attrs\n\n0.2.1 / 2010-07-09\n==================\n\n  * Added support for node-discount and markdown-js\n    depending on which is available.\n\n  * Added support for tags to have blocks _and_ text.\n    this kinda fucks with arbitrary whitespace unfortunately,\n    but also fixes trailing spaces after tags _with_ blocks.\n\n  * Caching generated functions. Closes #46\n\n0.2.0 / 2010-07-08\n==================\n\n  * Added `- each` support for readable iteration\n  * Added [markdown-js](http://github.com/evilstreak/markdown-js) support (no compilation required)\n  * Removed node-discount support\n\n0.1.0 / 2010-07-05\n==================\n\n  * Added `${}` support for interpolation. Closes #45\n  * Added support for quoted attr keys: `label(\"for\": 'something')` is allowed (_although not required_) [Guillermo]\n  * Added `:less` filter [jakeluer]\n\n0.0.2 / 2010-07-03\n==================\n\n  * Added `context` as synonym for `scope` option [Guillermo]\n  * Fixed attr splitting: `div(style:\"color: red\")` is now allowed\n  * Fixed issue with `(` and `)` within attrs: `a(class: (a ? 'a' : 'b'))` is now allowed\n  * Fixed issue with leading / trailing spaces in attrs: `a( href=\"#\" )` is now allowed [Guillermo]\n\n"
  },
  {
    "path": "packages/pug/LICENSE",
    "content": "(The MIT License)\n\nCopyright (c) 2009-2014 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n'Software'), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "packages/pug/README.md",
    "content": "<!-- Coppied from root directory -->\n\n<a href=\"https://pugjs.org\"><img src=\"https://cdn.rawgit.com/pugjs/pug-logo/eec436cee8fd9d1726d7839cbe99d1f694692c0c/SVG/pug-final-logo-_-colour-128.svg\" height=\"200\" align=\"right\"></a>\n# Pug\n\nFull documentation is at [pugjs.org](https://pugjs.org/)\n\n Pug is a high performance template engine heavily influenced by [Haml](http://haml.info/)\n and implemented with JavaScript for [Node.js](http://nodejs.org) and browsers. For bug reports,\n feature requests and questions, [open an issue](https://github.com/pugjs/pug/issues/new).\n For discussion join the [chat room](https://gitter.im/pugjs/pug).\n\n You can test drive Pug online [here](https://pugjs.org/).\n\n [![Build Status](https://img.shields.io/travis/pugjs/pug/master.svg?style=flat)](https://travis-ci.org/pugjs/pug)\n [![Coverage Status](https://img.shields.io/coveralls/pugjs/pug/master.svg?style=flat)](https://coveralls.io/r/pugjs/pug?branch=master)\n [![Dependency Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug)](https://david-dm.org/pugjs/pug?path=packages/pug)\n [![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug)](https://david-dm.org/pugjs/pug?path=packages/pug&type=dev)\n [![NPM version](https://img.shields.io/npm/v/pug.svg?style=flat)](https://www.npmjs.com/package/pug)\n [![Join Gitter Chat](https://img.shields.io/badge/gitter-join%20chat%20%E2%86%92-brightgreen.svg?style=flat)](https://gitter.im/pugjs/pug?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\n## Rename from \"Jade\"\n\nThis project was formerly known as \"Jade.\" However, it has been revealed to us that \"Jade\" is a registered trademark, and as a result a rename is needed. After some discussion among the maintainers, **\"Pug\"** has been chosen as the new name for this project. The next major version will carry \"pug\" as the package name.\n\nIf your package or app currently uses `jade`, don't worry: we have secured permissions to continue to occupy that package name, although all new versions will be released under `pug`.\n\nBefore the renaming, we had already begun working on an incompatible Jade 2.0.0. We have then made it so that this new major version bump will coincide with the rename to Pug. Therefore, upgrading from Jade to Pug will be the same process as upgrading any other package with a major version bump. Currently, Pug 2.0.0 is still under beta stage, and there are several syntactic differences we have deprecated and removed. Such differences are documented at [#2305](https://github.com/pugjs/pug/issues/2305).\n\nThe website and documentation for Pug are still being updated, but if you are new to Pug, you should get started with the new syntax and install the Pug package on npm.\n\n## Installation\n\n### Package\n\nvia npm:\n\n```bash\n$ npm install pug\n```\n\n### Command Line\n\nAfter installing the latest version of [Node.js](http://nodejs.org/), install with:\n\n```bash\n$ npm install pug-cli -g\n```\n\nand run with\n\n```bash\n$ pug --help\n```\n\n## Syntax\n\nPug is a clean, whitespace sensitive syntax for writing html.  Here is a simple example:\n\n```pug\ndoctype html\nhtml(lang=\"en\")\n  head\n    title= pageTitle\n    script(type='text/javascript').\n      if (foo) bar(1 + 5)\n  body\n    h1 Pug - node template engine\n    #container.col\n      if youAreUsingPug\n        p You are amazing\n      else\n        p Get on it!\n      p.\n        Pug is a terse and simple templating language with a\n        strong focus on performance and powerful features.\n```\n\nbecomes\n\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Pug</title>\n    <script type=\"text/javascript\">\n      if (foo) bar(1 + 5)\n    </script>\n  </head>\n  <body>\n    <h1>Pug - node template engine</h1>\n    <div id=\"container\" class=\"col\">\n      <p>You are amazing</p>\n      <p>Pug is a terse and simple templating language with a strong focus on performance and powerful features.</p>\n    </div>\n  </body>\n</html>\n```\n\n## API\n\nFor full API, see [pugjs.org/api/reference.html](https://pugjs.org/api/reference.html)\n\n```js\nvar pug = require('pug');\n\n// compile\nvar fn = pug.compile('string of pug', options);\nvar html = fn(locals);\n\n// render\nvar html = pug.render('string of pug', merge(options, locals));\n\n// renderFile\nvar html = pug.renderFile('filename.pug', merge(options, locals));\n```\n\n### Options\n\n - `filename`  Used in exceptions, and required when using includes\n - `compileDebug`  When `false` no debug instrumentation is compiled\n - `pretty`    Add pretty-indentation whitespace to output _(false by default)_\n\n## Browser Support\n\n The latest version of pug can be download for the browser in standalone form from [here](https://pugjs.org/js/pug.js).  It only supports the very latest browsers though, and is a large file.  It is recommended that you pre-compile your pug templates to JavaScript.\n\n To compile a template for use on the client using the command line, do:\n\n```bash\n$ pug --client --no-debug filename.pug\n```\n\nwhich will produce `filename.js` containing the compiled template.\n\n## Additional Resources\n\nTutorials:\n\n  - cssdeck interactive [Pug syntax tutorial](http://cssdeck.com/labs/learning-the-jade-templating-engine-syntax)\n  - cssdeck interactive [Pug logic tutorial](http://cssdeck.com/labs/jade-templating-tutorial-codecast-part-2)\n  - [Pug について。](https://gist.github.com/japboy/5402844) (A Japanese Tutorial)\n\nImplementations in other languages:\n\n  - [Larpug - Pug for Laravel](https://github.com/acidjazz/larpug)\n  - [php](https://github.com/pug-php/pug)\n  - [scala](https://scalate.github.io/scalate/documentation/scaml-reference.html)\n  - [ruby](https://github.com/slim-template/slim)\n  - [python](https://github.com/SyrusAkbary/pyjade)\n  - [java](https://github.com/neuland/jade4j)\n\nOther:\n\n  - [Emacs Mode](https://github.com/brianc/jade-mode)\n  - [Vim Syntax](https://github.com/digitaltoad/vim-pug)\n  - [TextMate Bundle](http://github.com/miksago/jade-tmbundle)\n  - [Coda/SubEtha syntax Mode](https://github.com/aaronmccall/jade.mode)\n  - [html2pug](https://github.com/donpark/html2jade) converter\n  - [pug2php](https://github.com/SE7ENSKY/jade2php) converter\n  - [Pug Server](https://github.com/ded/jade-server)  Ideal for building local prototypes apart from any application\n  - [pug-ruby](https://github.com/yivo/pug-ruby) gem: Allows to invoke Pug and Jade from Ruby\n  - [pug-rails](https://github.com/yivo/pug-rails) gem: Integrates Pug and Jade into your Rails application\n\n## License\n\nMIT\n"
  },
  {
    "path": "packages/pug/examples/README.md",
    "content": "The examples in this directory can be run simply by something like. \n\n    node attributes.js\n\nYou can also open `browser.html` in a browser.\n"
  },
  {
    "path": "packages/pug/examples/attributes.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/attributes.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nconsole.log(fn({name: 'tj'}));\n"
  },
  {
    "path": "packages/pug/examples/attributes.pug",
    "content": "div#id.left.container(class='user user-' + name)\n  h1.title= name\n  form\n    //- unbuffered comment :)\n    // An example of attributes.\n    input(type='text' name='user[name]' value=name)\n    input(checked, type='checkbox', name='user[blocked]')\n    input(type='submit', value='Update')"
  },
  {
    "path": "packages/pug/examples/code.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/code.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nvar users = {\n  tj: {age: 23, email: 'tj@vision-media.ca', isA: 'human'},\n  tobi: {age: 1, email: 'tobi@is-amazing.com', isA: 'ferret'},\n};\n\nconsole.log(fn({users: users}));\n"
  },
  {
    "path": "packages/pug/examples/code.pug",
    "content": "\n- var title = \"Things\"\n\n-\n  var subtitle = [\"Really\",  \"long\",\n                  \"list\", \"of\",\n                  \"words\"]\nh1= title\nh2= subtitle.join(\" \")\n\nul#users\n  each user, name in users\n    // expands to if (user.isA == 'ferret')\n    if user.isA == 'ferret'\n      li(class='user-' + name) #{name} is just a ferret\n    else\n      li(class='user-' + name) #{name} #{user.email}"
  },
  {
    "path": "packages/pug/examples/dynamicscript.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../');\n\nvar locals = {\n  users: {\n    tj: {age: 23, email: 'tj@vision-media.ca', isA: 'human'},\n    tobi: {age: 1, email: 'tobi@is-amazing.com', isA: 'ferret'},\n  },\n};\n\nvar fn = pug.compileFile(__dirname + '/dynamicscript.pug');\nconsole.log(fn(locals));\n"
  },
  {
    "path": "packages/pug/examples/dynamicscript.pug",
    "content": "html\n  head\n    title Dynamic Inline JavaScript\n    script.\n      var users = !{JSON.stringify(users).replace(/<\\//g, \"<\\\\/\")}\n"
  },
  {
    "path": "packages/pug/examples/each.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/each.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nvar users = {\n  tj: {age: 23, email: 'tj@vision-media.ca', isA: 'human'},\n  tobi: {age: 1, email: 'tobi@is-amazing.com', isA: 'ferret'},\n};\n\nconsole.log(fn({users: users}));\n"
  },
  {
    "path": "packages/pug/examples/each.pug",
    "content": "ul#users\n  each user, name in users\n    li(class='user-' + name) #{name} #{user.email}"
  },
  {
    "path": "packages/pug/examples/extend-layout.pug",
    "content": "html\n  head\n    h1 My Site - #{title}\n    block scripts\n      script(src='/jquery.js')\n  body\n    block content\n    block foot\n      #footer\n        p some footer content"
  },
  {
    "path": "packages/pug/examples/extend.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/extend.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nvar tobi = {name: 'tobi', age: 2};\nvar loki = {name: 'loki', age: 1};\nvar jane = {name: 'jane', age: 5};\n\nconsole.log(\n  fn({\n    title: 'pets',\n    pets: [tobi, loki, jane],\n  })\n);\n"
  },
  {
    "path": "packages/pug/examples/extend.pug",
    "content": "\nextends extend-layout.pug\n\nblock scripts\n  script(src='/jquery.js')\n  script(src='/pets.js')\n\nblock content\n  h1= title\n  each pet in pets\n    include pet.pug\n"
  },
  {
    "path": "packages/pug/examples/form.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/form.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nvar user = {\n  name: 'TJ',\n  email: 'tj@vision-media.ca',\n  city: 'Victoria',\n  province: 'BC',\n};\n\nconsole.log(fn({user: user}));\n"
  },
  {
    "path": "packages/pug/examples/form.pug",
    "content": "form(method=\"post\")\n  fieldset\n    legend General\n    p\n      label(for=\"user[name]\") Username:\n        input(type=\"text\", name=\"user[name]\", value=user.name)\n    p\n      label(for=\"user[email]\") Email:\n        input(type=\"text\", name=\"user[email]\", value=user.email)\n        .tip.\n          Enter a valid \n          email address \n          such as <em>tj@vision-media.ca</em>.\n  fieldset\n    legend Location\n    p\n      label(for=\"user[city]\") City:\n        input(type=\"text\", name=\"user[city]\", value=user.city)\n    p\n      select(name=\"user[province]\")\n        option(value=\"\") -- Select Province --\n        option(value=\"AB\") Alberta\n        option(value=\"BC\") British Columbia\n        option(value=\"SK\") Saskatchewan\n        option(value=\"MB\") Manitoba\n        option(value=\"ON\") Ontario\n        option(value=\"QC\") Quebec\n  p.buttons\n    input(type=\"submit\", value=\"Save\")"
  },
  {
    "path": "packages/pug/examples/includes/foot.pug",
    "content": "#footer\n  p Copyright (c) foobar"
  },
  {
    "path": "packages/pug/examples/includes/head.pug",
    "content": "head\n  title My Site\n  // including other pug works\n  include scripts.pug\n  // including .html, .css, etc works\n  include style.css\n"
  },
  {
    "path": "packages/pug/examples/includes/scripts.pug",
    "content": "script(src='/javascripts/jquery.js')\nscript(src='/javascripts/app.js')\n"
  },
  {
    "path": "packages/pug/examples/includes/style.css",
    "content": "<style>\n  body {\n    padding: 50px;\n  }\n</style>"
  },
  {
    "path": "packages/pug/examples/includes.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/includes.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nconsole.log(fn());\n"
  },
  {
    "path": "packages/pug/examples/includes.pug",
    "content": "\nhtml\n  include includes/head.pug\n  body\n    h1 My Site\n    p Welcome to my super lame site.\n    include includes/foot.pug\n"
  },
  {
    "path": "packages/pug/examples/layout-debug.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../');\n\npug.renderFile(__dirname + '/layout.pug', {debug: true}, function(err, html) {\n  if (err) throw err;\n  console.log(html);\n});\n"
  },
  {
    "path": "packages/pug/examples/layout.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/layout.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nconsole.log(fn());\n"
  },
  {
    "path": "packages/pug/examples/layout.pug",
    "content": "doctype html\nhtml(lang=\"en\")\n  head\n    title Example\n    script.\n      if (foo) {\n        bar();\n      }\n  body\n    h1 Pug - node template engine\n    #container\n      :markdown-it\n        Pug is a _high performance_ template engine for [node](http://nodejs.org),\n        inspired by [haml](http://haml-lang.com/), and written by [TJ Holowaychuk](http://github.com/visionmedia).\n"
  },
  {
    "path": "packages/pug/examples/mixins/dialog.pug",
    "content": "\nmixin dialog\n  .dialog\n    h1 Whoop\n    p stuff\n\nmixin dialog-title(title)\n  .dialog\n    h1= title\n    p stuff\n\nmixin dialog-title-desc(title, desc)\n  .dialog\n    h1= title\n    p= desc\n"
  },
  {
    "path": "packages/pug/examples/mixins/profile.pug",
    "content": "\nmixin pets(pets)\n  ul.pets\n    each pet in pets\n      li= pet\n\nmixin profile(user)\n  .user\n    h2= user.name\n    +pets(user.pets)\n"
  },
  {
    "path": "packages/pug/examples/mixins.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/mixins.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nvar user = {\n  name: 'tj',\n  pets: ['tobi', 'loki', 'jane', 'manny'],\n};\n\nconsole.log(fn({user: user}));\n"
  },
  {
    "path": "packages/pug/examples/mixins.pug",
    "content": "include mixins/dialog.pug\ninclude mixins/profile.pug\n\n.one\n  +dialog\n\n.two\n  +dialog-title('Whoop')\n\n.three\n  +dialog-title-desc('Whoop', 'Just a mixin')\n\n#profile\n  +profile(user)\n"
  },
  {
    "path": "packages/pug/examples/pet.pug",
    "content": ".pet\n  h2= pet.name\n  p #{pet.name} is <em>#{pet.age}</em> year(s) old."
  },
  {
    "path": "packages/pug/examples/rss.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/rss.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nvar items = [];\n\nitems.push({\n  title: 'Example',\n  description: 'Something',\n  link: 'http://google.com',\n});\nitems.push({\n  title: 'LearnBoost',\n  description: 'Cool',\n  link: 'http://learnboost.com',\n});\nitems.push({\n  title: 'Express',\n  description: 'Cool',\n  link: 'http://expressjs.com',\n});\n\nconsole.log(fn({items: items}));\n"
  },
  {
    "path": "packages/pug/examples/rss.pug",
    "content": "doctype xml\nrss(version='2.0')\nchannel\n  title RSS Title\n  description Some description here\n  link http://google.com\n  lastBuildDate Mon, 06 Sep 2010 00:01:00 +0000\n  pubDate Mon, 06 Sep 2009 16:45:00 +0000\n\n  each item in items\n    item\n      title= item.title\n      description= item.description\n      link= item.link\n"
  },
  {
    "path": "packages/pug/examples/text.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/text.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nconsole.log(fn({name: 'tj', email: 'tj@vision-media.ca'}));\n"
  },
  {
    "path": "packages/pug/examples/text.pug",
    "content": "| An example of an\na(href='#') inline\n| link.\n\nform\n  label Username:\n    input(type='text', name='user[name]')\n    p\n      | Just an example of some text usage.\n      | You can have <em>inline</em> html,\n      | as well as\n      strong tags\n      | .\n\n      | Interpolation is also supported. The \n      | username is currently \"#{name}\".\n\n  label Email:\n    input(type='text', name='user[email]')\n    p\n      | Email is currently\n      em= email\n      | .\n\n  // alternatively, if we plan on having only\n  // text or inline-html, we can use a trailing\n  // \".\" to let pug know we want to omit pipes\n  \n  label Username:\n    input(type='text')\n    p.\n      Just an example, like before\n      however now we can omit those\n      annoying pipes!.\n      \n      Wahoo."
  },
  {
    "path": "packages/pug/examples/whitespace.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../'),\n  path = __dirname + '/whitespace.pug',\n  str = require('fs').readFileSync(path, 'utf8'),\n  fn = pug.compile(str, {filename: path, pretty: true});\n\nconsole.log(fn());\n"
  },
  {
    "path": "packages/pug/examples/whitespace.pug",
    "content": "- var js = '<script></script>'\ndoctype html\nhtml\n \n  head\n    title= \"Some \" + \"JavaScript\"\n    != js\n   \n   \n     \n  body    "
  },
  {
    "path": "packages/pug/lib/index.js",
    "content": "'use strict';\n\n/*!\n * Pug\n * Copyright(c) 2010 TJ Holowaychuk <tj@vision-media.ca>\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar fs = require('fs');\nvar path = require('path');\nvar lex = require('pug-lexer');\nvar stripComments = require('pug-strip-comments');\nvar parse = require('pug-parser');\nvar load = require('pug-load');\nvar filters = require('pug-filters');\nvar link = require('pug-linker');\nvar generateCode = require('pug-code-gen');\nvar runtime = require('pug-runtime');\nvar runtimeWrap = require('pug-runtime/wrap');\n\n/**\n * Name for detection\n */\n\nexports.name = 'Pug';\n\n/**\n * Pug runtime helpers.\n */\n\nexports.runtime = runtime;\n\n/**\n * Template function cache.\n */\n\nexports.cache = {};\n\nfunction applyPlugins(value, options, plugins, name) {\n  return plugins.reduce(function(value, plugin) {\n    return plugin[name] ? plugin[name](value, options) : value;\n  }, value);\n}\n\nfunction findReplacementFunc(plugins, name) {\n  var eligiblePlugins = plugins.filter(function(plugin) {\n    return plugin[name];\n  });\n\n  if (eligiblePlugins.length > 1) {\n    throw new Error('Two or more plugins all implement ' + name + ' method.');\n  } else if (eligiblePlugins.length) {\n    return eligiblePlugins[0][name].bind(eligiblePlugins[0]);\n  }\n  return null;\n}\n\n/**\n * Object for global custom filters.  Note that you can also just pass a `filters`\n * option to any other method.\n */\nexports.filters = {};\n\n/**\n * Compile the given `str` of pug and return a function body.\n *\n * @param {String} str\n * @param {Object} options\n * @return {Object}\n * @api private\n */\n\nfunction compileBody(str, options) {\n  var debug_sources = {};\n  debug_sources[options.filename] = str;\n  var dependencies = [];\n  var plugins = options.plugins || [];\n  var ast = load.string(str, {\n    filename: options.filename,\n    basedir: options.basedir,\n    lex: function(str, options) {\n      var lexOptions = {};\n      Object.keys(options).forEach(function(key) {\n        lexOptions[key] = options[key];\n      });\n      lexOptions.plugins = plugins\n        .filter(function(plugin) {\n          return !!plugin.lex;\n        })\n        .map(function(plugin) {\n          return plugin.lex;\n        });\n      var contents = applyPlugins(\n        str,\n        {filename: options.filename},\n        plugins,\n        'preLex'\n      );\n      return applyPlugins(\n        lex(contents, lexOptions),\n        options,\n        plugins,\n        'postLex'\n      );\n    },\n    parse: function(tokens, options) {\n      tokens = tokens.map(function(token) {\n        if (token.type === 'path' && path.extname(token.val) === '') {\n          return {\n            type: 'path',\n            loc: token.loc,\n            val: token.val + '.pug',\n          };\n        }\n        return token;\n      });\n      tokens = stripComments(tokens, options);\n      tokens = applyPlugins(tokens, options, plugins, 'preParse');\n      var parseOptions = {};\n      Object.keys(options).forEach(function(key) {\n        parseOptions[key] = options[key];\n      });\n      parseOptions.plugins = plugins\n        .filter(function(plugin) {\n          return !!plugin.parse;\n        })\n        .map(function(plugin) {\n          return plugin.parse;\n        });\n\n      return applyPlugins(\n        applyPlugins(\n          parse(tokens, parseOptions),\n          options,\n          plugins,\n          'postParse'\n        ),\n        options,\n        plugins,\n        'preLoad'\n      );\n    },\n    resolve: function(filename, source, loadOptions) {\n      var replacementFunc = findReplacementFunc(plugins, 'resolve');\n      if (replacementFunc) {\n        return replacementFunc(filename, source, options);\n      }\n\n      return load.resolve(filename, source, loadOptions);\n    },\n    read: function(filename, loadOptions) {\n      dependencies.push(filename);\n\n      var contents;\n\n      var replacementFunc = findReplacementFunc(plugins, 'read');\n      if (replacementFunc) {\n        contents = replacementFunc(filename, options);\n      } else {\n        contents = load.read(filename, loadOptions);\n      }\n\n      debug_sources[filename] = Buffer.isBuffer(contents)\n        ? contents.toString('utf8')\n        : contents;\n      return contents;\n    },\n  });\n  ast = applyPlugins(ast, options, plugins, 'postLoad');\n  ast = applyPlugins(ast, options, plugins, 'preFilters');\n\n  var filtersSet = {};\n  Object.keys(exports.filters).forEach(function(key) {\n    filtersSet[key] = exports.filters[key];\n  });\n  if (options.filters) {\n    Object.keys(options.filters).forEach(function(key) {\n      filtersSet[key] = options.filters[key];\n    });\n  }\n  ast = filters.handleFilters(\n    ast,\n    filtersSet,\n    options.filterOptions,\n    options.filterAliases\n  );\n\n  ast = applyPlugins(ast, options, plugins, 'postFilters');\n  ast = applyPlugins(ast, options, plugins, 'preLink');\n  ast = link(ast);\n  ast = applyPlugins(ast, options, plugins, 'postLink');\n\n  // Compile\n  ast = applyPlugins(ast, options, plugins, 'preCodeGen');\n  var js = (findReplacementFunc(plugins, 'generateCode') || generateCode)(ast, {\n    pretty: options.pretty,\n    compileDebug: options.compileDebug,\n    doctype: options.doctype,\n    inlineRuntimeFunctions: options.inlineRuntimeFunctions,\n    globals: options.globals,\n    self: options.self,\n    includeSources: options.includeSources ? debug_sources : false,\n    templateName: options.templateName,\n  });\n  js = applyPlugins(js, options, plugins, 'postCodeGen');\n\n  // Debug compiler\n  if (options.debug) {\n    console.error(\n      '\\nCompiled Function:\\n\\n\\u001b[90m%s\\u001b[0m',\n      js.replace(/^/gm, '  ')\n    );\n  }\n\n  return {body: js, dependencies: dependencies};\n}\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `str` is not set, the file specified in `options.filename` will be read.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @param {Object} options\n * @param {String=} str\n * @return {Function}\n * @api private\n */\nfunction handleTemplateCache(options, str) {\n  var key = options.filename;\n  if (options.cache && exports.cache[key]) {\n    return exports.cache[key];\n  } else {\n    if (str === undefined) str = fs.readFileSync(options.filename, 'utf8');\n    var templ = exports.compile(str, options);\n    if (options.cache) exports.cache[key] = templ;\n    return templ;\n  }\n}\n\n/**\n * Compile a `Function` representation of the given pug `str`.\n *\n * Options:\n *\n *   - `compileDebug` when `false` debugging code is stripped from the compiled\n       template, when it is explicitly `true`, the source code is included in\n       the compiled template for better accuracy.\n *   - `filename` used to improve errors when `compileDebug` is not `false` and to resolve imports/extends\n *\n * @param {String} str\n * @param {Options} options\n * @return {Function}\n * @api public\n */\n\nexports.compile = function(str, options) {\n  var options = options || {};\n\n  str = String(str);\n\n  var parsed = compileBody(str, {\n    compileDebug: options.compileDebug !== false,\n    filename: options.filename,\n    basedir: options.basedir,\n    pretty: options.pretty,\n    doctype: options.doctype,\n    inlineRuntimeFunctions: options.inlineRuntimeFunctions,\n    globals: options.globals,\n    self: options.self,\n    includeSources: options.compileDebug === true,\n    debug: options.debug,\n    templateName: 'template',\n    filters: options.filters,\n    filterOptions: options.filterOptions,\n    filterAliases: options.filterAliases,\n    plugins: options.plugins,\n  });\n\n  var res = options.inlineRuntimeFunctions\n    ? new Function('', parsed.body + ';return template;')()\n    : runtimeWrap(parsed.body);\n\n  res.dependencies = parsed.dependencies;\n\n  return res;\n};\n\n/**\n * Compile a JavaScript source representation of the given pug `str`.\n *\n * Options:\n *\n *   - `compileDebug` When it is `true`, the source code is included in\n *     the compiled template for better error messages.\n *   - `filename` used to improve errors when `compileDebug` is not `true` and to resolve imports/extends\n *   - `name` the name of the resulting function (defaults to \"template\")\n *   - `module` when it is explicitly `true`, the source code include export module syntax\n *\n * @param {String} str\n * @param {Options} options\n * @return {Object}\n * @api public\n */\n\nexports.compileClientWithDependenciesTracked = function(str, options) {\n  var options = options || {};\n\n  str = String(str);\n  var parsed = compileBody(str, {\n    compileDebug: options.compileDebug,\n    filename: options.filename,\n    basedir: options.basedir,\n    pretty: options.pretty,\n    doctype: options.doctype,\n    inlineRuntimeFunctions: options.inlineRuntimeFunctions !== false,\n    globals: options.globals,\n    self: options.self,\n    includeSources: options.compileDebug,\n    debug: options.debug,\n    templateName: options.name || 'template',\n    filters: options.filters,\n    filterOptions: options.filterOptions,\n    filterAliases: options.filterAliases,\n    plugins: options.plugins,\n  });\n\n  var body = parsed.body;\n\n  if (options.module) {\n    if (options.inlineRuntimeFunctions === false) {\n      body = 'var pug = require(\"pug-runtime\");' + body;\n    }\n    body += ' module.exports = ' + (options.name || 'template') + ';';\n  }\n\n  return {body: body, dependencies: parsed.dependencies};\n};\n\n/**\n * Compile a JavaScript source representation of the given pug `str`.\n *\n * Options:\n *\n *   - `compileDebug` When it is `true`, the source code is included in\n *     the compiled template for better error messages.\n *   - `filename` used to improve errors when `compileDebug` is not `true` and to resolve imports/extends\n *   - `name` the name of the resulting function (defaults to \"template\")\n *\n * @param {String} str\n * @param {Options} options\n * @return {String}\n * @api public\n */\nexports.compileClient = function(str, options) {\n  return exports.compileClientWithDependenciesTracked(str, options).body;\n};\n\n/**\n * Compile a `Function` representation of the given pug file.\n *\n * Options:\n *\n *   - `compileDebug` when `false` debugging code is stripped from the compiled\n       template, when it is explicitly `true`, the source code is included in\n       the compiled template for better accuracy.\n *\n * @param {String} path\n * @param {Options} options\n * @return {Function}\n * @api public\n */\nexports.compileFile = function(path, options) {\n  options = options || {};\n  options.filename = path;\n  return handleTemplateCache(options);\n};\n\n/**\n * Render the given `str` of pug.\n *\n * Options:\n *\n *   - `cache` enable template caching\n *   - `filename` filename required for `include` / `extends` and caching\n *\n * @param {String} str\n * @param {Object|Function} options or fn\n * @param {Function|undefined} fn\n * @returns {String}\n * @api public\n */\n\nexports.render = function(str, options, fn) {\n  // support callback API\n  if ('function' == typeof options) {\n    (fn = options), (options = undefined);\n  }\n  if (typeof fn === 'function') {\n    var res;\n    try {\n      res = exports.render(str, options);\n    } catch (ex) {\n      return fn(ex);\n    }\n    return fn(null, res);\n  }\n\n  options = options || {};\n\n  // cache requires .filename\n  if (options.cache && !options.filename) {\n    throw new Error('the \"filename\" option is required for caching');\n  }\n\n  return handleTemplateCache(options, str)(options);\n};\n\n/**\n * Render a Pug file at the given `path`.\n *\n * @param {String} path\n * @param {Object|Function} options or callback\n * @param {Function|undefined} fn\n * @returns {String}\n * @api public\n */\n\nexports.renderFile = function(path, options, fn) {\n  // support callback API\n  if ('function' == typeof options) {\n    (fn = options), (options = undefined);\n  }\n  if (typeof fn === 'function') {\n    var res;\n    try {\n      res = exports.renderFile(path, options);\n    } catch (ex) {\n      return fn(ex);\n    }\n    return fn(null, res);\n  }\n\n  options = options || {};\n\n  options.filename = path;\n  return handleTemplateCache(options)(options);\n};\n\n/**\n * Compile a Pug file at the given `path` for use on the client.\n *\n * @param {String} path\n * @param {Object} options\n * @returns {String}\n * @api public\n */\n\nexports.compileFileClient = function(path, options) {\n  var key = path + ':client';\n  options = options || {};\n\n  options.filename = path;\n\n  if (options.cache && exports.cache[key]) {\n    return exports.cache[key];\n  }\n\n  var str = fs.readFileSync(options.filename, 'utf8');\n  var out = exports.compileClient(str, options);\n  if (options.cache) exports.cache[key] = out;\n  return out;\n};\n\n/**\n * Express support.\n */\n\nexports.__express = function(path, options, fn) {\n  if (\n    options.compileDebug == undefined &&\n    process.env.NODE_ENV === 'production'\n  ) {\n    options.compileDebug = false;\n  }\n  exports.renderFile(path, options, fn);\n};\n"
  },
  {
    "path": "packages/pug/package.json",
    "content": "{\n  \"name\": \"pug\",\n  \"description\": \"A clean, whitespace-sensitive template language for writing HTML\",\n  \"keywords\": [\n    \"html\",\n    \"jade\",\n    \"pug\",\n    \"template\"\n  ],\n  \"version\": \"2.0.4\",\n  \"author\": \"TJ Holowaychuk <tj@vision-media.ca>\",\n  \"maintainers\": [\n    \"Forbes Lindesay <forbes@lindesay.co.uk>\",\n    \"Matthias Le Brun <mlbli@me.com>\",\n    \"Joshua Appelman <joshua@jbna.nl>\",\n    \"Jonathan Ong <jonathanrichardong@gmail.com>\",\n    \"Alex Kocharin <alex@kocharin.ru>\",\n    \"Hemanth <hemanth.hm@gmail.com>\",\n    \"Timothy Gu <timothygu99@gmail.com>\",\n    \"Andreas Lubbe <git@lubbe.org>\"\n  ],\n  \"license\": \"MIT\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug\"\n  },\n  \"main\": \"lib\",\n  \"dependencies\": {\n    \"pug-code-gen\": \"^2.0.2\",\n    \"pug-filters\": \"^3.1.1\",\n    \"pug-lexer\": \"^4.1.0\",\n    \"pug-linker\": \"^3.0.6\",\n    \"pug-load\": \"^2.0.12\",\n    \"pug-parser\": \"^5.0.1\",\n    \"pug-runtime\": \"^2.0.5\",\n    \"pug-strip-comments\": \"^1.0.4\"\n  },\n  \"devDependencies\": {\n    \"jstransformer-cdata\": \"^1.0.0\",\n    \"jstransformer-coffee-script\": \"^1.0.0\",\n    \"jstransformer-less\": \"^2.1.0\",\n    \"jstransformer-markdown-it\": \"^2.0.0\",\n    \"jstransformer-stylus\": \"^1.0.0\",\n    \"jstransformer-uglify-js\": \"^1.1.1\",\n    \"jstransformer-verbatim\": \"^1.0.0\",\n    \"mkdirp\": \"^0.5.1\",\n    \"rimraf\": \"^3.0.2\",\n    \"uglify-js\": \"github:mishoo/UglifyJS2#1c15d0db456ce32f1b9b507aad97e5ee5c8285f7\"\n  },\n  \"files\": [\n    \"lib/index.js\",\n    \"register.js\"\n  ],\n  \"browser\": {\n    \"fs\": false\n  },\n  \"homepage\": \"https://pugjs.org\"\n}\n"
  },
  {
    "path": "packages/pug/register.js",
    "content": "var pug = require('./');\nvar resolvedPug = JSON.stringify(require.resolve('./'));\n\nfunction compileTemplate(module, filename) {\n  var template = pug.compileFileClient(filename, {\n    inlineRuntimeFunctions: false,\n  });\n  var body =\n    'var pug = require(' +\n    resolvedPug +\n    ').runtime;\\n\\n' +\n    'module.exports = ' +\n    template +\n    ';';\n  module._compile(body, filename);\n}\n\nif (require.extensions) {\n  require.extensions['.pug'] = compileTemplate;\n}\n"
  },
  {
    "path": "packages/pug/support/benchmark.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar uubench = require('uubench'),\n  pug = require('../');\n\nvar suite = new uubench.Suite({\n  min: 200,\n  result: function(name, stats) {\n    var persec = 1000 / stats.elapsed,\n      ops = stats.iterations * persec;\n    console.log('%s: %d', name, ops | 0);\n  },\n});\n\nfunction setup(self) {\n  var suffix = self ? ' (self)' : '',\n    options = {self: self};\n\n  var str = 'html\\n  body\\n    h1 Title',\n    fn = pug.compile(str, options);\n\n  suite.bench('tiny' + suffix, function(next) {\n    fn();\n    next();\n  });\n\n  str =\n    '\\\nhtml\\n\\\n  body\\n\\\n    h1 Title\\n\\\n    ul#menu\\n\\\n      li: a(href=\"#\") Home\\n\\\n      li: a(href=\"#\") About Us\\n\\\n      li: a(href=\"#\") Store\\n\\\n      li: a(href=\"#\") FAQ\\n\\\n      li: a(href=\"#\") Contact\\n\\\n';\n\n  var fn2 = pug.compile(str, options);\n\n  suite.bench('small' + suffix, function(next) {\n    fn2();\n    next();\n  });\n\n  str =\n    '\\\nhtml\\n\\\n  body\\n\\\n    h1 #{title}\\n\\\n    ul#menu\\n\\\n      - each link in links\\r\\n\\\n        li: a(href=\"#\")= link\\r\\n\\\n';\n\n  if (self) {\n    str =\n      '\\\nhtml\\n\\\n  body\\n\\\n    h1 #{self.title}\\n\\\n    ul#menu\\n\\\n      - each link in self.links\\r\\n\\\n        li: a(href=\"#\")= link\\r\\n\\\n';\n  }\n\n  var fn3 = pug.compile(str, options);\n\n  suite.bench('small locals' + suffix, function(next) {\n    fn3({\n      title: 'Title',\n      links: ['Home', 'About Us', 'Store', 'FAQ', 'Contact'],\n    });\n    next();\n  });\n\n  str =\n    '\\\nhtml\\n\\\n  body\\n\\\n    h1 Title\\n\\\n    ul#menu\\n\\\n      li: a(href=\"#\") Home\\n\\\n      li: a(href=\"#\") About Us\\n\\\n      li: a(href=\"#\") Store\\n\\\n      li: a(href=\"#\") FAQ\\n\\\n      li: a(href=\"#\") Contact\\n\\\n';\n\n  str = Array(30).join(str);\n  var fn4 = pug.compile(str, options);\n\n  suite.bench('medium' + suffix, function(next) {\n    fn4();\n    next();\n  });\n\n  str =\n    '\\\nhtml\\n\\\n  body\\n\\\n    h1 Title\\n\\\n    ul#menu\\n\\\n      li: a(href=\"#\") Home\\n\\\n      li: a(href=\"#\") About Us\\n\\\n      li: a(href=\"#\") Store\\n\\\n      li: a(href=\"#\") FAQ\\n\\\n      li: a(href=\"#\") Contact\\n\\\n';\n\n  str = Array(100).join(str);\n  var fn5 = pug.compile(str, options);\n\n  suite.bench('large' + suffix, function(next) {\n    fn5();\n    next();\n  });\n}\n\nsetup();\nsetup(true);\n\nsuite.run();\n"
  },
  {
    "path": "packages/pug/test/README.md",
    "content": "# Running Tests\n\nTo run tests (with node.js installed) you must complete 2 steps.\n\n## 1 Install dependencies\n\n```\nnpm install\n```\n\n## 2 Run tests\n\n```\nnpm test\n```\n"
  },
  {
    "path": "packages/pug/test/__snapshots__/pug.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`pug .compileClient() should support module syntax in pug.compileClient(str, options) when inlineRuntimeFunctions it false 1`] = `\n\"var pug = require(\\\\\"pug-runtime\\\\\");\nfunction template(locals) {\n  var pug_html = \\\\\"\\\\\",\n    pug_mixins = {},\n    pug_interp;\n  var pug_debug_filename, pug_debug_line;\n  try {\n    var self = locals || {};\n    pug_debug_line = 1;\n    pug_html = pug_html + '\\\\\\\\u003Cdiv class=\\\\\"bar\\\\\"\\\\\\\\u003E';\n    pug_debug_line = 1;\n    pug_html =\n      pug_html +\n      pug.escape(null == (pug_interp = self.foo) ? \\\\\"\\\\\" : pug_interp) +\n      \\\\\"\\\\\\\\u003C\\\\\\\\u002Fdiv\\\\\\\\u003E\\\\\";\n  } catch (err) {\n    pug.rethrow(err, pug_debug_filename, pug_debug_line);\n  }\n  return pug_html;\n}\nmodule.exports = template;\n\"\n`;\n\nexports[`pug .compileClient() should support module syntax in pug.compileClient(str, options) when inlineRuntimeFunctions it true 1`] = `\n\"function pug_escape(e) {\n  var a = \\\\\"\\\\\" + e,\n    t = pug_match_html.exec(a);\n  if (!t) return e;\n  var r,\n    c,\n    n,\n    s = \\\\\"\\\\\";\n  for (r = t.index, c = 0; r < a.length; r++) {\n    switch (a.charCodeAt(r)) {\n      case 34:\n        n = \\\\\"&quot;\\\\\";\n        break;\n      case 38:\n        n = \\\\\"&amp;\\\\\";\n        break;\n      case 60:\n        n = \\\\\"&lt;\\\\\";\n        break;\n      case 62:\n        n = \\\\\"&gt;\\\\\";\n        break;\n      default:\n        continue;\n    }\n    c !== r && (s += a.substring(c, r)), (c = r + 1), (s += n);\n  }\n  return c !== r ? s + a.substring(c, r) : s;\n}\nvar pug_match_html = /[\\\\\"&<>]/;\nfunction pug_rethrow(e, n, r, t) {\n  if (!(e instanceof Error)) throw e;\n  if (!((\\\\\"undefined\\\\\" == typeof window && n) || t))\n    throw ((e.message += \\\\\" on line \\\\\" + r), e);\n  var o, a, i, s;\n  try {\n    (t = t || require(\\\\\"fs\\\\\").readFileSync(n, { encoding: \\\\\"utf8\\\\\" })),\n      (o = 3),\n      (a = t.split(\\\\\"\\\\\\\\n\\\\\")),\n      (i = Math.max(r - o, 0)),\n      (s = Math.min(a.length, r + o));\n  } catch (t) {\n    return (\n      (e.message += \\\\\" - could not read from \\\\\" + n + \\\\\" (\\\\\" + t.message + \\\\\")\\\\\"),\n      void pug_rethrow(e, null, r)\n    );\n  }\n  (o = a\n    .slice(i, s)\n    .map(function(e, n) {\n      var t = n + i + 1;\n      return (t == r ? \\\\\"  > \\\\\" : \\\\\"    \\\\\") + t + \\\\\"| \\\\\" + e;\n    })\n    .join(\\\\\"\\\\\\\\n\\\\\")),\n    (e.path = n);\n  try {\n    e.message = (n || \\\\\"Pug\\\\\") + \\\\\":\\\\\" + r + \\\\\"\\\\\\\\n\\\\\" + o + \\\\\"\\\\\\\\n\\\\\\\\n\\\\\" + e.message;\n  } catch (e) {}\n  throw e;\n}\nfunction template(locals) {\n  var pug_html = \\\\\"\\\\\",\n    pug_mixins = {},\n    pug_interp;\n  var pug_debug_filename, pug_debug_line;\n  try {\n    var self = locals || {};\n    pug_debug_line = 1;\n    pug_html = pug_html + '\\\\\\\\u003Cdiv class=\\\\\"bar\\\\\"\\\\\\\\u003E';\n    pug_debug_line = 1;\n    pug_html =\n      pug_html +\n      pug_escape(null == (pug_interp = self.foo) ? \\\\\"\\\\\" : pug_interp) +\n      \\\\\"\\\\\\\\u003C\\\\\\\\u002Fdiv\\\\\\\\u003E\\\\\";\n  } catch (err) {\n    pug_rethrow(err, pug_debug_filename, pug_debug_line);\n  }\n  return pug_html;\n}\nmodule.exports = template;\n\"\n`;\n"
  },
  {
    "path": "packages/pug/test/anti-cases/attrs.unescaped.pug",
    "content": "script(type='text/x-template')\n  #user(id!='user-<%= user.id %>')\n    h1 <%= user.title %>"
  },
  {
    "path": "packages/pug/test/anti-cases/case-when.pug",
    "content": "when 5\n  .foo\nwhen 6\n  .bar"
  },
  {
    "path": "packages/pug/test/anti-cases/case-without-with.pug",
    "content": "case foo\n  .div"
  },
  {
    "path": "packages/pug/test/anti-cases/else-condition.pug",
    "content": "if foo\n  div\nelse bar\n  article"
  },
  {
    "path": "packages/pug/test/anti-cases/else-without-if.pug",
    "content": "else\n  .foo"
  },
  {
    "path": "packages/pug/test/anti-cases/inlining-a-mixin-after-a-tag.pug",
    "content": "foo()+bar()"
  },
  {
    "path": "packages/pug/test/anti-cases/key-char-ending-badly.pug",
    "content": "div(\"foo\"abc)\n"
  },
  {
    "path": "packages/pug/test/anti-cases/key-ending-badly.pug",
    "content": "div(foo!~abc)\n"
  },
  {
    "path": "packages/pug/test/anti-cases/mismatched-inline-tag.pug",
    "content": "//- #1871\np #[strong a}\n"
  },
  {
    "path": "packages/pug/test/anti-cases/mixin-args-syntax-error.pug",
    "content": "mixin foo(a, b)\n+foo('a'b'b')\n"
  },
  {
    "path": "packages/pug/test/anti-cases/mixins-blocks-with-bodies.pug",
    "content": "mixin foo\n  block\n    bar"
  },
  {
    "path": "packages/pug/test/anti-cases/multiple-non-nested-tags-on-a-line.pug",
    "content": "foo()bar"
  },
  {
    "path": "packages/pug/test/anti-cases/non-existant-filter.pug",
    "content": ":not-a-valid-filter\n  foo bar"
  },
  {
    "path": "packages/pug/test/anti-cases/non-mixin-block.pug",
    "content": "div\n  block"
  },
  {
    "path": "packages/pug/test/anti-cases/open-brace-in-attributes.pug",
    "content": "div(title=[)"
  },
  {
    "path": "packages/pug/test/anti-cases/readme.md",
    "content": "This folder collects examples of files that are not valid `pug`, but were at some point accepted by the parser without throwing an error.  The tests ensure that all these cases now throw some form of error message (hopefully a helpful one)."
  },
  {
    "path": "packages/pug/test/anti-cases/self-closing-tag-with-block.pug",
    "content": "input\n  | Inputs cannot have content\n"
  },
  {
    "path": "packages/pug/test/anti-cases/self-closing-tag-with-body.pug",
    "content": "input Input's can't have content"
  },
  {
    "path": "packages/pug/test/anti-cases/self-closing-tag-with-code.pug",
    "content": "input= 'Inputs cannot have code'\n"
  },
  {
    "path": "packages/pug/test/anti-cases/tabs-and-spaces.pug",
    "content": "div\n  div\n\tarticle"
  },
  {
    "path": "packages/pug/test/anti-cases/unclosed-interpolated-call.pug",
    "content": "+#{myMixin"
  },
  {
    "path": "packages/pug/test/anti-cases/unclosed-interpolated-tag.pug",
    "content": "mixin item\n  block\n\n+item( Contact"
  },
  {
    "path": "packages/pug/test/anti-cases/unclosed-interpolation.pug",
    "content": "#{myMixin"
  },
  {
    "path": "packages/pug/test/browser/index.html",
    "content": "<!DOCTYPE html><html><head></head><body><textarea id=\"input\" placeholder=\"write pug here\" style=\"width: 100%; min-height: 400px;\">p\n  author\n    != myName</textarea><pre style=\"background: #ECECEC;width: 100%; min-height: 400px;\"><code id=\"output\"></code></pre><script src=\"../../pug.js\"></script><script>var input = document.getElementById('input');\nvar output = document.getElementById('output');\nsetInterval(function () {\n  pug.render(input.value, {myName: 'Forbes Lindesay', pretty: true}, function (err, res) {\n    if (err) throw err;\n    output.textContent = res;\n  })\n}, 500)</script></body></html>"
  },
  {
    "path": "packages/pug/test/browser/index.pug",
    "content": "!!! 5\nhtml\n  head\n  body\n    textarea#input(placeholder='write pug here', style='width: 100%; min-height: 400px;').\n      p\n        author\n          != myName\n    pre(style='background: #ECECEC;width: 100%; min-height: 400px;')\n      code#output\n    script(src='../../pug.js')\n    script.\n      var input = document.getElementById('input');\n      var output = document.getElementById('output');\n      setInterval(function () {\n        pug.render(input.value, {myName: 'Forbes Lindesay', pretty: true}, function (err, res) {\n          if (err) throw err;\n          output.textContent = res;\n        })\n      }, 500)"
  },
  {
    "path": "packages/pug/test/cases/attrs-data.html",
    "content": "<foo data-user=\"{&quot;name&quot;:&quot;tobi&quot;}\"></foo>\n<foo data-items=\"[1,2,3]\"></foo>\n<foo data-username=\"tobi\"></foo>\n<foo data-escaped=\"{&quot;message&quot;:&quot;Let's rock!&quot;}\"></foo>\n<foo data-ampersand=\"{&quot;message&quot;:&quot;a quote: &amp;quot; this &amp; that&quot;}\"></foo>\n<foo data-epoc=\"1970-01-01T00:00:00.000Z\"></foo>\n"
  },
  {
    "path": "packages/pug/test/cases/attrs-data.pug",
    "content": "- var user = { name: 'tobi' }\nfoo(data-user=user)\nfoo(data-items=[1,2,3])\nfoo(data-username='tobi')\nfoo(data-escaped={message: \"Let's rock!\"})\nfoo(data-ampersand={message: \"a quote: &quot; this & that\"})\nfoo(data-epoc=new Date(0))\n"
  },
  {
    "path": "packages/pug/test/cases/attrs.colon.html",
    "content": "<div :my-var=\"model\"></div><span v-for=\"item in items\" :key=\"item.id\" :value=\"item.name\"></span><span v-for=\"item in items\" :key=\"item.id\" :value=\"item.name\"></span><a :link=\"goHere\" value=\"static\" :my-value=\"dynamic\" @click=\"onClick()\" :another=\"more\">Click Me!</a>\n"
  },
  {
    "path": "packages/pug/test/cases/attrs.colon.pug",
    "content": "//- Tests for using a colon-prefexed attribute (typical when using short-cut for Vue.js `v-bind`)\ndiv(:my-var=\"model\")\nspan(v-for=\"item in items\" :key=\"item.id\" :value=\"item.name\")\nspan(\n  v-for=\"item in items\"\n  :key=\"item.id\"\n  :value=\"item.name\"\n)\na(:link=\"goHere\" value=\"static\" :my-value=\"dynamic\" @click=\"onClick()\" :another=\"more\") Click Me!\n"
  },
  {
    "path": "packages/pug/test/cases/attrs.html",
    "content": "<a href=\"/contact\">contact</a><a class=\"button\" href=\"/save\">save</a><a foo=\"foo\" bar=\"bar\" baz=\"baz\"></a><a foo=\"foo, bar, baz\" bar=\"1\"></a><a foo=\"((foo))\" bar=\"1\"></a>\n<select>\n  <option value=\"foo\" selected=\"selected\">Foo</option>\n  <option selected=\"selected\" value=\"bar\">Bar</option>\n</select><a foo=\"class:\"></a>\n<input pattern=\"\\S+\"/><a href=\"/contact\">contact</a><a class=\"button\" href=\"/save\">save</a><a foo=\"foo\" bar=\"bar\" baz=\"baz\"></a><a foo=\"foo, bar, baz\" bar=\"1\"></a><a foo=\"((foo))\" bar=\"1\"></a>\n<select>\n  <option value=\"foo\" selected=\"selected\">Foo</option>\n  <option selected=\"selected\" value=\"bar\">Bar</option>\n</select><a foo=\"class:\"></a>\n<input pattern=\"\\S+\"/>\n<foo terse=\"true\"></foo>\n<foo date=\"1970-01-01T00:00:00.000Z\"></foo>\n<foo abc=\"abc\" def=\"def\"></foo>\n<foo abc=\"abc\" def=\"def\"></foo>\n<foo abc=\"abc\" def=\"def\"></foo>\n<foo abc=\"abc\" def=\"def\"></foo>\n<foo abc=\"abc\" def=\"def\"></foo>\n<foo abc=\"abc\" def=\"def\"></foo>\n<div foo=\"bar\" bar=\"<baz>\"></div><a foo=\"foo\" bar=\"bar\"></a><a foo=\"foo\" bar=\"bar\"></a>\n"
  },
  {
    "path": "packages/pug/test/cases/attrs.js.html",
    "content": "<a class=\"button\" href=\"/user/5\"></a><a class=\"button\" href=\"/user/5\"></a>\n<meta key=\"answer\" value=\"42\"/><a class=\"class1 class2\"></a><a class=\"tag-class class1 class2\"></a><a class=\"button\" href=\"/user/5\"></a><a class=\"button\" href=\"/user/5\"></a>\n<meta key=\"answer\" value=\"42\"/><a class=\"class1 class2\"></a><a class=\"tag-class class1 class2\"></a>\n<div id=\"5\" foo=\"bar\"></div>\n<div baz=\"baz\"></div>"
  },
  {
    "path": "packages/pug/test/cases/attrs.js.pug",
    "content": "- var id = 5\n- function answer() { return 42; }\na(href='/user/' + id, class='button')\na(href  =  '/user/' + id, class  =  'button')\nmeta(key='answer', value=answer())\na(class = ['class1', 'class2'])\na.tag-class(class = ['class1', 'class2'])\n\na(href='/user/' + id class='button')\na(href  =  '/user/' + id class  =  'button')\nmeta(key='answer' value=answer())\na(class = ['class1', 'class2'])\na.tag-class(class = ['class1', 'class2'])\n\ndiv(id=id)&attributes({foo: 'bar'})\n- var bar = null\ndiv(foo=null bar=bar)&attributes({baz: 'baz'})\n"
  },
  {
    "path": "packages/pug/test/cases/attrs.pug",
    "content": "a(href='/contact') contact\na(href='/save').button save\na(foo, bar, baz)\na(foo='foo, bar, baz', bar=1)\na(foo='((foo))', bar= (1) ? 1 : 0 )\nselect\n  option(value='foo', selected) Foo\n  option(selected, value='bar') Bar\na(foo=\"class:\")\ninput(pattern='\\\\S+')\n\na(href='/contact') contact\na(href='/save').button save\na(foo bar baz)\na(foo='foo, bar, baz' bar=1)\na(foo='((foo))' bar= (1) ? 1 : 0 )\nselect\n  option(value='foo' selected) Foo\n  option(selected value='bar') Bar\na(foo=\"class:\")\ninput(pattern='\\\\S+')\nfoo(terse=\"true\")\nfoo(date=new Date(0))\n\nfoo(abc\n   ,def)\nfoo(abc,\n    def)\nfoo(abc,\n\t\tdef)\nfoo(abc\n\t\t,def)\nfoo(abc\n\t\tdef)\nfoo(abc\n    def)\n\n- var attrs = {foo: 'bar', bar: '<baz>'}\n\ndiv&attributes(attrs)\n\na(foo='foo' \"bar\"=\"bar\")\na(foo='foo' 'bar'='bar')\n"
  },
  {
    "path": "packages/pug/test/cases/attrs.unescaped.html",
    "content": "<script type=\"text/x-template\">\n  <div id=\"user-<%= user.id %>\">\n    <h1><%= user.title %></h1>\n  </div>\n</script>"
  },
  {
    "path": "packages/pug/test/cases/attrs.unescaped.pug",
    "content": "script(type='text/x-template')\n  div(id!='user-<%= user.id %>')\n    h1 <%= user.title %>"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/1794-extends.pug",
    "content": "block content"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/1794-include.pug",
    "content": "mixin test()\n  .test&attributes(attributes)\n \n+test()"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/blocks-in-blocks-layout.pug",
    "content": "doctype html\nhtml\n  head\n    title Default title\n  body\n    block body\n      .container\n        block content\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/dialog.pug",
    "content": "\nextends window.pug\n\nblock window-content\n  .dialog\n    block content\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/empty-block.pug",
    "content": "block test\n\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/escapes.html",
    "content": "<script>\n  console.log(\"foo\\nbar\")\n</script>"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/extends-empty-block-1.pug",
    "content": "extends empty-block.pug\n\nblock test\n    div test1\n\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/extends-empty-block-2.pug",
    "content": "extends empty-block.pug\n\nblock test\n    div test2\n\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/extends-from-root.pug",
    "content": "extends /auxiliary/layout.pug\n\nblock content\n    include /auxiliary/include-from-root.pug\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/extends-relative.pug",
    "content": "extends ../../cases/auxiliary/layout\n\nblock content\n    include ../../cases/auxiliary/include-from-root\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/filter-in-include.pug",
    "content": "html\n  head\n    style(type=\"text/css\")\n      :less\n        @pad: 15px;\n        body {\n          padding: @pad;\n        }\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/includable.js",
    "content": "var STRING_SUBSTITUTIONS = {\n  // table of character substitutions\n  '\\t': '\\\\t',\n  '\\r': '\\\\r',\n  '\\n': '\\\\n',\n  '\"': '\\\\\"',\n  '\\\\': '\\\\\\\\',\n};\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/include-from-root.pug",
    "content": "h1 hello"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/inheritance.extend.mixin.block.pug",
    "content": "mixin article()\n  article\n    block\n\nhtml\n  head\n    title My Application\n    block head\n  body\n    +article\n      block content\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/inheritance.extend.recursive-grand-grandparent.pug",
    "content": "h1 grand-grandparent\nblock grand-grandparent"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/inheritance.extend.recursive-grandparent.pug",
    "content": "extends inheritance.extend.recursive-grand-grandparent.pug\n\nblock grand-grandparent\n    h2 grandparent\n    block grandparent\n\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/inheritance.extend.recursive-parent.pug",
    "content": "extends inheritance.extend.recursive-grandparent.pug\n\nblock grandparent\n    h3 parent\n    block parent"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/layout.include.pug",
    "content": "html\n  head\n    title My Application\n    block head\n  body\n    block content\n    include window.pug\n"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/layout.pug",
    "content": "html\n  head\n    title My Application\n    block head\n  body\n    block content"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/mixin-at-end-of-file.pug",
    "content": "mixin slide\n  section.slide\n    block"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/mixins.pug",
    "content": "\nmixin foo()\n  p bar"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/pet.pug",
    "content": ".pet\n  h1 {{name}}\n  p {{name}} is a {{species}} that is {{age}} old"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/smile.html",
    "content": "<p>:)</p>"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/window.pug",
    "content": "\n.window\n  a(href='#').close Close\n  block window-content"
  },
  {
    "path": "packages/pug/test/cases/auxiliary/yield-nested.pug",
    "content": "html\n  head\n    title\n  body\n    h1 Page\n    #content\n      #content-wrapper\n        yield\n    #footer\n      stuff"
  },
  {
    "path": "packages/pug/test/cases/basic.html",
    "content": "<html>\n  <body>\n    <h1>Title</h1>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/basic.pug",
    "content": "html\n  body\n    h1 Title"
  },
  {
    "path": "packages/pug/test/cases/blanks.html",
    "content": "<ul>\n  <li>foo</li>\n  <li>bar</li>\n  <li>baz</li>\n</ul>"
  },
  {
    "path": "packages/pug/test/cases/blanks.pug",
    "content": "\n\nul\n  li foo\n\n  li bar\n      \n  li baz\n"
  },
  {
    "path": "packages/pug/test/cases/block-code.html",
    "content": "\n<li>Uno</li>\n<li>Dos</li>\n<li>Tres</li>\n<li>Cuatro</li>\n<li>Cinco</li>\n<li>Seis</li>\n"
  },
  {
    "path": "packages/pug/test/cases/block-code.pug",
    "content": "-\n  list = [\"uno\", \"dos\", \"tres\",\n          \"cuatro\", \"cinco\", \"seis\"];\n//- Without a block, the element is accepted and no code is generated\n-\neach item in list\n  -\n    string = item.charAt(0)\n    \n      .toUpperCase() +\n    item.slice(1);\n  li= string\n"
  },
  {
    "path": "packages/pug/test/cases/block-expansion.html",
    "content": "<ul>\n  <li><a href=\"#\">foo</a></li>\n  <li><a href=\"#\">bar</a></li>\n</ul>\n<p>baz</p>"
  },
  {
    "path": "packages/pug/test/cases/block-expansion.pug",
    "content": "ul\n  li: a(href='#') foo\n  li: a(href='#') bar\n\np baz"
  },
  {
    "path": "packages/pug/test/cases/block-expansion.shorthands.html",
    "content": "<ul>\n  <li class=\"list-item\">\n    <div class=\"foo\">\n      <div id=\"bar\">baz</div>\n    </div>\n  </li>\n</ul>"
  },
  {
    "path": "packages/pug/test/cases/block-expansion.shorthands.pug",
    "content": "ul\n  li.list-item: .foo: #bar baz"
  },
  {
    "path": "packages/pug/test/cases/blockquote.html",
    "content": "<figure>\n  <blockquote>Try to define yourself by what you do, and you&#8217;ll burnout every time. You are. That is enough. I rest in that.</blockquote>\n  <figcaption>from @thefray at 1:43pm on May 10</figcaption>\n</figure>"
  },
  {
    "path": "packages/pug/test/cases/blockquote.pug",
    "content": "figure\n  blockquote\n    | Try to define yourself by what you do, and you&#8217;ll burnout every time. You are. That is enough. I rest in that.\n  figcaption from @thefray at 1:43pm on May 10"
  },
  {
    "path": "packages/pug/test/cases/blocks-in-blocks.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Default title</title>\n  </head>\n  <body>\n    <h1>Page 2</h1>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/blocks-in-blocks.pug",
    "content": "extends ./auxiliary/blocks-in-blocks-layout.pug\n\nblock body\n  h1 Page 2\n"
  },
  {
    "path": "packages/pug/test/cases/blocks-in-if.html",
    "content": "<p>ajax contents</p>\n"
  },
  {
    "path": "packages/pug/test/cases/blocks-in-if.pug",
    "content": "//- see https://github.com/pugjs/pug/issues/1589\n\n-var ajax = true\n\n-if( ajax )\n    //- return only contents if ajax requests\n    block contents\n        p ajax contents\n\n-else\n    //- return all html\n    doctype html\n    html\n        head\n            meta( charset='utf8' )\n            title sample\n            body\n                block contents\n                    p all contetns\n"
  },
  {
    "path": "packages/pug/test/cases/case-blocks.html",
    "content": "<html>\n  <body>\n    <p>you have a friend</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/case-blocks.pug",
    "content": "html\n  body\n    - var friends = 1\n    case friends\n      when 0\n        p you have no friends\n      when 1\n        p you have a friend\n      default\n        p you have #{friends} friends"
  },
  {
    "path": "packages/pug/test/cases/case.html",
    "content": "\n<html>\n  <body>\n    <p>you have a friend</p>\n    <p>you have very few friends</p>\n    <p>Friend is a string</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/case.pug",
    "content": "html\n  body\n    - var friends = 1\n    case friends\n      when 0: p you have no friends\n      when 1: p you have a friend\n      default: p you have #{friends} friends\n    - var friends = 0\n    case friends\n      when 0\n      when 1\n        p you have very few friends\n      default\n        p you have #{friends} friends\n\n    - var friend = 'Tim:G'\n    case friend\n      when 'Tim:G':    p Friend is a string\n      when {tim: 'g'}: p Friend is an object\n"
  },
  {
    "path": "packages/pug/test/cases/classes-empty.html",
    "content": "<a></a><a></a><a></a>"
  },
  {
    "path": "packages/pug/test/cases/classes-empty.pug",
    "content": "a(class='')\na(class=null)\na(class=undefined)"
  },
  {
    "path": "packages/pug/test/cases/classes.html",
    "content": "<a class=\"foo bar baz\"></a><a class=\"foo bar baz\"></a><a class=\"foo-bar_baz\"></a><a class=\"foo baz\"></a>\n"
  },
  {
    "path": "packages/pug/test/cases/classes.pug",
    "content": "a(class=['foo', 'bar', 'baz'])\n\n\n\na.foo(class='bar').baz\n\n\n\na.foo-bar_baz\n\na(class={foo: true, bar: false, baz: true})\n"
  },
  {
    "path": "packages/pug/test/cases/code.conditionals.html",
    "content": "<p>foo</p>\n<p>foo</p>\n<p>foo</p>\n<p>bar</p>\n<p>baz</p>\n<p>bar</p>\n<p>yay</p>\n<div class=\"bar\"></div>\n<div class=\"bar\"></div>\n<div class=\"bing\"></div>\n<div class=\"foo\"></div>\n"
  },
  {
    "path": "packages/pug/test/cases/code.conditionals.pug",
    "content": "\n- if (true)\n  p foo\n- else\n  p bar\n\n- if (true) {\n  p foo\n- } else {\n  p bar\n- }\n\nif true\n  p foo\n  p bar\n  p baz\nelse\n  p bar\n\nunless true\n  p foo\nelse\n  p bar\n\nif 'nested'\n  if 'works'\n    p yay\n\n//- allow empty blocks\nif false\nelse\n  .bar\nif true\n  .bar\nelse\n.bing\n\nif false\n  .bing\nelse if false\n  .bar\nelse\n  .foo"
  },
  {
    "path": "packages/pug/test/cases/code.escape.html",
    "content": "<p>&lt;script&gt;</p>\n<p><script></p>"
  },
  {
    "path": "packages/pug/test/cases/code.escape.pug",
    "content": "p= '<script>'\np!= '<script>'"
  },
  {
    "path": "packages/pug/test/cases/code.html",
    "content": "<p></p>\n<p></p>\n<p></p>\n<p>0</p>\n<p>false</p>\n<p></p>\n<p></p>\n<p foo=\"\"></p>\n<p foo=\"0\"></p>\n<p></p>"
  },
  {
    "path": "packages/pug/test/cases/code.iteration.html",
    "content": "<ul>\n  <li>1</li>\n  <li>2</li>\n  <li>3</li>\n</ul>\n<ul>\n  <li class=\"item-0\">1</li>\n  <li class=\"item-1\">2</li>\n  <li class=\"item-2\">3</li>\n</ul>\n<ul>\n  <li>1</li>\n  <li>2</li>\n  <li>3</li>\n</ul>\n<ul>\n  <li>1</li>\n  <li>2</li>\n  <li>3</li>\n</ul>\n<ul>\n  <li>1: a</li>\n  <li>2: a</li>\n  <li>3: a</li>\n  <li>1: b</li>\n  <li>2: b</li>\n  <li>3: b</li>\n  <li>1: c</li>\n  <li>2: c</li>\n  <li>3: c</li>\n</ul>\n<ul>\n  <li>1</li>\n  <li>2</li>\n  <li>3</li>\n</ul>"
  },
  {
    "path": "packages/pug/test/cases/code.iteration.pug",
    "content": "\n- var items = [1,2,3]\n\nul\n  - items.forEach(function(item){\n    li= item\n  - })\n\n- var items = [1,2,3]\n\nul\n  for item, i in items\n    li(class='item-' + i)= item\n\nul\n  each item, i in items\n    li= item\n\nul\n  each $item in items\n    li= $item\n\n- var nums = [1, 2, 3]\n- var letters = ['a', 'b', 'c']\n\nul\n  for l in letters\n    for n in nums\n      li #{n}: #{l}\n\n- var count = 1\n- var counter = function() { return [count++, count++, count++] }\nul\n  for n in counter()\n    li #{n}\n"
  },
  {
    "path": "packages/pug/test/cases/code.pug",
    "content": "p= null\np= undefined\np= ''\np= 0\np= false\np(foo=null)\np(foo=undefined)\np(foo='')\np(foo=0)\np(foo=false)"
  },
  {
    "path": "packages/pug/test/cases/comments-in-case.html",
    "content": "<!DOCTYPE html>\n<html>\n  <body>\n    <p>It's this!</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/comments-in-case.pug",
    "content": "doctype html\nhtml\n  body\n   - var s = 'this'\n   case s\n     //- Comment\n     when 'this'\n       p It's this!\n     when 'that'\n       p It's that!"
  },
  {
    "path": "packages/pug/test/cases/comments.html",
    "content": "\n<!-- foo-->\n<ul>\n  <!-- bar-->\n  <li>one</li>\n  <!-- baz-->\n  <li>two</li>\n</ul>\n<!--\nul\n  li foo\n\n-->\n<!-- block\n// inline follow\nli three\n\n-->\n<!-- block\n// inline followed by tags\nul\n  li four\n\n-->\n<!--if IE lt 9\n// inline\nscript(src='/lame.js')\n// end-inline\n\n-->\n<p>five</p>\n<div class=\"foo\">// not a comment</div>"
  },
  {
    "path": "packages/pug/test/cases/comments.pug",
    "content": "\n// foo\nul\n  // bar\n  li one\n  // baz\n  li two\n\n//\n  ul\n    li foo\n\n// block\n  // inline follow\n  li three\n\n// block\n  // inline followed by tags\n  ul\n    li four\n\n//if IE lt 9\n  // inline\n  script(src='/lame.js')\n  // end-inline\n\np five\n\n.foo // not a comment"
  },
  {
    "path": "packages/pug/test/cases/comments.source.html",
    "content": ""
  },
  {
    "path": "packages/pug/test/cases/comments.source.pug",
    "content": "//-\n  s/s.\n\n//- test/cases/comments.source.pug\n\n//-\n  test/cases/comments.source.pug\n  when\n  ()\n"
  },
  {
    "path": "packages/pug/test/cases/doctype.custom.html",
    "content": "<!DOCTYPE custom stuff>"
  },
  {
    "path": "packages/pug/test/cases/doctype.custom.pug",
    "content": "doctype custom stuff"
  },
  {
    "path": "packages/pug/test/cases/doctype.default.html",
    "content": "<!DOCTYPE html>\n<html>\n  <body>\n    <h1>Title</h1>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/doctype.default.pug",
    "content": "doctype\nhtml\n  body\n    h1 Title"
  },
  {
    "path": "packages/pug/test/cases/doctype.keyword.html",
    "content": "<!DOCTYPE html>"
  },
  {
    "path": "packages/pug/test/cases/doctype.keyword.pug",
    "content": "doctype html"
  },
  {
    "path": "packages/pug/test/cases/each.else.html",
    "content": "<ul>\n  <li>no users!</li>\n</ul>\n<ul>\n  <li>tobi</li>\n  <li>loki</li>\n</ul>\n<ul>\n  <li>name: tobi</li>\n  <li>age: 10</li>\n</ul>\n<ul>\n  <li>user has no details!</li>\n</ul>\n<ul>\n  <li>name: tobi</li>\n</ul>\n"
  },
  {
    "path": "packages/pug/test/cases/each.else.pug",
    "content": "\n- var users = []\n\nul\n  for user in users\n    li= user.name\n  else\n    li no users!\n\n\n- var users = [{ name: 'tobi', friends: ['loki'] }, { name: 'loki' }]\n\nif users\n  ul\n    for user in users\n      li= user.name\n    else\n      li no users!\n\n- var user = { name: 'tobi', age: 10 }\n\nul\n  each val, key in user\n    li #{key}: #{val}\n  else\n    li user has no details!\n\n- var user = {}\n\nul\n  each prop, key in user\n    li #{key}: #{val}\n  else\n    li user has no details!\n\n- var user = Object.create(null)\n- user.name = 'tobi'\n\nul\n  each val, key in user\n    li #{key}: #{val}\n  else\n    li user has no details!\n"
  },
  {
    "path": "packages/pug/test/cases/escape-chars.html",
    "content": "<script>var re = /\\d+/;</script>"
  },
  {
    "path": "packages/pug/test/cases/escape-chars.pug",
    "content": "script.\n  var re = /\\d+/;"
  },
  {
    "path": "packages/pug/test/cases/escape-test.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>escape-test</title>\n  </head>\n  <body>\n    <textarea>&lt;param name=&quot;flashvars&quot; value=&quot;a=&amp;quot;value_a&amp;quot;&amp;b=&amp;quot;value_b&amp;quot;&amp;c=3&quot;/&gt;</textarea>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/escape-test.pug",
    "content": "doctype html\nhtml\n    head\n        title escape-test\n    body\n        textarea\n            - var txt = '<param name=\"flashvars\" value=\"a=&quot;value_a&quot;&b=&quot;value_b&quot;&c=3\"/>'\n            | #{txt}\n"
  },
  {
    "path": "packages/pug/test/cases/escaping-class-attribute.html",
    "content": "<foo attr=\"&lt;%= bar %&gt;\"></foo>\n<foo class=\"&lt;%= bar %&gt;\"></foo>\n<foo attr=\"<%= bar %>\"></foo>\n<foo class=\"<%= bar %>\"></foo>\n<foo class=\"<%= bar %> lol rofl\"></foo>\n<foo class=\"<%= bar %> lol rofl <%= lmao %>\"></foo>"
  },
  {
    "path": "packages/pug/test/cases/escaping-class-attribute.pug",
    "content": "foo(attr=\"<%= bar %>\")\nfoo(class=\"<%= bar %>\")\nfoo(attr!=\"<%= bar %>\")\nfoo(class!=\"<%= bar %>\")\nfoo(class!=\"<%= bar %> lol rofl\")\nfoo(class!=\"<%= bar %> lol rofl <%= lmao %>\")\n"
  },
  {
    "path": "packages/pug/test/cases/filter-in-include.html",
    "content": "<html>\n  <head><style type=\"text/css\">body {\n  padding: 15px;\n}\n</style>\n  </head>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/filter-in-include.pug",
    "content": "include ./auxiliary/filter-in-include.pug\n"
  },
  {
    "path": "packages/pug/test/cases/filters-empty.html",
    "content": "<fb:users>\n  <fb:user age=\"2\"><![CDATA[]]>\n  </fb:user>\n</fb:users>\n"
  },
  {
    "path": "packages/pug/test/cases/filters-empty.pug",
    "content": "- var users = [{ name: 'tobi', age: 2 }]\n\nfb:users\n  for user in users\n    fb:user(age=user.age)\n      :cdata\n"
  },
  {
    "path": "packages/pug/test/cases/filters.coffeescript.html",
    "content": "<script type=\"text/javascript\">\n  (function() {\n  var regexp;\n\n  regexp = /\\n/;\n\n}).call(this);\n  (function(){}).call(this);\n</script>\n"
  },
  {
    "path": "packages/pug/test/cases/filters.coffeescript.pug",
    "content": "script(type='text/javascript')\n  :coffee-script\n    regexp = /\\n/\n  :coffee-script(minify=true)\n    math =\n      square: (value) -> value * value\n"
  },
  {
    "path": "packages/pug/test/cases/filters.custom.html",
    "content": "\n<html>\n  <body>BEGINLine 1\nLine 2\n\nLine 4END\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/filters.custom.pug",
    "content": "html\n  body\n    :custom(opt='val' num=2)\n      Line 1\n      Line 2\n\n      Line 4\n"
  },
  {
    "path": "packages/pug/test/cases/filters.include.custom.html",
    "content": "\n<html>\n  <body>\n    <pre>BEGINhtml\n  body\n    pre\n      include:custom(opt='val' num=2) filters.include.custom.pug\nEND</pre>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/filters.include.custom.pug",
    "content": "html\n  body\n    pre\n      include:custom(opt='val' num=2) filters.include.custom.pug\n"
  },
  {
    "path": "packages/pug/test/cases/filters.include.html",
    "content": "<html>\n  <body><p>Just <em>some</em> markdown <strong>tests</strong>.</p>\n<p>With new line.</p>\n\n    <script>(function(){}).call(this);</script>\n    <script>(function() {\n  var math;\n\n  math = {\n    square: function(value) {\n      return value * value;\n    }\n  };\n\n}).call(this);\n\n    </script>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/filters.include.pug",
    "content": "html\n  body\n    include:markdown-it some.md\n    script\n      include:coffee-script(minify=true) include-filter-coffee.coffee\n    script\n      include:coffee-script(minify=false) include-filter-coffee.coffee\n"
  },
  {
    "path": "packages/pug/test/cases/filters.inline.html",
    "content": "\n<p>\n  before <![CDATA[inside]]> after</p>"
  },
  {
    "path": "packages/pug/test/cases/filters.inline.pug",
    "content": "p before #[:cdata inside] after"
  },
  {
    "path": "packages/pug/test/cases/filters.less.html",
    "content": "<html>\n  <head><style type=\"text/css\">body {\n  padding: 15px;\n}\n</style>\n  </head>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/filters.less.pug",
    "content": "html\n  head\n    style(type=\"text/css\")\n      :less\n        @pad: 15px;\n        body {\n          padding: @pad;\n        }\n"
  },
  {
    "path": "packages/pug/test/cases/filters.markdown.html",
    "content": "<html>\n  <body><p>This is <em>some</em> awesome <strong>markdown</strong>\nwhoop.</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/filters.markdown.pug",
    "content": "html\n  body\n    :markdown\n      This is _some_ awesome **markdown**\n      whoop.\n"
  },
  {
    "path": "packages/pug/test/cases/filters.nested.html",
    "content": "<script><![CDATA[!function(){console.log(\"test\")}();]]></script>\n<script><![CDATA[(function(){!function(){console.log(\"test\")}()}).call(this);]]></script>\n"
  },
  {
    "path": "packages/pug/test/cases/filters.nested.pug",
    "content": "script\n  :cdata:uglify-js\n    (function() {\n      console.log('test')\n    })()\nscript\n  :cdata:uglify-js:coffee-script\n    (->\n      console.log 'test'\n    )()\n"
  },
  {
    "path": "packages/pug/test/cases/filters.stylus.html",
    "content": "<html>\n  <head><style type=\"text/css\">body {\n  padding: 50px;\n}\n</style>\n  </head>\n  <body></body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/filters.stylus.pug",
    "content": "html\n  head\n    style(type=\"text/css\")\n      :stylus\n        body\n          padding: 50px\n  body\n"
  },
  {
    "path": "packages/pug/test/cases/html.html",
    "content": "<ul>\n<li>foo</li>\n<li>bar</li>\n<li>baz</li>\n</ul>\n<!--build:js /js/app.min.js?v=1449104952939-->\n<!--endbuild-->\n<p>You can <em>embed</em> html as well.</p>\n<p><strong>Even</strong> as the body of a block expansion.</p>"
  },
  {
    "path": "packages/pug/test/cases/html.pug",
    "content": "- var version = 1449104952939\n\n<ul>\n  <li>foo</li>\n  <li>bar</li>\n  <li>baz</li>\n</ul>\n\n<!--build:js /js/app.min.js?v=#{version}-->\n<!--endbuild-->\n\np You can <em>embed</em> html as well.\np: <strong>Even</strong> as the body of a block expansion.\n"
  },
  {
    "path": "packages/pug/test/cases/html5.html",
    "content": "<!DOCTYPE html>\n<input type=\"checkbox\" checked>\n<input type=\"checkbox\" checked>\n<input type=\"checkbox\">"
  },
  {
    "path": "packages/pug/test/cases/html5.pug",
    "content": "doctype html\ninput(type='checkbox', checked)\ninput(type='checkbox', checked=true)\ninput(type='checkbox', checked=false)"
  },
  {
    "path": "packages/pug/test/cases/include-extends-from-root.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n  </head>\n  <body>\n    <h1>hello</h1>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/include-extends-from-root.pug",
    "content": "include /auxiliary/extends-from-root.pug\n"
  },
  {
    "path": "packages/pug/test/cases/include-extends-of-common-template.html",
    "content": "<div>test1</div>\n<div>test2</div>\n"
  },
  {
    "path": "packages/pug/test/cases/include-extends-of-common-template.pug",
    "content": "include auxiliary/extends-empty-block-1.pug\ninclude auxiliary/extends-empty-block-2.pug\n"
  },
  {
    "path": "packages/pug/test/cases/include-extends-relative.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n  </head>\n  <body>\n    <h1>hello</h1>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/include-extends-relative.pug",
    "content": "include ../cases/auxiliary/extends-relative.pug\n"
  },
  {
    "path": "packages/pug/test/cases/include-filter-coffee.coffee",
    "content": "math =\n  square: (value) -> value * value\n"
  },
  {
    "path": "packages/pug/test/cases/include-only-text-body.html",
    "content": "The message is \"\""
  },
  {
    "path": "packages/pug/test/cases/include-only-text-body.pug",
    "content": "| The message is \"\nyield\n| \"\n"
  },
  {
    "path": "packages/pug/test/cases/include-only-text.html",
    "content": "<html>\n  <body>\n    <p>The message is \"<em>hello world</em>\"</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/include-only-text.pug",
    "content": "html\n  body\n    p\n      include include-only-text-body.pug\n        em hello world\n"
  },
  {
    "path": "packages/pug/test/cases/include-with-text-head.html",
    "content": "<head>\n  <script type=\"text/javascript\">alert('hello world');</script>\n</head>"
  },
  {
    "path": "packages/pug/test/cases/include-with-text-head.pug",
    "content": "head\n  script(type='text/javascript').\n    alert('hello world');\n"
  },
  {
    "path": "packages/pug/test/cases/include-with-text.html",
    "content": "<html>\n  <head>\n    <script type=\"text/javascript\">alert('hello world');</script>\n    <script src=\"/caustic.js\"></script>\n    <script src=\"/app.js\"></script>\n  </head>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/include-with-text.pug",
    "content": "html\n  include include-with-text-head.pug\n    script(src='/caustic.js')\n    script(src='/app.js')\n"
  },
  {
    "path": "packages/pug/test/cases/include.script.html",
    "content": "<script id=\"pet-template\" type=\"text/x-template\">\n  <div class=\"pet\">\n    <h1>{{name}}</h1>\n    <p>{{name}} is a {{species}} that is {{age}} old</p>\n  </div>\n</script>"
  },
  {
    "path": "packages/pug/test/cases/include.script.pug",
    "content": "script#pet-template(type='text/x-template')\n  include auxiliary/pet.pug\n"
  },
  {
    "path": "packages/pug/test/cases/include.yield.nested.html",
    "content": "<html>\n  <head>\n    <title></title>\n  </head>\n  <body>\n    <h1>Page</h1>\n    <div id=\"content\">\n      <div id=\"content-wrapper\">\n        <p>some content</p>\n        <p>and some more</p>\n      </div>\n    </div>\n    <div id=\"footer\">\n      <stuff></stuff>\n    </div>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/include.yield.nested.pug",
    "content": "\ninclude auxiliary/yield-nested.pug\n  p some content\n  p and some more\n"
  },
  {
    "path": "packages/pug/test/cases/includes-with-ext-js.html",
    "content": "<pre><code>var x = '\\n here is some \\n new lined text';\n</code></pre>\n"
  },
  {
    "path": "packages/pug/test/cases/includes-with-ext-js.pug",
    "content": "pre\n  code\n    include javascript-new-lines.js\n"
  },
  {
    "path": "packages/pug/test/cases/includes.html",
    "content": "<p>bar</p>\n<body>\n  <p>:)</p><script>\n  console.log(\"foo\\nbar\")\n</script>\n  <script type=\"text/javascript\">\nvar STRING_SUBSTITUTIONS = {\n  // table of character substitutions\n  '\\t': '\\\\t',\n  '\\r': '\\\\r',\n  '\\n': '\\\\n',\n  '\"': '\\\\\"',\n  '\\\\': '\\\\\\\\',\n};\n\n\n  </script>\n</body>"
  },
  {
    "path": "packages/pug/test/cases/includes.pug",
    "content": "\ninclude auxiliary/mixins.pug\n\n+foo\n\nbody\n  include auxiliary/smile.html\n  include auxiliary/escapes.html\n  script(type=\"text/javascript\")\n    include:verbatim auxiliary/includable.js\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.alert-dialog.html",
    "content": "<div class=\"window\"><a class=\"close\" href=\"#\">Close</a>\n  <div class=\"dialog\">\n    <h1>Alert!</h1>\n    <p>I'm an alert!</p>\n  </div>\n</div>\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.alert-dialog.pug",
    "content": "\nextends auxiliary/dialog.pug\n\nblock content\n  h1 Alert!\n  p I'm an alert!\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.defaults.html",
    "content": "<html>\n  <head>\n    <script src=\"jquery.js\"></script>\n    <script src=\"keymaster.js\"></script>\n    <script src=\"caustic.js\"></script>\n  </head>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/inheritance.defaults.pug",
    "content": "html\n  head\n    block head\n      script(src='jquery.js')\n      script(src='keymaster.js')\n      script(src='caustic.js')"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n    <script src=\"jquery.js\"></script>\n  </head>\n  <body>\n    <h2>Page</h2>\n    <p>Some content</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.include.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n    <script src=\"jquery.js\"></script>\n  </head>\n  <body>\n    <h2>Page</h2>\n    <p>Some content</p>\n    <div class=\"window\"><a class=\"close\" href=\"#\">Close</a>\n      <h2>Awesome</h2>\n      <p>Now we can extend included blocks!</p>\n    </div>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.include.pug",
    "content": "\nextend auxiliary/layout.include.pug\n\nblock head\n  script(src='jquery.js')\n\nblock content\n  h2 Page\n  p Some content\n\nblock window-content\n  h2 Awesome\n  p Now we can extend included blocks!\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.mixins.block.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n  </head>\n  <body>\n    <article>\n      <p>Hello World!</p>\n    </article>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.mixins.block.pug",
    "content": "extend auxiliary/inheritance.extend.mixin.block.pug\n\nblock content\n  p Hello World!\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.mixins.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n  </head>\n  <body>\n    <h1>The meaning of life</h1>\n    <p>Foo bar baz!</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.mixins.pug",
    "content": "\nextend auxiliary/layout.pug\n\nmixin article(title)\n  if title\n    h1= title\n  block\n\nblock content\n  +article(\"The meaning of life\")\n    p Foo bar baz!\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.pug",
    "content": "\nextend auxiliary/layout.pug\n\nblock head\n  script(src='jquery.js')\n\nblock content\n  h2 Page\n  p Some content\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.recursive.html",
    "content": "<h1>grand-grandparent</h1>\n<h2>grandparent</h2>\n<h3>parent</h3>\n<h4>child</h4>"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.recursive.pug",
    "content": "extends /auxiliary/inheritance.extend.recursive-parent.pug\n\nblock parent\n    h4 child"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.whitespace.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n    <script src=\"jquery.js\"></script>\n  </head>\n  <body>\n    <h2>Page</h2>\n    <p>Some content</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/inheritance.extend.whitespace.pug",
    "content": "\nextend auxiliary/layout.pug\n\nblock head\n\n  script(src='jquery.js')\n\nblock content\n  \n    \n  \n  h2 Page\n  p Some content\n"
  },
  {
    "path": "packages/pug/test/cases/inheritance.html",
    "content": "<html>\n  <head>\n    <title>My Application</title>\n    <script src=\"jquery.js\"></script>\n  </head>\n  <body>\n    <h2>Page</h2>\n    <p>Some content</p>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/inheritance.pug",
    "content": "\nextends auxiliary/layout.pug\n\nblock head\n  script(src='jquery.js')\n\nblock content\n  h2 Page\n  p Some content\n"
  },
  {
    "path": "packages/pug/test/cases/inline-tag.html",
    "content": "\n<p>bing <strong>foo</strong> bong</p>\n<p>\n  bing\n  <strong>foo</strong>\n  <strong>[foo]</strong>\n  \n  bong\n  \n</p>\n<p>\n  bing\n  <strong>foo</strong>\n  <strong>[foo]</strong>\n  \n  bong\n</p>\n<p>\n  #[strong escaped]\n  #[<strong>escaped</strong>\n</p>"
  },
  {
    "path": "packages/pug/test/cases/inline-tag.pug",
    "content": "p bing #[strong foo] bong\n\np.\n  bing\n  #[strong foo]\n  #[strong= '[foo]']\n  #[- var foo = 'foo]']\n  bong\n\np\n  | bing\n  | #[strong foo]\n  | #[strong= '[foo]']\n  | #[- var foo = 'foo]']\n  | bong\n\np.\n  \\#[strong escaped]\n  \\#[#[strong escaped]\n"
  },
  {
    "path": "packages/pug/test/cases/intepolated-elements.html",
    "content": "\n<p><a class=\"rho rho--modifier\" href=\"#\">with inline link</a></p>\n<p>Some text <a class=\"rho rho--modifier\" href=\"#\"></a></p>\n<p>Some text <a class=\"rho rho--modifier\" href=\"#\">with inline link</a></p>"
  },
  {
    "path": "packages/pug/test/cases/intepolated-elements.pug",
    "content": "p #[a.rho(href='#', class='rho--modifier') with inline link]\np Some text #[a.rho(href='#', class='rho--modifier')]\np Some text #[a.rho(href='#', class='rho--modifier') with inline link]"
  },
  {
    "path": "packages/pug/test/cases/interpolated-mixin.html",
    "content": "\n<p>This also works <a href=\"http://www.bing.com\">http://www.bing.com</a> so hurrah for Pug\n</p>"
  },
  {
    "path": "packages/pug/test/cases/interpolated-mixin.pug",
    "content": "mixin linkit(url)\n  a(href=url)= url\n\np This also works #[+linkit('http://www.bing.com')] so hurrah for Pug"
  },
  {
    "path": "packages/pug/test/cases/interpolation.escape.html",
    "content": "<foo>\n  some\n  #{text}\n  here\n  My ID is {42}\n</foo>"
  },
  {
    "path": "packages/pug/test/cases/interpolation.escape.pug",
    "content": "\n- var id = 42;\nfoo\n  | some\n  | \\#{text}\n  | here\n  | My ID #{\"is {\" + id + \"}\"}"
  },
  {
    "path": "packages/pug/test/cases/javascript-new-lines.js",
    "content": "var x = '\\n here is some \\n new lined text';\n"
  },
  {
    "path": "packages/pug/test/cases/layout.append.html",
    "content": "<html>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/layout.append.pug",
    "content": "\nextends ../fixtures/append/app-layout.pug\n\nblock append head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/cases/layout.append.without-block.html",
    "content": "<html>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/layout.append.without-block.pug",
    "content": "\nextends ../fixtures/append-without-block/app-layout.pug\n\nappend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/cases/layout.multi.append.prepend.block.html",
    "content": "<p class=\"last prepend\">Last prepend must appear at top</p>\n<p class=\"first prepend\">Something prepended to content</p>\n<div class=\"content\">Defined content</div>\n<p class=\"first append\">Something appended to content</p>\n<p class=\"last append\">Last append must be most last</p>\n<script src=\"foo.js\"></script>\n<script src=\"/app.js\"></script>\n<script src=\"jquery.js\"></script>"
  },
  {
    "path": "packages/pug/test/cases/layout.multi.append.prepend.block.pug",
    "content": "extends ../fixtures/multi-append-prepend-block/redefine.pug\n\nappend content\n\tp.first.append Something appended to content\n\nprepend content\n\tp.first.prepend Something prepended to content\n\nappend content\n\tp.last.append Last append must be most last\n\nprepend content\n\tp.last.prepend Last prepend must appear at top\n\nappend head\n\tscript(src='jquery.js')\n\nprepend head\n\tscript(src='foo.js')\n"
  },
  {
    "path": "packages/pug/test/cases/layout.prepend.html",
    "content": "<html>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/layout.prepend.pug",
    "content": "\nextends ../fixtures/prepend/app-layout.pug\n\nblock prepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/cases/layout.prepend.without-block.html",
    "content": "<html>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/layout.prepend.without-block.pug",
    "content": "\nextends ../fixtures/prepend-without-block/app-layout.pug\n\nprepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/cases/mixin-at-end-of-file.html",
    "content": "<section class=\"slide\">\n  <p>some awesome content</p>\n</section>\n"
  },
  {
    "path": "packages/pug/test/cases/mixin-at-end-of-file.pug",
    "content": "include ./auxiliary/mixin-at-end-of-file.pug\n\n+slide()\n  p some awesome content\n"
  },
  {
    "path": "packages/pug/test/cases/mixin-block-with-space.html",
    "content": "\n<div>This text should appear\n</div>"
  },
  {
    "path": "packages/pug/test/cases/mixin-block-with-space.pug",
    "content": "mixin m(id)\n  div\n    block    \n\n+m()\n  | This text should appear"
  },
  {
    "path": "packages/pug/test/cases/mixin-hoist.html",
    "content": "<html>\n  <body>\n    <h1>Pug</h1>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/mixin-hoist.pug",
    "content": "\nmixin foo()\n  h1= title\n\nhtml\n  body\n    +foo\n"
  },
  {
    "path": "packages/pug/test/cases/mixin-via-include.html",
    "content": "<p>bar</p>"
  },
  {
    "path": "packages/pug/test/cases/mixin-via-include.pug",
    "content": "//- regression test for https://github.com/pugjs/pug/issues/1435\n\ninclude ../fixtures/mixin-include.pug\n\n+bang"
  },
  {
    "path": "packages/pug/test/cases/mixin.attrs.html",
    "content": "<body>\n  <div class=\"centered\" id=\"First\">Hello World\n  </div>\n  <div class=\"centered\" id=\"Second\">\n    <h1>Section 1</h1>\n    <p>Some important content.</p>\n  </div>\n  <div class=\"centered\" id=\"Third\">\n    <h1 class=\"foo bar\">Section 2</h1>\n    <p>Even more important content.</p>\n    <div class=\"footer\"><a href=\"menu.html\">Back</a></div>\n  </div>\n  <div class=\"stretch\">\n    <div class=\"centered\">\n      <h1 class=\"highlight\">Section 3</h1>\n      <p>Last content.</p>\n      <div class=\"footer\"><a href=\"#\">Back</a></div>\n    </div>\n  </div>\n  <div class=\"bottom foo bar\" name=\"end\" id=\"Last\" data-attr=\"baz\">\n    <p>Some final words.</p>\n  </div>\n  <div class=\"bottom class1 class2\">\n  </div>\n</body>\n<div class=\"thing foo bar thunk\" attr1=\"foo\" attr2=\"bar\" attr3=\"baz\" data-foo=\"&lt;biz&gt;\" data-bar=\"<biz>\"></div>\n<div data-profile=\"profile\" data-creator-name=\"name\">work</div>\n<div class=\"thing baz\" attr1=\"foo\" attr2=\"bar\" attr3=\"qux\"></div>\n<p>1</p>\n<p>2</p>\n<p>3</p>\n<p>4</p>"
  },
  {
    "path": "packages/pug/test/cases/mixin.attrs.pug",
    "content": "mixin centered(title)\n  div.centered(id=attributes.id)\n    - if (title)\n      h1(class=attributes.class)= title\n    block\n    - if (attributes.href)\n      .footer\n        a(href=attributes.href) Back\n\nmixin main(title)\n  div.stretch\n    +centered(title).highlight&attributes(attributes)\n      block\n\nmixin bottom\n  div.bottom&attributes(attributes)\n    block\n\nbody\n  +centered#First Hello World\n  +centered('Section 1')#Second\n    p Some important content.\n  +centered('Section 2')#Third.foo(href='menu.html', class='bar')\n    p Even more important content.\n  +main('Section 3')(href='#')\n    p Last content.\n  +bottom.foo(class='bar', name='end', id='Last', data-attr='baz')\n    p Some final words.\n  +bottom(class=['class1', 'class2'])\n\nmixin foo\n  div.thing(attr1='foo', attr2='bar')&attributes(attributes)\n\n- var val = '<biz>'\n- var classes = ['foo', 'bar']\n+foo(attr3='baz' data-foo=val data-bar!=val class=classes).thunk\n\n//- Regression test for #1424\nmixin work_filmstrip_item(work)\n  div&attributes(attributes)= work\n+work_filmstrip_item('work')(\"data-profile\"='profile', \"data-creator-name\"='name')\n\nmixin my-mixin(arg1, arg2, arg3, arg4)\n  p= arg1\n  p= arg2\n  p= arg3\n  p= arg4\n\n+foo(\n  attr3=\"qux\"\n  class=\"baz\"\n)\n\n+my-mixin(\n'1',\n      '2',\n  '3',\n      '4'\n)\n"
  },
  {
    "path": "packages/pug/test/cases/mixin.block-tag-behaviour.html",
    "content": "<html>\n  <body>\n    <section class=\"article\">\n      <h1>Foo</h1>\n      <p>I'm article foo</p>\n    </section>\n  </body>\n</html>\n<html>\n  <body>\n    <section class=\"article\">\n      <h1>Something</h1>\n      <p>\n        I'm a much longer\n        text-only article,\n        but you can still\n        inline html tags\n        in me if you want.\n      </p>\n    </section>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/mixin.block-tag-behaviour.pug",
    "content": "\nmixin article(name)\n  section.article\n    h1= name\n    block\n\nhtml\n  body\n    +article('Foo'): p I'm article foo\n\nmixin article(name)\n  section.article\n    h1= name\n    p\n      block\n\nhtml\n  body\n    +article('Something').\n      I'm a much longer\n      text-only article,\n      but you can still\n      inline html tags\n      in me if you want."
  },
  {
    "path": "packages/pug/test/cases/mixin.blocks.html",
    "content": "<html>\n  <body>\n    <form method=\"GET\" action=\"/search\">\n      <input type=\"hidden\" name=\"_csrf\" value=\"hey\"/>\n      <input type=\"text\" name=\"query\" placeholder=\"Search\"/>\n      <input type=\"submit\" value=\"Search\"/>\n    </form>\n  </body>\n</html>\n<html>\n  <body>\n    <form method=\"POST\" action=\"/search\">\n      <input type=\"hidden\" name=\"_csrf\" value=\"hey\"/>\n      <input type=\"text\" name=\"query\" placeholder=\"Search\"/>\n      <input type=\"submit\" value=\"Search\"/>\n    </form>\n  </body>\n</html>\n<html>\n  <body>\n    <form method=\"POST\" action=\"/search\">\n      <input type=\"hidden\" name=\"_csrf\" value=\"hey\"/>\n    </form>\n  </body>\n</html>\n<div id=\"foo\">\n  <div id=\"bar\">\n    <p>one</p>\n    <p>two</p>\n    <p>three</p>\n  </div>\n</div>\n<div id=\"baz\">123\n</div>"
  },
  {
    "path": "packages/pug/test/cases/mixin.blocks.pug",
    "content": "\n\nmixin form(method, action)\n  form(method=method, action=action)\n    - var csrf_token_from_somewhere = 'hey'\n    input(type='hidden', name='_csrf', value=csrf_token_from_somewhere)\n    block\n\nhtml\n  body\n    +form('GET', '/search')\n      input(type='text', name='query', placeholder='Search')\n      input(type='submit', value='Search')\n\nhtml\n  body\n    +form('POST', '/search')\n      input(type='text', name='query', placeholder='Search')\n      input(type='submit', value='Search')\n\nhtml\n  body\n    +form('POST', '/search')\n\nmixin bar()\n  #bar\n    block\n\nmixin foo()\n  #foo\n    +bar\n      block\n\n+foo\n  p one\n  p two\n  p three\n\n\nmixin baz\n    #baz\n        block\n\n+baz()= '123'"
  },
  {
    "path": "packages/pug/test/cases/mixin.merge.html",
    "content": "<body>\n  <p class=\"bar hello\">One</p>\n  <p class=\"baz quux hello\">Two</p>\n  <p class=\"hello\">Three</p>\n  <p class=\"bar baz hello\">Four</p>\n  <p class=\"bar\" id=\"world\">One</p>\n  <p class=\"baz quux\" id=\"world\">Two</p>\n  <p id=\"world\">Three</p>\n  <p class=\"bar baz\" id=\"world\">Four</p>\n  <p class=\"bar hello\" id=\"world\">One</p>\n  <p class=\"baz quux hello\" id=\"world\">Two</p>\n  <p class=\"hello\" id=\"world\">Three</p>\n  <p class=\"bar baz hello\" id=\"world\">Four</p>\n  <p class=\"bar hello world\">One</p>\n  <p class=\"baz quux hello world\">Two</p>\n  <p class=\"hello world\">Three</p>\n  <p class=\"bar baz hello world\">Four</p>\n  <p class=\"bar hello\">One</p>\n  <p class=\"baz quux hello\">Two</p>\n  <p class=\"hello\">Three</p>\n  <p class=\"bar baz hello\">Four</p>\n  <p class=\"bar hello world\">One</p>\n  <p class=\"baz quux hello world\">Two</p>\n  <p class=\"hello world\">Three</p>\n  <p class=\"bar baz hello world\">Four</p>\n  <p class=\"bar\">One</p>\n  <p class=\"baz quux\">Two</p>\n  <p>Three</p>\n  <p class=\"bar baz\">Four</p>\n  <p class=\"bar hello\">One</p>\n  <p class=\"baz quux hello\">Two</p>\n  <p class=\"hello\">Three</p>\n  <p class=\"bar baz hello\">Four</p>\n</body>\n"
  },
  {
    "path": "packages/pug/test/cases/mixin.merge.pug",
    "content": "mixin foo\n  p.bar&attributes(attributes) One\n  p.baz.quux&attributes(attributes) Two\n  p&attributes(attributes) Three\n  p.bar&attributes(attributes)(class=\"baz\") Four\n\nbody\n  +foo.hello\n  +foo#world\n  +foo.hello#world\n  +foo.hello.world\n  +foo(class=\"hello\")\n  +foo.hello(class=\"world\")\n  +foo\n  +foo&attributes({class: \"hello\"})"
  },
  {
    "path": "packages/pug/test/cases/mixins-unused.html",
    "content": "<body></body>"
  },
  {
    "path": "packages/pug/test/cases/mixins-unused.pug",
    "content": "mixin never-called\n  .wtf This isn't something we ever want to output\nbody"
  },
  {
    "path": "packages/pug/test/cases/mixins.html",
    "content": "\n<div id=\"user\">\n  <h1>Tobi</h1>\n  <div class=\"comments\">\n    <div class=\"comment\">\n      <h2>This</h2>\n      <p class=\"body\">is regular, javascript</p>\n    </div>\n  </div>\n</div>\n<body>\n  <ul>\n    <li>foo</li>\n    <li>bar</li>\n    <li>baz</li>\n  </ul>\n  <ul>\n    <li>foo</li>\n    <li>bar</li>\n    <li>baz</li>\n  </ul>\n</body>\n<div id=\"interpolation\">This is interpolated</div>"
  },
  {
    "path": "packages/pug/test/cases/mixins.pug",
    "content": "mixin comment(title, str)\n  .comment\n    h2= title\n    p.body= str\n\n\nmixin comment (title, str)\n  .comment\n    h2= title\n    p.body= str\n\n#user\n  h1 Tobi\n  .comments\n    +comment('This',\n            (('is regular, javascript')))\n\nmixin list\n  ul\n    li foo\n    li bar\n    li baz\n\nbody\n  +list()\n  + list()\n\nmixin foobar(str)\n  div#interpolation= str + 'interpolated'\n\n- var suffix = \"bar\"\n+#{'foo' + suffix}('This is ')\n"
  },
  {
    "path": "packages/pug/test/cases/mixins.rest-args.html",
    "content": "<ul>\n  <li>1</li>\n  <li>2</li>\n  <li>3</li>\n  <li>4</li>\n</ul>\n"
  },
  {
    "path": "packages/pug/test/cases/mixins.rest-args.pug",
    "content": "mixin list(tag, ...items)\n  #{tag}\n    each item in items\n      li= item\n\n+list('ul', 1, 2, 3, 4)\n"
  },
  {
    "path": "packages/pug/test/cases/namespaces.html",
    "content": "<fb:user:role>Something</fb:user:role>\n<foo fb:foo=\"bar\"></foo>"
  },
  {
    "path": "packages/pug/test/cases/namespaces.pug",
    "content": "fb:user:role Something\nfoo(fb:foo='bar')"
  },
  {
    "path": "packages/pug/test/cases/nesting.html",
    "content": "<ul>\n  <li>a</li>\n  <li>b</li>\n  <li>\n    <ul>\n      <li>c</li>\n      <li>d</li>\n    </ul>\n  </li>\n  <li>e</li>\n</ul>"
  },
  {
    "path": "packages/pug/test/cases/nesting.pug",
    "content": "ul\n  li a\n  li b\n  li\n    ul\n        li c\n        li d\n  li e"
  },
  {
    "path": "packages/pug/test/cases/pipeless-comments.html",
    "content": "\n<!--\n     .foo\n\t.bar\n.hey\n-->"
  },
  {
    "path": "packages/pug/test/cases/pipeless-comments.pug",
    "content": "//\n       .foo\n  \t.bar\n  .hey\n"
  },
  {
    "path": "packages/pug/test/cases/pipeless-filters.html",
    "content": "<pre><code>code sample\n</code></pre><h1>Heading</h1>\n"
  },
  {
    "path": "packages/pug/test/cases/pipeless-filters.pug",
    "content": ":markdown-it\n      code sample\n\n  # Heading\n"
  },
  {
    "path": "packages/pug/test/cases/pipeless-tag.html",
    "content": "\n<pre>  what\nis going on</pre>"
  },
  {
    "path": "packages/pug/test/cases/pipeless-tag.pug",
    "content": "pre.\n    what\n  is #{'going'} #[| #{'on'}]\n"
  },
  {
    "path": "packages/pug/test/cases/pre.html",
    "content": "<pre>foo\nbar\nbaz\n</pre>\n<pre><code>foo\nbar\nbaz</code></pre>"
  },
  {
    "path": "packages/pug/test/cases/pre.pug",
    "content": "pre.\n  foo\n  bar\n  baz\n\npre\n  code.\n    foo\n    bar\n    baz"
  },
  {
    "path": "packages/pug/test/cases/quotes.html",
    "content": "<p>\"foo\"</p>\n<p>'foo'</p>"
  },
  {
    "path": "packages/pug/test/cases/quotes.pug",
    "content": "p \"foo\"\np 'foo'"
  },
  {
    "path": "packages/pug/test/cases/regression.1794.html",
    "content": "<div class=\"test\"></div>"
  },
  {
    "path": "packages/pug/test/cases/regression.1794.pug",
    "content": "extends ./auxiliary/1794-extends.pug\n \nblock content\n  include ./auxiliary/1794-include.pug"
  },
  {
    "path": "packages/pug/test/cases/regression.784.html",
    "content": "<div class=\"url\">google.com</div>"
  },
  {
    "path": "packages/pug/test/cases/regression.784.pug",
    "content": "- var url = 'http://www.google.com'\n.url #{url.replace('http://', '').replace(/^www\\./, '')}"
  },
  {
    "path": "packages/pug/test/cases/script.whitespace.html",
    "content": "<script>\n  if (foo) {\n    \n    bar();\n  \n  }\n</script>"
  },
  {
    "path": "packages/pug/test/cases/script.whitespace.pug",
    "content": "script.\n  if (foo) {\n    \n    bar();\n  \n  }"
  },
  {
    "path": "packages/pug/test/cases/scripts.html",
    "content": "<script>\n  if (foo) {\n    bar();\n  }\n</script>\n<script>foo()</script>\n<script>foo()</script>\n<script></script>\n<div></div>"
  },
  {
    "path": "packages/pug/test/cases/scripts.non-js.html",
    "content": "<script id=\"user-template\" type=\"text/template\">\n  <div id=\"user\">\n    <h1><%= user.name %></h1>\n    <p><%= user.description %></p>\n  </div>\n</script>\n<script id=\"user-template\" type=\"text/template\">\n  if (foo) {\n    bar();\n  }\n</script>"
  },
  {
    "path": "packages/pug/test/cases/scripts.non-js.pug",
    "content": "script#user-template(type='text/template')\n  #user\n    h1 <%= user.name %>\n    p <%= user.description %>\n\nscript#user-template(type='text/template').\n  if (foo) {\n    bar();\n  }"
  },
  {
    "path": "packages/pug/test/cases/scripts.pug",
    "content": "script.\n  if (foo) {\n    bar();\n  }\nscript!= 'foo()'\nscript foo()\nscript\ndiv"
  },
  {
    "path": "packages/pug/test/cases/self-closing-html.html",
    "content": "<!DOCTYPE html>\n<html>\n  <body><br/></body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/self-closing-html.pug",
    "content": "doctype html\nhtml\n  body\n    br/\n"
  },
  {
    "path": "packages/pug/test/cases/single-period.html",
    "content": "<span>.</span>"
  },
  {
    "path": "packages/pug/test/cases/single-period.pug",
    "content": "span ."
  },
  {
    "path": "packages/pug/test/cases/some-included.styl",
    "content": "body\n  padding 10px\n"
  },
  {
    "path": "packages/pug/test/cases/some.md",
    "content": "Just _some_ markdown **tests**.\n\nWith new line.\n"
  },
  {
    "path": "packages/pug/test/cases/some.styl",
    "content": "@import \"some-included\"\n"
  },
  {
    "path": "packages/pug/test/cases/source.html",
    "content": "<html>\n  <audio preload=\"auto\" autobuffer=\"autobuffer\" controls=\"controls\">\n    <source src=\"foo\"/>\n    <source src=\"bar\"/>\n  </audio>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/source.pug",
    "content": "html\n  audio(preload='auto', autobuffer, controls)\n    source(src='foo')\n    source(src='bar')"
  },
  {
    "path": "packages/pug/test/cases/styles.html",
    "content": "<html>\n  <head>\n    <style>\n      body {\n        padding: 50px;\n      }\n    </style>\n  </head>\n  <body>\n    <div style=\"color:red;background:green\"></div>\n    <div style=\"color:red;background:green;\"></div>\n    <div style=\"color:red;background:green\"></div>\n    <div style=\"color:red;background:green;\"></div>\n        <div style=\"color:red;background:green\"></div>\n        <div style=\"color:red;background:green;\"></div>\n    <div style=\"color:red;background:green;\"></div>\n    <div style=\"color:red;background:green;\"></div>\n        <div style=\"color:red;background:green;\"></div>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/cases/styles.pug",
    "content": "html\n  head\n    style.\n      body {\n        padding: 50px;\n      }\n  body\n    div(style='color:red;background:green')\n    div(style={color: 'red', background: 'green'})\n    div&attributes({style: 'color:red;background:green'})\n    div&attributes({style: {color: 'red', background: 'green'}})\n    mixin div()\n      div&attributes(attributes)\n    +div(style='color:red;background:green')\n    +div(style={color: 'red', background: 'green'})\n    - var bg = 'green';\n    div(style={color: 'red', background: bg})\n    div&attributes({style: {color: 'red', background: bg}})\n    +div(style={color: 'red', background: bg})\n"
  },
  {
    "path": "packages/pug/test/cases/tag.interpolation.html",
    "content": "<p>value</p>\n<p foo=\"bar\">value</p>\n<a something=\"something\">here</a>\n<ul>\n  <li><span><img class=\"icon\" src=\"contact\"/>Contact</span>\n  </li>\n  <li><a href=\"/contact\"><img class=\"icon\"/>Contact</a>\n  </li>\n</ul>\n"
  },
  {
    "path": "packages/pug/test/cases/tag.interpolation.pug",
    "content": "\n- var tag = 'p'\n- var foo = 'bar'\n\n#{tag} value\n#{tag}(foo='bar') value\n#{foo ? 'a' : 'li'}(something) here\n\nmixin item(icon)\n  li\n    if attributes.href\n      a&attributes(attributes)\n        img.icon(src=icon)\n        block\n    else\n      span&attributes(attributes)\n        img.icon(src=icon)\n        block\n\nul\n  +item('contact') Contact\n  +item(href='/contact') Contact\n"
  },
  {
    "path": "packages/pug/test/cases/tags.self-closing.html",
    "content": "\n<body>\n  <foo></foo>\n  <foo bar=\"baz\"></foo>\n  <foo/>\n  <foo bar=\"baz\"/>\n  <foo>/</foo>\n  <foo bar=\"baz\">/</foo>\n  <foo/>\n  <foo bar=\"baz\"/>\n  <foo>/</foo>\n  <foo bar=\"baz\">/</foo><img/><img/>\n  <foo/>\n</body>"
  },
  {
    "path": "packages/pug/test/cases/tags.self-closing.pug",
    "content": "\nbody\n  foo\n  foo(bar='baz')\n  foo/\n  foo(bar='baz')/\n  foo /\n  foo(bar='baz') /\n  #{'foo'}/\n  #{'foo'}(bar='baz')/\n  #{'foo'} /\n  #{'foo'}(bar='baz') /\n  //- can have a single space after them\n  img \n  //- can have lots of white space after them\n  img    \n  #{\n    'foo'\n  }/\n"
  },
  {
    "path": "packages/pug/test/cases/template.html",
    "content": "<script type=\"text/x-template\">\n  <article>\n    <h2>{{title}}</h2>\n    <p>{{description}}</p>\n  </article>\n</script>\n<script type=\"text/x-template\">\n  article\n    h2 {{title}}\n    p {{description}}\n</script>"
  },
  {
    "path": "packages/pug/test/cases/template.pug",
    "content": "script(type='text/x-template')\n  article\n    h2 {{title}}\n    p {{description}}\n\nscript(type='text/x-template').\n  article\n    h2 {{title}}\n    p {{description}}\n"
  },
  {
    "path": "packages/pug/test/cases/text-block.html",
    "content": "<label>Username:\n  <input type=\"text\" name=\"user[name]\"/>\n</label>\n<label>Password:\n  <input type=\"text\" name=\"user[pass]\"/>\n</label>"
  },
  {
    "path": "packages/pug/test/cases/text-block.pug",
    "content": "\nlabel Username:\n  input(type='text', name='user[name]')\n\nlabel Password:\n  input(type='text', name='user[pass]')"
  },
  {
    "path": "packages/pug/test/cases/text.html",
    "content": "\n<option value=\"\">-- (selected) --</option>\n<p></p>\n<p></p>\n<p>\n  foo\n  bar\n  \n  \n  baz\n</p>\n<p>\n  foo\n  \n  \n  bar\n  baz\n  \n</p>foo\n\n\nbar\nbaz\n\n<pre>foo\n  bar\n    baz\n.</pre>\n<pre>foo\n  bar\n    baz\n.\n</pre>foo\n  bar\n    baz\n.\n"
  },
  {
    "path": "packages/pug/test/cases/text.pug",
    "content": "option(value='') -- (selected) --\n\np\n\np.\n\np\n  | foo\n  | bar\n  |\n  |\n  | baz\n\np.\n  foo\n\n\n  bar\n  baz\n\n.\n\n.\n  foo\n\n\n  bar\n  baz\n\npre\n  | foo\n  |   bar\n  |     baz\n  | .\n\npre.\n  foo\n    bar\n      baz\n  .\n\n.\n  foo\n    bar\n      baz\n  .\n"
  },
  {
    "path": "packages/pug/test/cases/utf8bom.html",
    "content": "<p>\"foo\"</p>\n"
  },
  {
    "path": "packages/pug/test/cases/utf8bom.pug",
    "content": "﻿p \"foo\"\n"
  },
  {
    "path": "packages/pug/test/cases/vars.html",
    "content": "<a class=\"1 2 3\" id=\"bar\"></a>"
  },
  {
    "path": "packages/pug/test/cases/vars.pug",
    "content": "- var foo = 'bar'\n- var list = [1,2,3]\na(class=list, id=foo)"
  },
  {
    "path": "packages/pug/test/cases/while.html",
    "content": "<ul>\n  <li>2</li>\n  <li>3</li>\n  <li>4</li>\n  <li>5</li>\n  <li>6</li>\n  <li>7</li>\n  <li>8</li>\n  <li>9</li>\n  <li>10</li>\n</ul>\n"
  },
  {
    "path": "packages/pug/test/cases/while.pug",
    "content": "- var x = 1;\nul\n  while x < 10\n    - x++;\n    li= x\n"
  },
  {
    "path": "packages/pug/test/cases/xml.html",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<category term=\"some term\"/>\n<link>http://google.com</link>"
  },
  {
    "path": "packages/pug/test/cases/xml.pug",
    "content": "doctype xml\ncategory(term='some term')/\nlink http://google.com"
  },
  {
    "path": "packages/pug/test/cases/yield-before-conditional-head.html",
    "content": "<head>\n  <script src=\"/jquery.js\"></script>\n</head>"
  },
  {
    "path": "packages/pug/test/cases/yield-before-conditional-head.pug",
    "content": "head\n  script(src='/jquery.js')\n  yield\n  if false\n    script(src='/jquery.ui.js')\n"
  },
  {
    "path": "packages/pug/test/cases/yield-before-conditional.html",
    "content": "<html>\n  <body>\n    <head>\n      <script src=\"/jquery.js\"></script>\n      <script src=\"/caustic.js\"></script>\n      <script src=\"/app.js\"></script>\n    </head>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/yield-before-conditional.pug",
    "content": "html\n  body\n    include yield-before-conditional-head.pug\n      script(src='/caustic.js')\n      script(src='/app.js')\n"
  },
  {
    "path": "packages/pug/test/cases/yield-head.html",
    "content": "<head>\n  <script src=\"/jquery.js\"></script>\n  <script src=\"/jquery.ui.js\"></script>\n</head>"
  },
  {
    "path": "packages/pug/test/cases/yield-head.pug",
    "content": "head\n  script(src='/jquery.js')\n  yield\n  script(src='/jquery.ui.js')\n"
  },
  {
    "path": "packages/pug/test/cases/yield-title-head.html",
    "content": "<head>\n  <title></title>\n  <script src=\"/jquery.js\"></script>\n  <script src=\"/jquery.ui.js\"></script>\n</head>"
  },
  {
    "path": "packages/pug/test/cases/yield-title-head.pug",
    "content": "head\n  title\n    yield\n  script(src='/jquery.js')\n  script(src='/jquery.ui.js')\n"
  },
  {
    "path": "packages/pug/test/cases/yield-title.html",
    "content": "<html>\n  <body>\n    <head>\n      <title>My Title</title>\n      <script src=\"/jquery.js\"></script>\n      <script src=\"/jquery.ui.js\"></script>\n    </head>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/yield-title.pug",
    "content": "html\n  body\n    include yield-title-head.pug\n      | My Title\n"
  },
  {
    "path": "packages/pug/test/cases/yield.html",
    "content": "<html>\n  <body>\n    <head>\n      <script src=\"/jquery.js\"></script>\n      <script src=\"/caustic.js\"></script>\n      <script src=\"/app.js\"></script>\n      <script src=\"/jquery.ui.js\"></script>\n    </head>\n  </body>\n</html>"
  },
  {
    "path": "packages/pug/test/cases/yield.pug",
    "content": "html\n  body\n    include yield-head.pug\n      script(src='/caustic.js')\n      script(src='/app.js')\n"
  },
  {
    "path": "packages/pug/test/cases-es2015/attr.html",
    "content": "<div class=\"avatar-div\" style=\"background-image: url(https://www.gravatar.com/avatar/219b77f9d21de75e81851b6b886057c7)\"></div>\n"
  },
  {
    "path": "packages/pug/test/cases-es2015/attr.pug",
    "content": "- var avatar = '219b77f9d21de75e81851b6b886057c7'\n\ndiv.avatar-div(style=`background-image: url(https://www.gravatar.com/avatar/${avatar})`)\n"
  },
  {
    "path": "packages/pug/test/dependencies/dependency1.pug",
    "content": "strong dependency1\n"
  },
  {
    "path": "packages/pug/test/dependencies/dependency2.pug",
    "content": "include dependency3.pug\n"
  },
  {
    "path": "packages/pug/test/dependencies/dependency3.pug",
    "content": "strong dependency3\n"
  },
  {
    "path": "packages/pug/test/dependencies/extends1.pug",
    "content": "extends dependency1.pug\n"
  },
  {
    "path": "packages/pug/test/dependencies/extends2.pug",
    "content": "extends dependency2.pug\n"
  },
  {
    "path": "packages/pug/test/dependencies/include1.pug",
    "content": "include dependency1.pug\n"
  },
  {
    "path": "packages/pug/test/dependencies/include2.pug",
    "content": "include dependency2.pug\n"
  },
  {
    "path": "packages/pug/test/duplicate-block/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`layout with duplicate block 1`] = `\"<div>Hello World</div>\"`;\n\nexports[`layout with duplicate block 2`] = `\"<!DOCTYPE html><html><head></head><body><div>Hello World</div></body></html>\"`;\n"
  },
  {
    "path": "packages/pug/test/duplicate-block/index.pug",
    "content": "extends ./layout-with-duplicate-block.pug\n\nblock content\n  div Hello World\n"
  },
  {
    "path": "packages/pug/test/duplicate-block/index.test.js",
    "content": "const pug = require('../../');\n\ntest('layout with duplicate block', () => {\n  const outputWithAjax = pug.renderFile(__dirname + '/index.pug', {ajax: true});\n  const outputWithoutAjax = pug.renderFile(__dirname + '/index.pug', {\n    ajax: false,\n  });\n  expect(outputWithAjax).toMatchSnapshot();\n  expect(outputWithoutAjax).toMatchSnapshot();\n});\n"
  },
  {
    "path": "packages/pug/test/duplicate-block/layout-with-duplicate-block.pug",
    "content": "if ajax\n  block content\nelse\n  doctype html\n  html\n    head\n    body\n      block content\n"
  },
  {
    "path": "packages/pug/test/eachOf/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`Proper Usage Brackets 1`] = `\"<li>a</li><li>b</li><li>foo</li><li>bar</li>\"`;\n\nexports[`Proper Usage No Brackets 1`] = `\"<li>a</li><li>b</li><li>foo</li><li>bar</li>\"`;\n"
  },
  {
    "path": "packages/pug/test/eachOf/error/left-side.pug",
    "content": "each [key, val of users\n  li= key\n  li= val\n"
  },
  {
    "path": "packages/pug/test/eachOf/error/no-brackets.pug",
    "content": "each key, val of users\n  li= key\n  li= val\n"
  },
  {
    "path": "packages/pug/test/eachOf/error/one-val.pug",
    "content": "each [key] of users\n  li= key\n  li= val\n"
  },
  {
    "path": "packages/pug/test/eachOf/error/right-side.pug",
    "content": "each key, val] of users\n  li= key\n  li= val\n"
  },
  {
    "path": "packages/pug/test/eachOf/index.test.js",
    "content": "const pug = require('../../');\n\ndescribe('Inproper Usage', () => {\n  test('Only left-side bracket', () => {\n    expect(() => pug.compileFile(__dirname + '/error/left-side.pug')).toThrow(\n      'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'\n    );\n  });\n  test('Only right-side bracket', () => {\n    expect(() => pug.compileFile(__dirname + '/error/right-side.pug')).toThrow(\n      'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'\n    );\n  });\n  test('Only one value inside brackets', () => {\n    expect(() => pug.compileFile(__dirname + '/error/one-val.pug')).toThrow(\n      'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'\n    );\n  });\n  test('No brackets', () => {\n    expect(() => pug.compileFile(__dirname + '/error/no-brackets.pug')).toThrow(\n      'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'\n    );\n  });\n});\ndescribe('Proper Usage', () => {\n  test('Brackets', () => {\n    const html = pug.renderFile(__dirname + '/passing/brackets.pug', {\n      users: new Map([\n        ['a', 'b'],\n        ['foo', 'bar'],\n      ]),\n    });\n    expect(html).toMatchSnapshot();\n  });\n  test('No Brackets', () => {\n    const html = pug.renderFile(__dirname + '/passing/no-brackets.pug', {\n      users: new Map([\n        ['a', 'b'],\n        ['foo', 'bar'],\n      ]),\n    });\n    expect(html).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/pug/test/eachOf/passing/brackets.pug",
    "content": "each [key, val] of users\n  li= key\n  li= val\n"
  },
  {
    "path": "packages/pug/test/eachOf/passing/no-brackets.pug",
    "content": "each data of users\n  li= data[0]\n  li= data[1]\n"
  },
  {
    "path": "packages/pug/test/error.reporting.test.js",
    "content": "/**\n * Module dependencies.\n */\n\nvar pug = require('../');\nvar assert = require('assert');\nvar fs = require('fs');\n\n// Shortcut\n\nfunction getError(str, options) {\n  try {\n    pug.render(str, options);\n  } catch (ex) {\n    return ex;\n  }\n  throw new Error('Input was supposed to result in an error.');\n}\nfunction getFileError(name, options) {\n  try {\n    pug.renderFile(name, options);\n  } catch (ex) {\n    return ex;\n  }\n  throw new Error('Input was supposed to result in an error.');\n}\n\ndescribe('error reporting', function() {\n  describe('compile time errors', function() {\n    describe('with no filename', function() {\n      it('includes detail of where the error was thrown', function() {\n        var err = getError('foo(');\n        expect(err.message).toMatch(/Pug:1/);\n        expect(err.message).toMatch(/foo\\(/);\n      });\n    });\n    describe('with a filename', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getError('foo(', {filename: 'test.pug'});\n        expect(err.message).toMatch(/test\\.pug:1/);\n        expect(err.message).toMatch(/foo\\(/);\n      });\n    });\n    describe('with a layout without block declaration (syntax)', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/compile.with.layout.syntax.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/[\\\\\\/]layout.syntax.error.pug:2/);\n        expect(err.message).toMatch(/foo\\(/);\n      });\n    });\n    describe('with a layout without block declaration (locals)', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/compile.with.layout.locals.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/[\\\\\\/]layout.locals.error.pug:2/);\n        expect(err.message).toMatch(/is not a function/);\n      });\n    });\n    describe('with a include (syntax)', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/compile.with.include.syntax.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/[\\\\\\/]include.syntax.error.pug:2/);\n        expect(err.message).toMatch(/foo\\(/);\n      });\n    });\n    describe('with a include (locals)', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/compile.with.include.locals.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/[\\\\\\/]include.locals.error.pug:2/);\n        expect(err.message).toMatch(/foo\\(/);\n      });\n\n      it('handles compileDebug option properly', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/compile.with.include.locals.error.pug',\n          {\n            compileDebug: true,\n          }\n        );\n        expect(err.message).toMatch(/[\\\\\\/]include.locals.error.pug:2/);\n        expect(err.message).toMatch(/foo is not a function/);\n      });\n    });\n\n    describe('with a layout (without block) with an include (syntax)', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname +\n            '/fixtures/compile.with.layout.with.include.syntax.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/[\\\\\\/]include.syntax.error.pug:2/);\n        expect(err.message).toMatch(/foo\\(/);\n      });\n    });\n    describe('with a layout (without block) with an include (locals)', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname +\n            '/fixtures/compile.with.layout.with.include.locals.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/[\\\\\\/]include.locals.error.pug:2/);\n        expect(err.message).toMatch(/foo\\(/);\n      });\n    });\n    describe('block that is never actually used', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/invalid-block-in-extends.pug',\n          {}\n        );\n        expect(err.message).toMatch(/invalid-block-in-extends.pug:6/);\n        expect(err.message).toMatch(/content/);\n      });\n    });\n    describe('Unexpected character', function() {\n      it('includes details of where the error was thrown', function() {\n        var err = getError('ul?', {});\n        expect(err.message).toMatch(/unexpected text \\\"\\?\\\"/);\n      });\n    });\n    describe('Include filtered', function() {\n      it('includes details of where the error was thrown', function() {\n        var err = getError('include:verbatim()!', {});\n        assert(err.message.indexOf('unexpected text \"!\"') !== -1);\n        var err = getError('include:verbatim ', {});\n        assert(err.message.indexOf('missing path for include') !== -1);\n      });\n    });\n    describe('mixin block followed by a lot of blank lines', function() {\n      it('reports the correct line number', function() {\n        var err = getError('mixin test\\n    block\\n\\ndiv()Test');\n        var line = /Pug\\:(\\d+)/.exec(err.message);\n        assert(line, 'Line number must be included in error message');\n        assert(\n          line[1] === '4',\n          'The error should be reported on line 4, not line ' + line[1]\n        );\n      });\n    });\n  });\n  describe('runtime errors', function() {\n    describe('with no filename and `compileDebug` left undefined', function() {\n      it('just reports the line number', function() {\n        var sentinel = new Error('sentinel');\n        var err = getError('-foo()', {\n          foo: function() {\n            throw sentinel;\n          },\n        });\n        expect(err.message).toMatch(/on line 1/);\n      });\n    });\n    describe('with no filename and `compileDebug` set to `true`', function() {\n      it('includes detail of where the error was thrown', function() {\n        var sentinel = new Error('sentinel');\n        var err = getError('-foo()', {\n          foo: function() {\n            throw sentinel;\n          },\n          compileDebug: true,\n        });\n        expect(err.message).toMatch(/Pug:1/);\n        expect(err.message).toMatch(/-foo\\(\\)/);\n      });\n    });\n    describe('with a filename that does not correspond to a real file and `compileDebug` left undefined', function() {\n      it('just reports the line number', function() {\n        var sentinel = new Error('sentinel');\n        var err = getError('-foo()', {\n          foo: function() {\n            throw sentinel;\n          },\n          filename: 'fake.pug',\n        });\n        expect(err.message).toMatch(/on line 1/);\n      });\n    });\n    describe('with a filename that corresponds to a real file and `compileDebug` left undefined', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var sentinel = new Error('sentinel');\n        var path = __dirname + '/fixtures/runtime.error.pug';\n        var err = getError(fs.readFileSync(path, 'utf8'), {\n          foo: function() {\n            throw sentinel;\n          },\n          filename: path,\n        });\n        expect(err.message).toMatch(/fixtures[\\\\\\/]runtime\\.error\\.pug:1/);\n        expect(err.message).toMatch(/-foo\\(\\)/);\n      });\n    });\n    describe('in a mixin', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/runtime.with.mixin.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/mixin.error.pug:2/);\n        expect(err.message).toMatch(/Cannot read property 'length' of null/);\n      });\n    });\n    describe('in a layout', function() {\n      it('includes detail of where the error was thrown including the filename', function() {\n        var err = getFileError(\n          __dirname + '/fixtures/runtime.layout.error.pug',\n          {}\n        );\n        expect(err.message).toMatch(/layout.with.runtime.error.pug:3/);\n        expect(err.message).toMatch(\n          /Cannot read property 'length' of undefined/\n        );\n      });\n    });\n  });\n  describe('deprecated features', function() {\n    it('warns about element-with-multiple-attributes', function() {\n      var consoleWarn = console.warn;\n      var log = '';\n      console.warn = function(str) {\n        log += str;\n      };\n      var res = pug.renderFile(\n        __dirname + '/fixtures/element-with-multiple-attributes.pug'\n      );\n      console.warn = consoleWarn;\n      expect(log).toMatch(/element-with-multiple-attributes.pug, line 1:/);\n      expect(log).toMatch(\n        /You should not have pug tags with multiple attributes/\n      );\n      expect(res).toBe('<div attr=\"val\" foo=\"bar\"></div>');\n    });\n  });\n  describe(\"if you throw something that isn't an error\", function() {\n    it('just rethrows without modification', function() {\n      var err = getError('- throw \"foo\"');\n      expect(err).toBe('foo');\n    });\n  });\n  describe('import without a filename for a basedir', function() {\n    it('throws an error', function() {\n      var err = getError('include foo.pug');\n      expect(err.message).toMatch(/the \"filename\" option is required to use/);\n      var err = getError('include /foo.pug');\n      expect(err.message).toMatch(/the \"basedir\" option is required to use/);\n    });\n  });\n});\n"
  },
  {
    "path": "packages/pug/test/examples.test.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar pug = require('../');\n\ndescribe('examples', function() {\n  fs.readdirSync(__dirname + '/../examples').forEach(function(example) {\n    if (/\\.js$/.test(example)) {\n      it(example + ' does not throw any error', function() {\n        var log = console.log;\n        var err = console.error;\n        console.log = function() {};\n        console.error = function() {};\n        try {\n          require('../examples/' + example);\n        } finally {\n          console.log = log;\n          console.error = err;\n        }\n      });\n    }\n  });\n});\n"
  },
  {
    "path": "packages/pug/test/extends-not-top-level/default.pug",
    "content": "body\n  block content\n"
  },
  {
    "path": "packages/pug/test/extends-not-top-level/duplicate.pug",
    "content": "extends default\nextends default\n"
  },
  {
    "path": "packages/pug/test/extends-not-top-level/index.pug",
    "content": "mixin content\n  if bar\n    extends default\n    block content\n      block\n  else\n    block\n\n+content\n  h1 Hello!\n"
  },
  {
    "path": "packages/pug/test/extends-not-top-level/index.test.js",
    "content": "const pug = require('../../');\n\n// regression test for #2404\n\ntest('extends not top level should throw an error', () => {\n  expect(() => pug.compileFile(__dirname + '/index.pug')).toThrow(\n    'Declaration of template inheritance (\"extends\") should be the first thing in the file. There can only be one extends statement per file.'\n  );\n});\n\ntest('duplicate extends should throw an error', () => {\n  expect(() => pug.compileFile(__dirname + '/duplicate.pug')).toThrow(\n    'Declaration of template inheritance (\"extends\") should be the first thing in the file. There can only be one extends statement per file.'\n  );\n});\n"
  },
  {
    "path": "packages/pug/test/fixtures/append/app-layout.pug",
    "content": "\nextends layout\n\nblock append head\n  script(src='app.js')"
  },
  {
    "path": "packages/pug/test/fixtures/append/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug/test/fixtures/append/page.html",
    "content": "<html>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/fixtures/append/page.pug",
    "content": "\nextends app-layout\n\nblock append head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/fixtures/append-without-block/app-layout.pug",
    "content": "\nextends layout.pug\n\nappend head\n  script(src='app.js')\n"
  },
  {
    "path": "packages/pug/test/fixtures/append-without-block/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug/test/fixtures/append-without-block/page.pug",
    "content": "\nextends app-layout.pug\n\nappend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/fixtures/compile.with.include.locals.error.pug",
    "content": "include include.locals.error.pug"
  },
  {
    "path": "packages/pug/test/fixtures/compile.with.include.syntax.error.pug",
    "content": "include include.syntax.error.pug"
  },
  {
    "path": "packages/pug/test/fixtures/compile.with.layout.locals.error.pug",
    "content": "extends layout.locals.error.pug"
  },
  {
    "path": "packages/pug/test/fixtures/compile.with.layout.syntax.error.pug",
    "content": "extends layout.syntax.error.pug"
  },
  {
    "path": "packages/pug/test/fixtures/compile.with.layout.with.include.locals.error.pug",
    "content": "extends compile.with.include.locals.error.pug"
  },
  {
    "path": "packages/pug/test/fixtures/compile.with.layout.with.include.syntax.error.pug",
    "content": "extends compile.with.include.syntax.error.pug"
  },
  {
    "path": "packages/pug/test/fixtures/element-with-multiple-attributes.pug",
    "content": "div(attr='val')(foo='bar')"
  },
  {
    "path": "packages/pug/test/fixtures/include.locals.error.pug",
    "content": "\n= foo()"
  },
  {
    "path": "packages/pug/test/fixtures/include.syntax.error.pug",
    "content": "\n= foo("
  },
  {
    "path": "packages/pug/test/fixtures/invalid-block-in-extends.pug",
    "content": "extends ./layout.pug\n\nblock title\n  title My Article\n\nblock contents\n  // oops, that's not a block"
  },
  {
    "path": "packages/pug/test/fixtures/issue-1593/include-layout.pug",
    "content": ".included-layout\n  block include-body\n"
  },
  {
    "path": "packages/pug/test/fixtures/issue-1593/include.pug",
    "content": "extends ./include-layout.pug\n\nblock include-body\n  .include-body\n"
  },
  {
    "path": "packages/pug/test/fixtures/issue-1593/index.pug",
    "content": "extends ./layout.pug\n\nblock body-a\n  .body-a\nblock body-b\n  .body-b\n    include ./include.pug\n"
  },
  {
    "path": "packages/pug/test/fixtures/issue-1593/layout.pug",
    "content": ".layout-body\n  block body-a\n  block body-b\n"
  },
  {
    "path": "packages/pug/test/fixtures/layout.locals.error.pug",
    "content": "\n= foo()"
  },
  {
    "path": "packages/pug/test/fixtures/layout.pug",
    "content": "doctype html\nhtml\n  head\n    block title\n  body\n    block body"
  },
  {
    "path": "packages/pug/test/fixtures/layout.syntax.error.pug",
    "content": "\n= foo("
  },
  {
    "path": "packages/pug/test/fixtures/layout.with.runtime.error.pug",
    "content": "html\n  body\n    = foo.length\n    block content\n\n"
  },
  {
    "path": "packages/pug/test/fixtures/mixin-include.pug",
    "content": "mixin bang\n  +foo\n\nmixin foo\n  p bar"
  },
  {
    "path": "packages/pug/test/fixtures/mixin.error.pug",
    "content": "mixin mixin-with-error(foo)\n  - foo.length\n"
  },
  {
    "path": "packages/pug/test/fixtures/multi-append-prepend-block/redefine.pug",
    "content": "extends root.pug\n\nblock content\n\t.content\n\t\t| Defined content\n"
  },
  {
    "path": "packages/pug/test/fixtures/multi-append-prepend-block/root.pug",
    "content": "block content\n\t| default content\n\nblock head\n\tscript(src='/app.js')"
  },
  {
    "path": "packages/pug/test/fixtures/perf.pug",
    "content": ".data\n  ol.sortable#contents\n    each item in report\n      if (!item.parent)\n        div\n          li.chapter(data-ref= item.id)\n            a(href='/admin/report/detail/' + item.id)\n              = item.name\n          - var chp = item.id\n            ol.sortable\n              each item in report\n                if (item.parent === chp && item.type === 'section')\n                  div\n                    li.section(data-ref= item.id)\n                      a(href='/admin/report/detail/' + item.id)\n                        = item.name\n                    - var sec = item.id\n                      ol.sortable\n                        each item in report\n                          if (item.parent === sec && item.type === 'page')\n                            div\n                              li.page(data-ref= item.id)\n                                a(href='/admin/report/detail/' + item.id)\n                                  = item.name\n                              - var page = item.id\n                                ol.sortable\n                                  each item in report\n                                    if (item.parent === page && item.type === 'subpage')\n                                      div\n                                        li.subpage(data-ref= item.id)\n                                          a(href='/admin/report/detail/' + item.id)\n                                            = item.name"
  },
  {
    "path": "packages/pug/test/fixtures/prepend/app-layout.pug",
    "content": "\nextends layout.pug\n\nblock prepend head\n  script(src='app.js')\n"
  },
  {
    "path": "packages/pug/test/fixtures/prepend/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug/test/fixtures/prepend/page.html",
    "content": "<html>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/fixtures/prepend/page.pug",
    "content": "\nextends app-layout.pug\n\nblock prepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/fixtures/prepend-without-block/app-layout.pug",
    "content": "\nextends layout.pug\n\nprepend head\n  script(src='app.js')\n"
  },
  {
    "path": "packages/pug/test/fixtures/prepend-without-block/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug/test/fixtures/prepend-without-block/page.html",
    "content": "<html>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug/test/fixtures/prepend-without-block/page.pug",
    "content": "\nextends app-layout.pug\n\nprepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug/test/fixtures/runtime.error.pug",
    "content": "-foo()"
  },
  {
    "path": "packages/pug/test/fixtures/runtime.layout.error.pug",
    "content": "extends layout.with.runtime.error.pug\nblock content\n  | some content\n"
  },
  {
    "path": "packages/pug/test/fixtures/runtime.with.mixin.error.pug",
    "content": "include mixin.error.pug\n\n+mixin-with-error(null)\n"
  },
  {
    "path": "packages/pug/test/fixtures/scripts.pug",
    "content": "script(src='/jquery.js')\nscript(src='/caustic.js')"
  },
  {
    "path": "packages/pug/test/markdown-it/comment.md",
    "content": "<h1 id=\"myHeader\">Hello World!</h1>"
  },
  {
    "path": "packages/pug/test/markdown-it/index.test.js",
    "content": "const pug = require('../../');\n\ntest('inline and include markdow-it should match ', () => {\n  const outputMarkdownInline = pug.renderFile(\n    __dirname + '/layout-markdown-inline.pug'\n  );\n\n  const outputMarkdownIncludes = pug.renderFile(\n    __dirname + '/layout-markdown-include.pug'\n  );\n\n  expect(outputMarkdownIncludes).toEqual(outputMarkdownInline);\n});\n"
  },
  {
    "path": "packages/pug/test/markdown-it/layout-markdown-include.pug",
    "content": "include:markdown-it(html=true) comment.md"
  },
  {
    "path": "packages/pug/test/markdown-it/layout-markdown-inline.pug",
    "content": ":markdown-it(html=true)\n   <h1 id=\"myHeader\">Hello World!</h1>"
  },
  {
    "path": "packages/pug/test/plugins.test.js",
    "content": "const pug = require('../');\n\ntest('#3295 - lexer plugins should be used in tag interpolation', () => {\n  const lex = {\n    advance(lexer) {\n      if ('~' === lexer.input.charAt(0)) {\n        lexer.tokens.push(lexer.tok('text', 'twiddle-dee-dee'));\n        lexer.consume(1);\n        lexer.incrementColumn(1);\n        return true;\n      }\n    },\n  };\n  const input = 'p Look at #[~]';\n  const expected = '<p>Look at twiddle-dee-dee</p>';\n  const output = pug.render(input, {plugins: [{lex}]});\n  expect(output).toEqual(expected);\n});\n"
  },
  {
    "path": "packages/pug/test/pug.test.js",
    "content": "'use strict';\n\nvar assert = require('assert');\nvar fs = require('fs');\nvar path = require('path');\nvar pug = require('../');\n\nvar perfTest = fs.readFileSync(__dirname + '/fixtures/perf.pug', 'utf8');\n\ntry {\n  fs.mkdirSync(__dirname + '/temp');\n} catch (ex) {\n  if (ex.code !== 'EEXIST') {\n    throw ex;\n  }\n}\n\ndescribe('pug', function() {\n  describe('unit tests with .render()', function() {\n    it('should support doctypes', function() {\n      assert.equal(\n        '<?xml version=\"1.0\" encoding=\"utf-8\" ?>',\n        pug.render('doctype xml')\n      );\n      assert.equal('<!DOCTYPE html>', pug.render('doctype html'));\n      assert.equal('<!DOCTYPE foo bar baz>', pug.render('doctype foo bar baz'));\n      assert.equal('<!DOCTYPE html>', pug.render('doctype html'));\n      assert.equal('<!DOCTYPE html>', pug.render('doctype', {doctype: 'html'}));\n      assert.equal(\n        '<!DOCTYPE html>',\n        pug.render('doctype html', {doctype: 'xml'})\n      );\n      assert.equal('<html></html>', pug.render('html'));\n      assert.equal(\n        '<!DOCTYPE html><html></html>',\n        pug.render('html', {doctype: 'html'})\n      );\n      assert.equal(\n        '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML Basic 1.1//EN>',\n        pug.render('doctype html PUBLIC \"-//W3C//DTD XHTML Basic 1.1//EN')\n      );\n    });\n\n    it('should support Buffers', function() {\n      assert.equal('<p>foo</p>', pug.render(Buffer.from('p foo')));\n    });\n\n    it('should support line endings', function() {\n      var src = ['p', 'div', 'img'];\n\n      var html = ['<p></p>', '<div></div>', '<img/>'].join('');\n\n      assert.equal(html, pug.render(src.join('\\n')));\n      assert.equal(html, pug.render(src.join('\\r')));\n      assert.equal(html, pug.render(src.join('\\r\\n')));\n\n      html = ['<p></p>', '<div></div>', '<img>'].join('');\n\n      assert.equal(html, pug.render(src.join('\\n'), {doctype: 'html'}));\n      assert.equal(html, pug.render(src.join('\\r'), {doctype: 'html'}));\n      assert.equal(html, pug.render(src.join('\\r\\n'), {doctype: 'html'}));\n    });\n\n    it('should support single quotes', function() {\n      assert.equal(\"<p>'foo'</p>\", pug.render(\"p 'foo'\"));\n      assert.equal(\"<p>'foo'</p>\", pug.render(\"p\\n  | 'foo'\"));\n      assert.equal(\n        '<a href=\"/foo\"></a>',\n        pug.render(\"- var path = 'foo';\\na(href='/' + path)\")\n      );\n    });\n\n    it('should support block-expansion', function() {\n      assert.equal(\n        '<li><a>foo</a></li><li><a>bar</a></li><li><a>baz</a></li>',\n        pug.render('li: a foo\\nli: a bar\\nli: a baz')\n      );\n      assert.equal(\n        '<li class=\"first\"><a>foo</a></li><li><a>bar</a></li><li><a>baz</a></li>',\n        pug.render('li.first: a foo\\nli: a bar\\nli: a baz')\n      );\n      assert.equal(\n        '<div class=\"foo\"><div class=\"bar\">baz</div></div>',\n        pug.render('.foo: .bar baz')\n      );\n    });\n\n    it('should support tags', function() {\n      var str = ['p', 'div', 'img', 'br/'].join('\\n');\n\n      var html = ['<p></p>', '<div></div>', '<img/>', '<br/>'].join('');\n\n      assert.equal(html, pug.render(str), 'Test basic tags');\n      assert.equal(\n        '<fb:foo-bar></fb:foo-bar>',\n        pug.render('fb:foo-bar'),\n        'Test hyphens'\n      );\n      assert.equal(\n        '<div class=\"something\"></div>',\n        pug.render('div.something'),\n        'Test classes'\n      );\n      assert.equal(\n        '<div id=\"something\"></div>',\n        pug.render('div#something'),\n        'Test ids'\n      );\n      assert.equal(\n        '<div class=\"something\"></div>',\n        pug.render('.something'),\n        'Test stand-alone classes'\n      );\n      assert.equal(\n        '<div id=\"something\"></div>',\n        pug.render('#something'),\n        'Test stand-alone ids'\n      );\n      assert.equal('<div class=\"bar\" id=\"foo\"></div>', pug.render('#foo.bar'));\n      assert.equal('<div class=\"bar\" id=\"foo\"></div>', pug.render('.bar#foo'));\n      assert.equal(\n        '<div class=\"bar\" id=\"foo\"></div>',\n        pug.render('div#foo(class=\"bar\")')\n      );\n      assert.equal(\n        '<div class=\"bar\" id=\"foo\"></div>',\n        pug.render('div(class=\"bar\")#foo')\n      );\n      assert.equal(\n        '<div class=\"foo\" id=\"bar\"></div>',\n        pug.render('div(id=\"bar\").foo')\n      );\n      assert.equal(\n        '<div class=\"foo bar baz\"></div>',\n        pug.render('div.foo.bar.baz')\n      );\n      assert.equal(\n        '<div class=\"foo bar baz\"></div>',\n        pug.render('div(class=\"foo\").bar.baz')\n      );\n      assert.equal(\n        '<div class=\"foo bar baz\"></div>',\n        pug.render('div.foo(class=\"bar\").baz')\n      );\n      assert.equal(\n        '<div class=\"foo bar baz\"></div>',\n        pug.render('div.foo.bar(class=\"baz\")')\n      );\n      assert.equal('<div class=\"a-b2\"></div>', pug.render('div.a-b2'));\n      assert.equal('<div class=\"a_b2\"></div>', pug.render('div.a_b2'));\n      assert.equal('<fb:user></fb:user>', pug.render('fb:user'));\n      assert.equal('<fb:user:role></fb:user:role>', pug.render('fb:user:role'));\n      assert.equal(\n        '<colgroup><col class=\"test\"/></colgroup>',\n        pug.render('colgroup\\n  col.test')\n      );\n    });\n\n    it('should support nested tags', function() {\n      var str = [\n        'ul',\n        '  li a',\n        '  li b',\n        '  li',\n        '    ul',\n        '      li c',\n        '      li d',\n        '  li e',\n      ].join('\\n');\n\n      var html = [\n        '<ul>',\n        '<li>a</li>',\n        '<li>b</li>',\n        '<li><ul><li>c</li><li>d</li></ul></li>',\n        '<li>e</li>',\n        '</ul>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['a(href=\"#\")', '  | foo ', '  | bar ', '  | baz'].join('\\n');\n\n      assert.equal('<a href=\"#\">foo \\nbar \\nbaz</a>', pug.render(str));\n\n      var str = ['ul', '  li one', '  ul', '    | two', '    li three'].join(\n        '\\n'\n      );\n\n      var html = [\n        '<ul>',\n        '<li>one</li>',\n        '<ul>two',\n        '<li>three</li>',\n        '</ul>',\n        '</ul>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n    });\n\n    it('should support variable length newlines', function() {\n      var str = [\n        'ul',\n        '  li a',\n        '  ',\n        '  li b',\n        ' ',\n        '         ',\n        '  li',\n        '    ul',\n        '      li c',\n        '',\n        '      li d',\n        '  li e',\n      ].join('\\n');\n\n      var html = [\n        '<ul>',\n        '<li>a</li>',\n        '<li>b</li>',\n        '<li><ul><li>c</li><li>d</li></ul></li>',\n        '<li>e</li>',\n        '</ul>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n    });\n\n    it('should support tab conversion', function() {\n      var str = [\n        'ul',\n        '\\tli a',\n        '\\t',\n        '\\tli b',\n        '\\t\\t',\n        '\\t\\t\\t\\t\\t\\t',\n        '\\tli',\n        '\\t\\tul',\n        '\\t\\t\\tli c',\n        '',\n        '\\t\\t\\tli d',\n        '\\tli e',\n      ].join('\\n');\n\n      var html = [\n        '<ul>',\n        '<li>a</li>',\n        '<li>b</li>',\n        '<li><ul><li>c</li><li>d</li></ul></li>',\n        '<li>e</li>',\n        '</ul>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n    });\n\n    it('should support newlines', function() {\n      var str = [\n        'ul',\n        '  li a',\n        '  ',\n        '    ',\n        '',\n        ' ',\n        '  li b',\n        '  li',\n        '    ',\n        '        ',\n        ' ',\n        '    ul',\n        '      ',\n        '      li c',\n        '      li d',\n        '  li e',\n      ].join('\\n');\n\n      var html = [\n        '<ul>',\n        '<li>a</li>',\n        '<li>b</li>',\n        '<li><ul><li>c</li><li>d</li></ul></li>',\n        '<li>e</li>',\n        '</ul>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = [\n        'html',\n        ' ',\n        '  head',\n        '    != \"test\"',\n        '  ',\n        '  ',\n        '  ',\n        '  body',\n      ].join('\\n');\n\n      var html = [\n        '<html>',\n        '<head>',\n        'test',\n        '</head>',\n        '<body></body>',\n        '</html>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n      assert.equal(\n        '<foo></foo>something<bar></bar>',\n        pug.render('foo\\n= \"something\"\\nbar')\n      );\n      assert.equal(\n        '<foo></foo>something<bar></bar>else',\n        pug.render('foo\\n= \"something\"\\nbar\\n= \"else\"')\n      );\n    });\n\n    it('should support text', function() {\n      assert.equal('foo\\nbar\\nbaz', pug.render('| foo\\n| bar\\n| baz'));\n      assert.equal('foo \\nbar \\nbaz', pug.render('| foo \\n| bar \\n| baz'));\n      assert.equal('(hey)', pug.render('| (hey)'));\n      assert.equal('some random text', pug.render('| some random text'));\n      assert.equal('  foo', pug.render('|   foo'));\n      assert.equal('  foo  ', pug.render('|   foo  '));\n      assert.equal('  foo  \\n bar    ', pug.render('|   foo  \\n|  bar    '));\n    });\n\n    it('should support pipe-less text', function() {\n      assert.equal(\n        '<pre><code><foo></foo><bar></bar></code></pre>',\n        pug.render('pre\\n  code\\n    foo\\n\\n    bar')\n      );\n      assert.equal('<p>foo\\n\\nbar</p>', pug.render('p.\\n  foo\\n\\n  bar'));\n      assert.equal(\n        '<p>foo\\n\\n\\n\\nbar</p>',\n        pug.render('p.\\n  foo\\n\\n\\n\\n  bar')\n      );\n      assert.equal(\n        '<p>foo\\n  bar\\nfoo</p>',\n        pug.render('p.\\n  foo\\n    bar\\n  foo')\n      );\n      assert.equal(\n        '<script>s.parentNode.insertBefore(g,s)</script>',\n        pug.render('script.\\n  s.parentNode.insertBefore(g,s)\\n')\n      );\n      assert.equal(\n        '<script>s.parentNode.insertBefore(g,s)</script>',\n        pug.render('script.\\n  s.parentNode.insertBefore(g,s)')\n      );\n    });\n\n    it('should support tag text', function() {\n      assert.equal('<p>some random text</p>', pug.render('p some random text'));\n      assert.equal(\n        '<p>click<a>Google</a>.</p>',\n        pug.render('p\\n  | click\\n  a Google\\n  | .')\n      );\n      assert.equal('<p>(parens)</p>', pug.render('p (parens)'));\n      assert.equal(\n        '<p foo=\"bar\">(parens)</p>',\n        pug.render('p(foo=\"bar\") (parens)')\n      );\n      assert.equal(\n        '<option value=\"\">-- (optional) foo --</option>',\n        pug.render('option(value=\"\") -- (optional) foo --')\n      );\n    });\n\n    it('should support tag text block', function() {\n      assert.equal(\n        '<p>foo \\nbar \\nbaz</p>',\n        pug.render('p\\n  | foo \\n  | bar \\n  | baz')\n      );\n      assert.equal(\n        '<label>Password:<input/></label>',\n        pug.render('label\\n  | Password:\\n  input')\n      );\n      assert.equal(\n        '<label>Password:<input/></label>',\n        pug.render('label Password:\\n  input')\n      );\n    });\n\n    it('should support tag text interpolation', function() {\n      assert.equal(\n        'yo, pug is cool',\n        pug.render('| yo, #{name} is cool\\n', {name: 'pug'})\n      );\n      assert.equal(\n        '<p>yo, pug is cool</p>',\n        pug.render('p yo, #{name} is cool', {name: 'pug'})\n      );\n      assert.equal(\n        'yo, pug is cool',\n        pug.render('| yo, #{name || \"pug\"} is cool', {name: null})\n      );\n      assert.equal(\n        \"yo, 'pug' is cool\",\n        pug.render('| yo, #{name || \"\\'pug\\'\"} is cool', {name: null})\n      );\n      assert.equal(\n        'foo &lt;script&gt; bar',\n        pug.render('| foo #{code} bar', {code: '<script>'})\n      );\n      assert.equal(\n        'foo <script> bar',\n        pug.render('| foo !{code} bar', {code: '<script>'})\n      );\n    });\n\n    it('should support flexible indentation', function() {\n      assert.equal(\n        '<html><body><h1>Wahoo</h1><p>test</p></body></html>',\n        pug.render('html\\n  body\\n   h1 Wahoo\\n   p test')\n      );\n    });\n\n    it('should support interpolation values', function() {\n      assert.equal('<p>Users: 15</p>', pug.render('p Users: #{15}'));\n      assert.equal('<p>Users: </p>', pug.render('p Users: #{null}'));\n      assert.equal('<p>Users: </p>', pug.render('p Users: #{undefined}'));\n      assert.equal(\n        '<p>Users: none</p>',\n        pug.render('p Users: #{undefined || \"none\"}')\n      );\n      assert.equal('<p>Users: 0</p>', pug.render('p Users: #{0}'));\n      assert.equal('<p>Users: false</p>', pug.render('p Users: #{false}'));\n    });\n\n    it('should support test html 5 mode', function() {\n      assert.equal(\n        '<!DOCTYPE html><input type=\"checkbox\" checked>',\n        pug.render('doctype html\\ninput(type=\"checkbox\", checked)')\n      );\n      assert.equal(\n        '<!DOCTYPE html><input type=\"checkbox\" checked>',\n        pug.render('doctype html\\ninput(type=\"checkbox\", checked=true)')\n      );\n      assert.equal(\n        '<!DOCTYPE html><input type=\"checkbox\">',\n        pug.render('doctype html\\ninput(type=\"checkbox\", checked= false)')\n      );\n    });\n\n    it('should support multi-line attrs', function() {\n      assert.equal(\n        '<a foo=\"bar\" bar=\"baz\" checked=\"checked\">foo</a>',\n        pug.render('a(foo=\"bar\"\\n  bar=\"baz\"\\n  checked) foo')\n      );\n      assert.equal(\n        '<a foo=\"bar\" bar=\"baz\" checked=\"checked\">foo</a>',\n        pug.render('a(foo=\"bar\"\\nbar=\"baz\"\\nchecked) foo')\n      );\n      assert.equal(\n        '<a foo=\"bar\" bar=\"baz\" checked=\"checked\">foo</a>',\n        pug.render('a(foo=\"bar\"\\n,bar=\"baz\"\\n,checked) foo')\n      );\n      assert.equal(\n        '<a foo=\"bar\" bar=\"baz\" checked=\"checked\">foo</a>',\n        pug.render('a(foo=\"bar\",\\nbar=\"baz\",\\nchecked) foo')\n      );\n    });\n\n    it('should support attrs', function() {\n      assert.equal(\n        '<img src=\"&lt;script&gt;\"/>',\n        pug.render('img(src=\"<script>\")'),\n        'Test attr escaping'\n      );\n\n      assert.equal('<a data-attr=\"bar\"></a>', pug.render('a(data-attr=\"bar\")'));\n      assert.equal(\n        '<a data-attr=\"bar\" data-attr-2=\"baz\"></a>',\n        pug.render('a(data-attr=\"bar\", data-attr-2=\"baz\")')\n      );\n\n      assert.equal(\n        '<a title=\"foo,bar\"></a>',\n        pug.render('a(title= \"foo,bar\")')\n      );\n      assert.equal(\n        '<a title=\"foo,bar\" href=\"#\"></a>',\n        pug.render('a(title= \"foo,bar\", href=\"#\")')\n      );\n\n      assert.equal(\n        '<p class=\"foo\"></p>',\n        pug.render(\"p(class='foo')\"),\n        'Test single quoted attrs'\n      );\n      assert.equal(\n        '<input type=\"checkbox\" checked=\"checked\"/>',\n        pug.render('input( type=\"checkbox\", checked )')\n      );\n      assert.equal(\n        '<input type=\"checkbox\" checked=\"checked\"/>',\n        pug.render('input( type=\"checkbox\", checked = true )')\n      );\n      assert.equal(\n        '<input type=\"checkbox\"/>',\n        pug.render('input(type=\"checkbox\", checked= false)')\n      );\n      assert.equal(\n        '<input type=\"checkbox\"/>',\n        pug.render('input(type=\"checkbox\", checked= null)')\n      );\n      assert.equal(\n        '<input type=\"checkbox\"/>',\n        pug.render('input(type=\"checkbox\", checked= undefined)')\n      );\n\n      assert.equal(\n        '<img src=\"/foo.png\"/>',\n        pug.render('img(src=\"/foo.png\")'),\n        'Test attr ='\n      );\n      assert.equal(\n        '<img src=\"/foo.png\"/>',\n        pug.render('img(src  =  \"/foo.png\")'),\n        'Test attr = whitespace'\n      );\n      assert.equal(\n        '<img src=\"/foo.png\"/>',\n        pug.render('img(src=\"/foo.png\")'),\n        'Test attr :'\n      );\n      assert.equal(\n        '<img src=\"/foo.png\"/>',\n        pug.render('img(src  =  \"/foo.png\")'),\n        'Test attr : whitespace'\n      );\n\n      assert.equal(\n        '<img src=\"/foo.png\" alt=\"just some foo\"/>',\n        pug.render('img(src=\"/foo.png\", alt=\"just some foo\")')\n      );\n      assert.equal(\n        '<img src=\"/foo.png\" alt=\"just some foo\"/>',\n        pug.render('img(src = \"/foo.png\", alt = \"just some foo\")')\n      );\n\n      assert.equal(\n        '<p class=\"foo,bar,baz\"></p>',\n        pug.render('p(class=\"foo,bar,baz\")')\n      );\n      assert.equal(\n        '<a href=\"http://google.com\" title=\"Some : weird = title\"></a>',\n        pug.render(\n          'a(href= \"http://google.com\", title= \"Some : weird = title\")'\n        )\n      );\n      assert.equal(\n        '<label for=\"name\"></label>',\n        pug.render('label(for=\"name\")')\n      );\n      assert.equal(\n        '<meta name=\"viewport\" content=\"width=device-width\"/>',\n        pug.render(\"meta(name= 'viewport', content='width=device-width')\"),\n        'Test attrs that contain attr separators'\n      );\n      assert.equal(\n        '<div style=\"color= white\"></div>',\n        pug.render(\"div(style='color= white')\")\n      );\n      assert.equal(\n        '<div style=\"color: white\"></div>',\n        pug.render(\"div(style='color: white')\")\n      );\n      assert.equal(\n        '<p class=\"foo\"></p>',\n        pug.render(\"p('class'='foo')\"),\n        'Test keys with single quotes'\n      );\n      assert.equal(\n        '<p class=\"foo\"></p>',\n        pug.render('p(\"class\"= \\'foo\\')'),\n        'Test keys with double quotes'\n      );\n\n      assert.equal('<p data-lang=\"en\"></p>', pug.render('p(data-lang = \"en\")'));\n      assert.equal(\n        '<p data-dynamic=\"true\"></p>',\n        pug.render('p(\"data-dynamic\"= \"true\")')\n      );\n      assert.equal(\n        '<p class=\"name\" data-dynamic=\"true\"></p>',\n        pug.render('p(\"class\"= \"name\", \"data-dynamic\"= \"true\")')\n      );\n      assert.equal(\n        '<p data-dynamic=\"true\"></p>',\n        pug.render('p(\\'data-dynamic\\'= \"true\")')\n      );\n      assert.equal(\n        '<p class=\"name\" data-dynamic=\"true\"></p>',\n        pug.render('p(\\'class\\'= \"name\", \\'data-dynamic\\'= \"true\")')\n      );\n      assert.equal(\n        '<p class=\"name\" data-dynamic=\"true\" yay=\"yay\"></p>',\n        pug.render('p(\\'class\\'= \"name\", \\'data-dynamic\\'= \"true\", yay)')\n      );\n\n      assert.equal(\n        '<input checked=\"checked\" type=\"checkbox\"/>',\n        pug.render('input(checked, type=\"checkbox\")')\n      );\n\n      assert.equal(\n        \"<a data-foo=\\\"{ foo: 'bar', bar= 'baz' }\\\"></a>\",\n        pug.render(\"a(data-foo  = \\\"{ foo: 'bar', bar= 'baz' }\\\")\")\n      );\n\n      assert.equal(\n        '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\"/>',\n        pug.render(\n          'meta(http-equiv=\"X-UA-Compatible\", content=\"IE=edge,chrome=1\")'\n        )\n      );\n\n      assert.equal(\n        '<div style=\"background: url(/images/test.png)\">Foo</div>',\n        pug.render(\"div(style= 'background: url(/images/test.png)') Foo\")\n      );\n      assert.equal(\n        '<div style=\"background = url(/images/test.png)\">Foo</div>',\n        pug.render(\"div(style= 'background = url(/images/test.png)') Foo\")\n      );\n      assert.equal(\n        '<div style=\"foo\">Foo</div>',\n        pug.render(\"div(style= ['foo', 'bar'][0]) Foo\")\n      );\n      assert.equal(\n        '<div style=\"bar\">Foo</div>',\n        pug.render(\"div(style= { foo: 'bar', baz: 'raz' }['foo']) Foo\")\n      );\n      assert.equal(\n        '<a href=\"def\">Foo</a>',\n        pug.render(\"a(href='abcdefg'.substr(3,3)) Foo\")\n      );\n      assert.equal(\n        '<a href=\"def\">Foo</a>',\n        pug.render(\"a(href={test: 'abcdefg'}.test.substr(3,3)) Foo\")\n      );\n      assert.equal(\n        '<a href=\"def\">Foo</a>',\n        pug.render(\"a(href={test: 'abcdefg'}.test.substr(3,[0,3][1])) Foo\")\n      );\n\n      assert.equal(\n        '<rss xmlns:atom=\"atom\"></rss>',\n        pug.render('rss(xmlns:atom=\"atom\")')\n      );\n      assert.equal(\n        '<rss xmlns:atom=\"atom\"></rss>',\n        pug.render('rss(\\'xmlns:atom\\'=\"atom\")')\n      );\n      assert.equal(\n        '<rss xmlns:atom=\"atom\"></rss>',\n        pug.render('rss(\"xmlns:atom\"=\\'atom\\')')\n      );\n      assert.equal(\n        '<rss xmlns:atom=\"atom\" foo=\"bar\"></rss>',\n        pug.render(\"rss('xmlns:atom'=\\\"atom\\\", 'foo'= 'bar')\")\n      );\n      assert.equal(\n        '<a data-obj=\"{ foo: \\'bar\\' }\"></a>',\n        pug.render('a(data-obj= \"{ foo: \\'bar\\' }\")')\n      );\n\n      assert.equal(\n        \"<meta content=\\\"what's up? 'weee'\\\"/>\",\n        pug.render(\"meta(content=\\\"what's up? 'weee'\\\")\")\n      );\n    });\n\n    it('should support class attr array', function() {\n      assert.equal(\n        '<body class=\"foo bar baz\"></body>',\n        pug.render('body(class=[\"foo\", \"bar\", \"baz\"])')\n      );\n    });\n\n    it('should support attr parens', function() {\n      assert.equal(\n        '<p foo=\"bar\">baz</p>',\n        pug.render('p(foo=(((\"bar\"))))= (((\"baz\")))')\n      );\n    });\n\n    it('should support code attrs', function() {\n      assert.equal('<p></p>', pug.render('p(id= name)', {name: undefined}));\n      assert.equal('<p></p>', pug.render('p(id= name)', {name: null}));\n      assert.equal('<p></p>', pug.render('p(id= name)', {name: false}));\n      assert.equal('<p id=\"\"></p>', pug.render('p(id= name)', {name: ''}));\n      assert.equal('<p id=\"tj\"></p>', pug.render('p(id= name)', {name: 'tj'}));\n      assert.equal(\n        '<p id=\"default\"></p>',\n        pug.render('p(id= name || \"default\")', {name: null})\n      );\n      assert.equal(\n        '<p id=\"something\"></p>',\n        pug.render(\"p(id= 'something')\", {name: null})\n      );\n      assert.equal(\n        '<p id=\"something\"></p>',\n        pug.render(\"p(id = 'something')\", {name: null})\n      );\n      assert.equal(\n        '<p id=\"foo\"></p>',\n        pug.render(\"p(id= (true ? 'foo' : 'bar'))\")\n      );\n      assert.equal(\n        '<option value=\"\">Foo</option>',\n        pug.render(\"option(value='') Foo\")\n      );\n    });\n\n    it('should support code attrs class', function() {\n      assert.equal(\n        '<p class=\"tj\"></p>',\n        pug.render('p(class= name)', {name: 'tj'})\n      );\n      assert.equal(\n        '<p class=\"tj\"></p>',\n        pug.render('p( class= name )', {name: 'tj'})\n      );\n      assert.equal(\n        '<p class=\"default\"></p>',\n        pug.render('p(class= name || \"default\")', {name: null})\n      );\n      assert.equal(\n        '<p class=\"foo default\"></p>',\n        pug.render('p.foo(class= name || \"default\")', {name: null})\n      );\n      assert.equal(\n        '<p class=\"default foo\"></p>',\n        pug.render('p(class= name || \"default\").foo', {name: null})\n      );\n      assert.equal(\n        '<p id=\"default\"></p>',\n        pug.render('p(id = name || \"default\")', {name: null})\n      );\n      assert.equal('<p id=\"user-1\"></p>', pug.render('p(id = \"user-\" + 1)'));\n      assert.equal(\n        '<p class=\"user-1\"></p>',\n        pug.render('p(class = \"user-\" + 1)')\n      );\n    });\n\n    it('should support code buffering', function() {\n      assert.equal('<p></p>', pug.render('p= null'));\n      assert.equal('<p></p>', pug.render('p= undefined'));\n      assert.equal('<p>0</p>', pug.render('p= 0'));\n      assert.equal('<p>false</p>', pug.render('p= false'));\n    });\n\n    it('should support script text', function() {\n      var str = [\n        'script.',\n        '  p foo',\n        '',\n        'script(type=\"text/template\")',\n        '  p foo',\n        '',\n        'script(type=\"text/template\").',\n        '  p foo',\n      ].join('\\n');\n\n      var html = [\n        '<script>p foo\\n</script>',\n        '<script type=\"text/template\"><p>foo</p></script>',\n        '<script type=\"text/template\">p foo</script>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n    });\n\n    it('should support comments', function() {\n      // Regular\n      var str = ['//foo', 'p bar'].join('\\n');\n\n      var html = ['<!--foo-->', '<p>bar</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      // Between tags\n\n      var str = ['p foo', '// bar ', 'p baz'].join('\\n');\n\n      var html = ['<p>foo</p>', '<!-- bar -->', '<p>baz</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      // Quotes\n\n      var str = \"<!-- script(src: '/js/validate.js') -->\",\n        js = \"// script(src: '/js/validate.js') \";\n      assert.equal(str, pug.render(js));\n    });\n\n    it('should support unbuffered comments', function() {\n      var str = ['//- foo', 'p bar'].join('\\n');\n\n      var html = ['<p>bar</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['p foo', '//- bar ', 'p baz'].join('\\n');\n\n      var html = ['<p>foo</p>', '<p>baz</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n    });\n\n    it('should support literal html', function() {\n      assert.equal(\n        '<!--[if IE lt 9]>weeee<![endif]-->',\n        pug.render('<!--[if IE lt 9]>weeee<![endif]-->')\n      );\n    });\n\n    it('should support code', function() {\n      assert.equal('test', pug.render('!= \"test\"'));\n      assert.equal('test', pug.render('= \"test\"'));\n      assert.equal('test', pug.render('- var foo = \"test\"\\n=foo'));\n      assert.equal(\n        'foo<em>test</em>bar',\n        pug.render('- var foo = \"test\"\\n| foo\\nem= foo\\n| bar')\n      );\n      assert.equal(\n        'test<h2>something</h2>',\n        pug.render('!= \"test\"\\nh2 something')\n      );\n\n      var str = ['- var foo = \"<script>\";', '= foo', '!= foo'].join('\\n');\n\n      var html = ['&lt;script&gt;', '<script>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['- var foo = \"<script>\";', '- if (foo)', '  p= foo'].join(\n        '\\n'\n      );\n\n      var html = ['<p>&lt;script&gt;</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['- var foo = \"<script>\";', '- if (foo)', '  p!= foo'].join(\n        '\\n'\n      );\n\n      var html = ['<p><script></p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = [\n        '- var foo;',\n        '- if (foo)',\n        '  p.hasFoo= foo',\n        '- else',\n        '  p.noFoo no foo',\n      ].join('\\n');\n\n      var html = ['<p class=\"noFoo\">no foo</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = [\n        '- var foo;',\n        '- if (foo)',\n        '  p.hasFoo= foo',\n        '- else if (true)',\n        '  p kinda foo',\n        '- else',\n        '  p.noFoo no foo',\n      ].join('\\n');\n\n      var html = ['<p>kinda foo</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['p foo', '= \"bar\"'].join('\\n');\n\n      var html = ['<p>foo</p>bar'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['title foo', '- if (true)', '  p something'].join('\\n');\n\n      var html = ['<title>foo</title><p>something</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['foo', '  bar= \"bar\"', '    baz= \"baz\"'].join('\\n');\n\n      var html = [\n        '<foo>',\n        '<bar>bar',\n        '<baz>baz</baz>',\n        '</bar>',\n        '</foo>',\n      ].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = ['-', '  var a =', '    5;', 'p= a'].join('\\n');\n\n      var html = ['<p>5</p>'].join('');\n\n      assert.equal(html, pug.render(str));\n    });\n\n    it('should support each', function() {\n      // Array\n      var str = [\n        '- var items = [\"one\", \"two\", \"three\"];',\n        'each item in items',\n        '  li= item',\n      ].join('\\n');\n\n      var html = ['<li>one</li>', '<li>two</li>', '<li>three</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      // Any enumerable (length property)\n      var str = [\n        '- var jQuery = { length: 3, 0: 1, 1: 2, 2: 3 };',\n        'each item in jQuery',\n        '  li= item',\n      ].join('\\n');\n\n      var html = ['<li>1</li>', '<li>2</li>', '<li>3</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      // Empty array\n      var str = ['- var items = [];', 'each item in items', '  li= item'].join(\n        '\\n'\n      );\n\n      assert.equal('', pug.render(str));\n\n      // Object\n      var str = [\n        '- var obj = { foo: \"bar\", baz: \"raz\" };',\n        'each val in obj',\n        '  li= val',\n      ].join('\\n');\n\n      var html = ['<li>bar</li>', '<li>raz</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      // Complex\n      var str = [\n        '- var obj = { foo: \"bar\", baz: \"raz\" };',\n        'each key in Object.keys(obj)',\n        '  li= key',\n      ].join('\\n');\n\n      var html = ['<li>foo</li>', '<li>baz</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      // Keys\n      var str = [\n        '- var obj = { foo: \"bar\", baz: \"raz\" };',\n        'each val, key in obj',\n        '  li #{key}: #{val}',\n      ].join('\\n');\n\n      var html = ['<li>foo: bar</li>', '<li>baz: raz</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      // Nested\n      var str = [\n        '- var users = [{ name: \"tj\" }]',\n        'each user in users',\n        '  each val, key in user',\n        '    li #{key} #{val}',\n      ].join('\\n');\n\n      var html = ['<li>name tj</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = [\n        '- var users = [\"tobi\", \"loki\", \"jane\"]',\n        'each user in users',\n        '  li= user',\n      ].join('\\n');\n\n      var html = ['<li>tobi</li>', '<li>loki</li>', '<li>jane</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n\n      var str = [\n        '- var users = [\"tobi\", \"loki\", \"jane\"]',\n        'for user in users',\n        '  li= user',\n      ].join('\\n');\n\n      var html = ['<li>tobi</li>', '<li>loki</li>', '<li>jane</li>'].join('');\n\n      assert.equal(html, pug.render(str));\n    });\n\n    it('should support if', function() {\n      var str = [\n        '- var users = [\"tobi\", \"loki\", \"jane\"]',\n        'if users.length',\n        '  p users: #{users.length}',\n      ].join('\\n');\n\n      assert.equal('<p>users: 3</p>', pug.render(str));\n\n      assert.equal(\n        '<iframe foo=\"bar\"></iframe>',\n        pug.render('iframe(foo=\"bar\")')\n      );\n    });\n\n    it('should support unless', function() {\n      var str = [\n        '- var users = [\"tobi\", \"loki\", \"jane\"]',\n        'unless users.length',\n        '  p no users',\n      ].join('\\n');\n\n      assert.equal('', pug.render(str));\n\n      var str = [\n        '- var users = []',\n        'unless users.length',\n        '  p no users',\n      ].join('\\n');\n\n      assert.equal('<p>no users</p>', pug.render(str));\n    });\n\n    it('should support else', function() {\n      var str = [\n        '- var users = []',\n        'if users.length',\n        '  p users: #{users.length}',\n        'else',\n        '  p users: none',\n      ].join('\\n');\n\n      assert.equal('<p>users: none</p>', pug.render(str));\n    });\n\n    it('should else if', function() {\n      var str = [\n        '- var users = [\"tobi\", \"jane\", \"loki\"]',\n        'for user in users',\n        '  if user == \"tobi\"',\n        '    p awesome #{user}',\n        '  else if user == \"jane\"',\n        '    p lame #{user}',\n        '  else',\n        '    p #{user}',\n      ].join('\\n');\n\n      assert.equal(\n        '<p>awesome tobi</p><p>lame jane</p><p>loki</p>',\n        pug.render(str)\n      );\n    });\n\n    it('should include block', function() {\n      var str = [\n        'html',\n        '  head',\n        '    include fixtures/scripts.pug',\n        '      scripts(src=\"/app.js\")',\n      ].join('\\n');\n\n      assert.equal(\n        '<html><head><script src=\"/jquery.js\"></script><script src=\"/caustic.js\"></script><scripts src=\"/app.js\"></scripts></head></html>',\n        pug.render(str, {filename: __dirname + '/pug.test.js'})\n      );\n    });\n\n    it('should not fail on js newlines', function() {\n      assert.equal('<p>foo\\u2028bar</p>', pug.render('p foo\\u2028bar'));\n      assert.equal('<p>foo\\u2029bar</p>', pug.render('p foo\\u2029bar'));\n    });\n\n    it('should display error line number correctly up to token level', function() {\n      var str = [\n        'p.',\n        '  Lorem ipsum dolor sit amet, consectetur',\n        '  adipisicing elit, sed do eiusmod tempor',\n        '  incididunt ut labore et dolore magna aliqua.',\n        'p.',\n        '  Ut enim ad minim veniam, quis nostrud',\n        '  exercitation ullamco laboris nisi ut aliquip',\n        '  ex ea commodo consequat.',\n        'p.',\n        '  Duis aute irure dolor in reprehenderit',\n        '  in voluptate velit esse cillum dolore eu',\n        '  fugiat nulla pariatur.',\n        'a(href=\"#\" Next',\n      ].join('\\n');\n      var errorLocation = function(str) {\n        try {\n          pug.render(str);\n        } catch (err) {\n          return err.message.split('\\n')[0];\n        }\n      };\n      assert.equal(errorLocation(str), 'Pug:13:16');\n    });\n  });\n\n  describe('.compileFile()', function() {\n    it('does not produce warnings for issue-1593', function() {\n      pug.compileFile(__dirname + '/fixtures/issue-1593/index.pug');\n    });\n    it('should support caching (pass 1)', function() {\n      fs.writeFileSync(__dirname + '/temp/input-compileFile.pug', '.foo bar');\n      var fn = pug.compileFile(__dirname + '/temp/input-compileFile.pug', {\n        cache: true,\n      });\n      var expected = '<div class=\"foo\">bar</div>';\n      assert(fn() === expected);\n    });\n    it('should support caching (pass 2)', function() {\n      // Poison the input file\n      fs.writeFileSync(\n        __dirname + '/temp/input-compileFile.pug',\n        '.big fat hen'\n      );\n      var fn = pug.compileFile(__dirname + '/temp/input-compileFile.pug', {\n        cache: true,\n      });\n      var expected = '<div class=\"foo\">bar</div>';\n      assert(fn() === expected);\n    });\n  });\n\n  describe('.render()', function() {\n    it('should support .pug.render(str, fn)', function() {\n      pug.render('p foo bar', function(err, str) {\n        assert.ok(!err);\n        assert.equal('<p>foo bar</p>', str);\n      });\n    });\n\n    it('should support .pug.render(str, options, fn)', function() {\n      pug.render('p #{foo}', {foo: 'bar'}, function(err, str) {\n        assert.ok(!err);\n        assert.equal('<p>bar</p>', str);\n      });\n    });\n\n    it('should support .pug.render(str, options, fn) cache', function() {\n      pug.render('p bar', {cache: true}, function(err, str) {\n        assert.ok(\n          /the \"filename\" option is required for caching/.test(err.message)\n        );\n      });\n\n      pug.render('p foo bar', {cache: true, filename: 'test'}, function(\n        err,\n        str\n      ) {\n        assert.ok(!err);\n        assert.equal('<p>foo bar</p>', str);\n      });\n    });\n  });\n\n  describe('.compile()', function() {\n    it('should support .compile()', function() {\n      var fn = pug.compile('p foo');\n      assert.equal('<p>foo</p>', fn());\n    });\n\n    it('should support .compile() locals', function() {\n      var fn = pug.compile('p= foo');\n      assert.equal('<p>bar</p>', fn({foo: 'bar'}));\n    });\n\n    it(\"should support .compile() locals in 'self' hash\", function() {\n      var fn = pug.compile('p= self.foo', {self: true});\n      assert.equal('<p>bar</p>', fn({foo: 'bar'}));\n    });\n\n    it('should support .compile() no debug', function() {\n      var fn = pug.compile('p foo\\np #{bar}', {compileDebug: false});\n      assert.equal('<p>foo</p><p>baz</p>', fn({bar: 'baz'}));\n    });\n\n    it('should support .compile() no debug and global helpers', function() {\n      var fn = pug.compile('p foo\\np #{bar}', {\n        compileDebug: false,\n        helpers: 'global',\n      });\n      assert.equal('<p>foo</p><p>baz</p>', fn({bar: 'baz'}));\n    });\n\n    it('should be reasonably fast', function() {\n      pug.compile(perfTest, {});\n    });\n    it('allows trailing space (see #1586)', function() {\n      var res = pug.render('ul \\n  li An Item');\n      assert.equal('<ul> <li>An Item</li></ul>', res);\n    });\n  });\n\n  describe('.compileClient()', function() {\n    it('should support pug.compileClient(str)', function() {\n      var src = fs.readFileSync(__dirname + '/cases/basic.pug');\n      var expected = fs\n        .readFileSync(__dirname + '/cases/basic.html', 'utf8')\n        .replace(/\\s/g, '');\n      var fn = pug.compileClient(src);\n      fn = Function('pug', fn.toString() + '\\nreturn template;')(pug.runtime);\n      var actual = fn({name: 'foo'}).replace(/\\s/g, '');\n      expect(actual).toBe(expected);\n    });\n    it('should support pug.compileClient(str, options)', function() {\n      var src = '.bar= self.foo';\n      var fn = pug.compileClient(src, {self: true});\n      fn = Function('pug', fn.toString() + '\\nreturn template;')(pug.runtime);\n      var actual = fn({foo: 'baz'});\n      expect(actual).toBe('<div class=\"bar\">baz</div>');\n    });\n    it('should support module syntax in pug.compileClient(str, options) when inlineRuntimeFunctions it true', function() {\n      var src = '.bar= self.foo';\n      var fn = pug.compileClient(src, {\n        self: true,\n        module: true,\n        inlineRuntimeFunctions: true,\n      });\n      expect(fn).toMatchSnapshot();\n      fs.writeFileSync(\n        __dirname + '/temp/input-compileModuleFileClient.js',\n        fn\n      );\n      var fn = require(__dirname + '/temp/input-compileModuleFileClient.js');\n      expect(fn({foo: 'baz'})).toBe('<div class=\"bar\">baz</div>');\n    });\n    it('should support module syntax in pug.compileClient(str, options) when inlineRuntimeFunctions it false', function() {\n      var src = '.bar= self.foo';\n      var fn = pug.compileClient(src, {\n        self: true,\n        module: true,\n        inlineRuntimeFunctions: false,\n      });\n      expect(fn).toMatchSnapshot();\n      fs.writeFileSync(\n        __dirname + '/temp/input-compileModuleFileClient.js',\n        fn\n      );\n      var fn = require(__dirname + '/temp/input-compileModuleFileClient.js');\n      expect(fn({foo: 'baz'})).toBe('<div class=\"bar\">baz</div>');\n    });\n  });\n\n  describe('.renderFile()', function() {\n    it('will synchronously return a string', function() {\n      var expected = fs\n        .readFileSync(__dirname + '/cases/basic.html', 'utf8')\n        .replace(/\\s/g, '');\n      var actual = pug\n        .renderFile(__dirname + '/cases/basic.pug', {name: 'foo'})\n        .replace(/\\s/g, '');\n      assert(actual === expected);\n    });\n    it('when given a callback, it calls that rather than returning', function(done) {\n      var expected = fs\n        .readFileSync(__dirname + '/cases/basic.html', 'utf8')\n        .replace(/\\s/g, '');\n      pug.renderFile(__dirname + '/cases/basic.pug', {name: 'foo'}, function(\n        err,\n        actual\n      ) {\n        if (err) return done(err);\n        assert(actual.replace(/\\s/g, '') === expected);\n        done();\n      });\n    });\n    it('when given a callback, it calls that rather than returning even if there are no options', function(done) {\n      var expected = fs\n        .readFileSync(__dirname + '/cases/basic.html', 'utf8')\n        .replace(/\\s/g, '');\n      pug.renderFile(__dirname + '/cases/basic.pug', function(err, actual) {\n        if (err) return done(err);\n        assert(actual.replace(/\\s/g, '') === expected);\n        done();\n      });\n    });\n    it('when given a callback, it calls that with any errors', function(done) {\n      pug.renderFile(__dirname + '/fixtures/runtime.error.pug', function(\n        err,\n        actual\n      ) {\n        assert.ok(err);\n        done();\n      });\n    });\n    it('should support caching (pass 1)', function(done) {\n      fs.writeFileSync(__dirname + '/temp/input-renderFile.pug', '.foo bar');\n      pug.renderFile(\n        __dirname + '/temp/input-renderFile.pug',\n        {cache: true},\n        function(err, actual) {\n          if (err) return done(err);\n          assert.equal('<div class=\"foo\">bar</div>', actual);\n          done();\n        }\n      );\n    });\n    it('should support caching (pass 2)', function(done) {\n      // Poison the input file\n      fs.writeFileSync(\n        __dirname + '/temp/input-renderFile.pug',\n        '.big fat hen'\n      );\n      pug.renderFile(\n        __dirname + '/temp/input-renderFile.pug',\n        {cache: true},\n        function(err, actual) {\n          if (err) return done(err);\n          assert.equal('<div class=\"foo\">bar</div>', actual);\n          done();\n        }\n      );\n    });\n  });\n\n  describe('.compileFileClient(path, options)', function() {\n    it('returns a string form of a function called `template`', function() {\n      var src = pug.compileFileClient(__dirname + '/cases/basic.pug');\n      var expected = fs\n        .readFileSync(__dirname + '/cases/basic.html', 'utf8')\n        .replace(/\\s/g, '');\n      var fn = Function('pug', src + '\\nreturn template;')(pug.runtime);\n      var actual = fn({name: 'foo'}).replace(/\\s/g, '');\n      assert(actual === expected);\n    });\n    it('accepts the `name` option to rename the resulting function', function() {\n      var src = pug.compileFileClient(__dirname + '/cases/basic.pug', {\n        name: 'myTemplateName',\n      });\n      var expected = fs\n        .readFileSync(__dirname + '/cases/basic.html', 'utf8')\n        .replace(/\\s/g, '');\n      var fn = Function('pug', src + '\\nreturn myTemplateName;')(pug.runtime);\n      var actual = fn({name: 'foo'}).replace(/\\s/g, '');\n      assert(actual === expected);\n    });\n    it('should support caching (pass 1)', function() {\n      fs.writeFileSync(\n        __dirname + '/temp/input-compileFileClient.pug',\n        '.foo bar'\n      );\n      var src = pug.compileFileClient(\n        __dirname + '/temp/input-compileFileClient.pug',\n        {name: 'myTemplateName', cache: true}\n      );\n      var expected = '<div class=\"foo\">bar</div>';\n      var fn = Function('pug', src + '\\nreturn myTemplateName;')(pug.runtime);\n      assert(fn() === expected);\n    });\n    it('should support caching (pass 2)', function() {\n      // Poison the input file\n      fs.writeFileSync(\n        __dirname + '/temp/input-compileFileClient.pug',\n        '.big fat hen'\n      );\n      var src = pug.compileFileClient(\n        __dirname + '/temp/input-compileFileClient.pug',\n        {name: 'myTemplateName', cache: true}\n      );\n      var expected = '<div class=\"foo\">bar</div>';\n      var fn = Function('pug', src + '\\nreturn myTemplateName;')(pug.runtime);\n      assert(fn() === expected);\n    });\n  });\n\n  describe('.runtime', function() {\n    describe('.merge', function() {\n      it('merges two attribute objects, giving precedensce to the second object', function() {\n        assert.deepEqual(\n          pug.runtime.merge({}, {class: ['foo', 'bar'], foo: 'bar'}),\n          {class: ['foo', 'bar'], foo: 'bar'}\n        );\n        assert.deepEqual(\n          pug.runtime.merge(\n            {class: ['foo'], foo: 'baz'},\n            {class: ['bar'], foo: 'bar'}\n          ),\n          {class: ['foo', 'bar'], foo: 'bar'}\n        );\n        assert.deepEqual(\n          pug.runtime.merge({class: ['foo', 'bar'], foo: 'bar'}, {}),\n          {class: ['foo', 'bar'], foo: 'bar'}\n        );\n      });\n    });\n    describe('.attrs', function() {\n      it('Renders the given attributes object', function() {\n        assert.equal(pug.runtime.attrs({}), '');\n        assert.equal(pug.runtime.attrs({class: []}), '');\n        assert.equal(pug.runtime.attrs({class: ['foo']}), ' class=\"foo\"');\n        assert.equal(\n          pug.runtime.attrs({class: ['foo'], id: 'bar'}),\n          ' class=\"foo\" id=\"bar\"'\n        );\n      });\n    });\n  });\n\n  describe('filter indentation', function() {\n    it('is maintained', function() {\n      var filters = {\n        indents: function(str) {\n          return str\n            .split(/\\n/)\n            .map(function(line) {\n              return line.match(/^ */)[0].length;\n            })\n            .join(',');\n        },\n      };\n\n      var indents = [\n        ':indents',\n        '  x',\n        '   x',\n        '    x',\n        '     x',\n        '  x',\n        '      x',\n        '      x',\n        '     x',\n        '     x',\n        '      x',\n        '    x',\n        '  x',\n        '    x',\n        '  x',\n        '   x',\n      ].join('\\n');\n\n      assert.equal(\n        pug.render(indents, {filters: filters}),\n        '0,1,2,3,0,4,4,3,3,4,2,0,2,0,1'\n      );\n    });\n  });\n\n  describe('.compile().dependencies', function() {\n    it('should list the filename of the template referenced by extends', function() {\n      var filename = __dirname + '/dependencies/extends1.pug';\n      var str = fs.readFileSync(filename, 'utf8');\n      var info = pug.compile(str, {filename: filename});\n      assert.deepEqual(\n        [path.resolve(__dirname + '/dependencies/dependency1.pug')],\n        info.dependencies\n      );\n    });\n    it('should list the filename of the template referenced by an include', function() {\n      var filename = __dirname + '/dependencies/include1.pug';\n      var str = fs.readFileSync(filename, 'utf8');\n      var info = pug.compile(str, {filename: filename});\n      assert.deepEqual(\n        [path.resolve(__dirname + '/dependencies/dependency1.pug')],\n        info.dependencies\n      );\n    });\n    it('should list the dependencies of extends dependencies', function() {\n      var filename = __dirname + '/dependencies/extends2.pug';\n      var str = fs.readFileSync(filename, 'utf8');\n      var info = pug.compile(str, {filename: filename});\n      assert.deepEqual(\n        [\n          path.resolve(__dirname + '/dependencies/dependency2.pug'),\n          path.resolve(__dirname + '/dependencies/dependency3.pug'),\n        ],\n        info.dependencies\n      );\n    });\n    it('should list the dependencies of include dependencies', function() {\n      var filename = __dirname + '/dependencies/include2.pug';\n      var str = fs.readFileSync(filename, 'utf8');\n      var info = pug.compile(str, {filename: filename});\n      assert.deepEqual(\n        [\n          path.resolve(__dirname + '/dependencies/dependency2.pug'),\n          path.resolve(__dirname + '/dependencies/dependency3.pug'),\n        ],\n        info.dependencies\n      );\n    });\n  });\n\n  describe('.name', function() {\n    it('should have a name attribute', function() {\n      assert.strictEqual(pug.name, 'Pug');\n    });\n  });\n});\n"
  },
  {
    "path": "packages/pug/test/regression-2436/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`#2436 - block with a same name extends from different layout in nesting 1`] = `\n\"\n<h1>layout </h1>\n<p>Main A</p>\n<h1>other layout</h1>\n<p>Other A</p>\"\n`;\n\nexports[`#2436 - block with a same name extends from the same layout in nesting 1`] = `\n\"\n<h1>layout </h1>\n<p>Main A</p>\n<h1>layout </h1>\n<p>Other A</p>\"\n`;\n"
  },
  {
    "path": "packages/pug/test/regression-2436/index.test.js",
    "content": "const pug = require('../../');\n\ntest('#2436 - block with a same name extends from the same layout in nesting', () => {\n  const output = pug.renderFile(__dirname + '/issue1.pug', {pretty: true});\n  expect(output).toMatchSnapshot();\n});\n\ntest('#2436 - block with a same name extends from different layout in nesting', () => {\n  const output = pug.renderFile(__dirname + '/issue2.pug', {pretty: true});\n  expect(output).toMatchSnapshot();\n});\n"
  },
  {
    "path": "packages/pug/test/regression-2436/issue1.pug",
    "content": "extends layout.pug\n\nblock a\n    p Main A\n\nblock b\n    include other1.pug\n"
  },
  {
    "path": "packages/pug/test/regression-2436/issue2.pug",
    "content": "extends layout.pug\n\nblock a\n    p Main A\n\nblock b\n    include other2.pug\n"
  },
  {
    "path": "packages/pug/test/regression-2436/layout.pug",
    "content": "h1 layout \n\nblock a\n    p block in layout\n\nblock b\n"
  },
  {
    "path": "packages/pug/test/regression-2436/other1.pug",
    "content": "extends layout.pug\n\nblock a\n    p Other A\n"
  },
  {
    "path": "packages/pug/test/regression-2436/other2.pug",
    "content": "extends other_layout.pug\n\nblock a\n    p Other A\n"
  },
  {
    "path": "packages/pug/test/regression-2436/other_layout.pug",
    "content": "h1 other layout\n\nblock a\n    p block in other layout\n"
  },
  {
    "path": "packages/pug/test/run-es2015.test.js",
    "content": "'use strict';\n\nconst fs = require('fs');\nconst assert = require('assert');\nconst mkdirp = require('mkdirp').sync;\nconst runUtils = require('./run-utils');\nconst pug = require('../');\n\nvar cases = runUtils.findCases(__dirname + '/cases');\nvar es2015 = runUtils.findCases(__dirname + '/cases-es2015');\n\nmkdirp(__dirname + '/output-es2015');\n\ndescribe('test cases for ECMAScript 2015', function() {\n  try {\n    eval('``');\n    es2015.forEach(runUtils.testSingle.bind(null, it, '-es2015'));\n  } catch (ex) {\n    es2015.forEach(runUtils.testSingle.bind(null, it.skip, '-es2015'));\n  }\n});\n"
  },
  {
    "path": "packages/pug/test/run-syntax-errors.test.js",
    "content": "const assert = require('assert');\nconst fs = require('fs');\nconst runUtils = require('./run-utils');\nconst pug = require('../');\n\nconst anti = runUtils.findCases(__dirname + '/anti-cases');\n\ndescribe('certain syntax is not allowed and will throw a compile time error', function() {\n  anti.forEach(function(test) {\n    var name = test.replace(/[-.]/g, ' ');\n    it(name, function() {\n      var path = __dirname.replace(/\\\\/g, '/') + '/anti-cases/' + test + '.pug';\n      var str = fs.readFileSync(path, 'utf8');\n      try {\n        var fn = pug.compile(str, {\n          filename: path,\n          pretty: true,\n          basedir: __dirname + '/anti-cases',\n          filters: runUtils.filters,\n        });\n      } catch (ex) {\n        if (!ex.code) {\n          throw ex;\n        }\n        assert(ex instanceof Error, 'Should throw a real Error');\n        assert(\n          ex.code.indexOf('PUG:') === 0,\n          'It should have a code of \"PUG:SOMETHING\"'\n        );\n        assert(\n          ex.message.replace(/\\\\/g, '/').indexOf(path) === 0,\n          'it should start with the path'\n        );\n        assert(\n          /:\\d+$/m.test(ex.message.replace(/\\\\/g, '/')),\n          'it should include a line number.'\n        );\n        return;\n      }\n      throw new Error(test + ' should have thrown an error');\n    });\n  });\n});\n"
  },
  {
    "path": "packages/pug/test/run-utils.js",
    "content": "var fs = require('fs');\nvar assert = require('assert');\nvar pug = require('../');\nvar uglify = require('uglify-js');\nvar mkdirp = require('mkdirp').sync;\n\nvar filters = {\n  custom: function(str, options) {\n    assert(options.opt === 'val');\n    assert(options.num === 2);\n    return 'BEGIN' + str + 'END';\n  },\n};\n\n// test cases\n\nfunction writeFileSync(filename, data) {\n  try {\n    if (fs.readFileSync(filename, 'utf8') === data.toString('utf8')) {\n      return;\n    }\n  } catch (ex) {\n    if (ex.code !== 'ENOENT') {\n      throw ex;\n    }\n  }\n  fs.writeFileSync(filename, data);\n}\n\nfunction findCases(dir) {\n  return fs\n    .readdirSync(dir)\n    .filter(function(file) {\n      return ~file.indexOf('.pug');\n    })\n    .map(function(file) {\n      return file.replace('.pug', '');\n    });\n}\n\nfunction testSingle(it, suffix, test) {\n  var name = test.replace(/[-.]/g, ' ');\n  it(name, function() {\n    var path = __dirname + '/cases' + suffix + '/' + test + '.pug';\n    var str = fs.readFileSync(path, 'utf8');\n    var fn = pug.compile(str, {\n      filename: path,\n      pretty: true,\n      basedir: __dirname + '/cases' + suffix,\n      filters: filters,\n      filterAliases: {markdown: 'markdown-it'},\n    });\n    var actual = fn({title: 'Pug'});\n\n    writeFileSync(\n      __dirname + '/output' + suffix + '/' + test + '.html',\n      actual\n    );\n\n    var html = fs\n      .readFileSync(\n        __dirname + '/cases' + suffix + '/' + test + '.html',\n        'utf8'\n      )\n      .trim()\n      .replace(/\\r/g, '');\n    var clientCode = uglify.minify(\n      pug.compileClient(str, {\n        filename: path,\n        pretty: true,\n        compileDebug: false,\n        basedir: __dirname + '/cases' + suffix,\n        filters: filters,\n        filterAliases: {markdown: 'markdown-it'},\n      }),\n      {\n        output: {beautify: true},\n        mangle: false,\n        compress: false,\n        fromString: true,\n      }\n    ).code;\n    var clientCodeDebug = uglify.minify(\n      pug.compileClient(str, {\n        filename: path,\n        pretty: true,\n        compileDebug: true,\n        basedir: __dirname + '/cases' + suffix,\n        filters: filters,\n        filterAliases: {markdown: 'markdown-it'},\n      }),\n      {\n        output: {beautify: true},\n        mangle: false,\n        compress: false,\n        fromString: true,\n      }\n    ).code;\n    writeFileSync(\n      __dirname + '/output' + suffix + '/' + test + '.js',\n      uglify.minify(\n        pug.compileClient(str, {\n          filename: path,\n          pretty: false,\n          compileDebug: false,\n          basedir: __dirname + '/cases' + suffix,\n          filters: filters,\n          filterAliases: {markdown: 'markdown-it'},\n        }),\n        {\n          output: {beautify: true},\n          mangle: false,\n          compress: false,\n          fromString: true,\n        }\n      ).code\n    );\n    if (/filter/.test(test)) {\n      actual = actual.replace(/\\n| /g, '');\n      html = html.replace(/\\n| /g, '');\n    }\n    if (/mixins-unused/.test(test)) {\n      assert(\n        /never-called/.test(str),\n        'never-called is in the pug file for mixins-unused'\n      );\n      assert(\n        !/never-called/.test(clientCode),\n        'never-called should be removed from the code'\n      );\n    }\n    expect(actual.trim()).toEqual(html);\n    actual = Function('pug', clientCode + '\\nreturn template;')()({\n      title: 'Pug',\n    });\n    if (/filter/.test(test)) {\n      actual = actual.replace(/\\n| /g, '');\n    }\n    expect(actual.trim()).toEqual(html);\n    actual = Function('pug', clientCodeDebug + '\\nreturn template;')()({\n      title: 'Pug',\n    });\n    if (/filter/.test(test)) {\n      actual = actual.replace(/\\n| /g, '');\n    }\n    expect(actual.trim()).toEqual(html);\n  });\n}\n\nmodule.exports = {\n  filters,\n  findCases,\n  testSingle,\n};\n"
  },
  {
    "path": "packages/pug/test/run.test.js",
    "content": "'use strict';\n\n// even and odd tests are arbitrarily split because jest is faster that way\n\nconst fs = require('fs');\nconst assert = require('assert');\nconst mkdirp = require('mkdirp').sync;\nconst runUtils = require('./run-utils');\nconst pug = require('../');\n\nvar cases = runUtils.findCases(__dirname + '/cases');\nvar es2015 = runUtils.findCases(__dirname + '/cases-es2015');\n\nmkdirp(__dirname + '/output');\n\ndescribe('test cases', function() {\n  cases.forEach((test, i) => {\n    runUtils.testSingle(it, '', test);\n  });\n});\n"
  },
  {
    "path": "packages/pug/test/shadowed-block/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`layout with shadowed block 1`] = `\"<!-- layout.pug: root--><!-- index.pug: shadowed-->\"`;\n\nexports[`layout with shadowed block 2`] = `\"<!-- layout.pug: root--><!-- index.pug: shadowed-->\"`;\n"
  },
  {
    "path": "packages/pug/test/shadowed-block/base.pug",
    "content": "block root\n  // base.pug: root\n  block shadowed\n    // base.pug: shadowed\n"
  },
  {
    "path": "packages/pug/test/shadowed-block/index.pug",
    "content": "extends ./layout.pug\n\nblock shadowed\n  // index.pug: shadowed\n"
  },
  {
    "path": "packages/pug/test/shadowed-block/index.test.js",
    "content": "const pug = require('../../');\n\ntest('layout with shadowed block', () => {\n  const outputWithAjax = pug.renderFile(__dirname + '/index.pug', {ajax: true});\n  const outputWithoutAjax = pug.renderFile(__dirname + '/index.pug', {\n    ajax: false,\n  });\n  expect(outputWithAjax).toMatchSnapshot();\n  expect(outputWithoutAjax).toMatchSnapshot();\n});\n"
  },
  {
    "path": "packages/pug/test/shadowed-block/layout.pug",
    "content": "extends ./base.pug\n\nblock root\n  // layout.pug: root\n  block shadowed\n    // layout.pug: shadowed\n"
  },
  {
    "path": "packages/pug-attrs/LICENSE",
    "content": "Copyright (c) 2015 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-attrs/README.md",
    "content": "# pug-attrs\n\nGenerate code for Pug attributes\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-attrs/master.svg)](https://travis-ci.org/pugjs/pug-attrs)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-attrs)](https://david-dm.org/pugjs/pug?path=packages/pug-attrs)\n[![NPM version](https://img.shields.io/npm/v/pug-attrs.svg)](https://www.npmjs.org/package/pug-attrs)\n\n## Installation\n\n    npm install pug-attrs\n\n## Usage\n\n```js\nvar compileAttrs = require('pug-attrs');\n```\n\n### `compileAttrs(attrs, options)`\n\nCompile `attrs` to a JavaScript string that evaluates to the attributes in the desired format.\n\n`options` MUST include the following properties:\n\n- `terse`: whether or not to use HTML5-style terse boolean attributes\n- `runtime`: callback that takes a runtime function name and returns the source code that will evaluate to that function at runtime\n- `format`: output format; must be `html` or `object`\n\n`attrs` is an array of attributes, with each attribute having the form of `{ name, val, mustEscape }`. `val` represents a JavaScript string that evaluates to the value of the attribute, either statically or dynamically.\n\n```js\nvar compileAttrs = require('pug-attrs');\nvar pugRuntime = require('pug-runtime');\n\nfunction getBaz () { return 'baz<>'; }\n\nvar attrs = [\n  {name: 'foo',  val: '\"bar\"',    mustEscape: true },\n  {name: 'baz',  val: 'getBaz()', mustEscape: true },\n  {name: 'quux', val: true,       mustEscape: false}\n];\nvar result, finalResult;\n\n// HTML MODE\nresult = compileAttrs(attrs, {\n  terse:   true,\n  format:  'html',\n  runtime: function (name) { return 'pugRuntime.' + name; }\n});\n//=> '\" foo=\\\\\"bar\\\\\"\" + pugRuntime.attr(\"baz\", getBaz(), true, true) + \" quux\"'\n\nfinalResult = Function('pugRuntime, getBaz',\n  'return (' + result + ');'\n);\nfinalResult(pugRuntime, getBaz);\n// => ' foo=\"bar\" baz=\"baz&lt;&gt;\" quux'\n\n// OBJECT MODE\nresult = compileAttrs(attrs, {\n  terse:   true,\n  format:  'object',\n  runtime: function (name) { return 'pugRuntime.' + name; }\n});\n//=> '{\"foo\": \"bar\",\"baz\": pugRuntime.escape(getBaz()),\"quux\": true}'\n\nfinalResult = Function('pugRuntime, getBaz',\n  'return (' + result + ');'\n);\nfinalResult(pugRuntime, getBaz);\n//=> { foo: 'bar', baz: 'baz&lt;&gt;', quux: true }\n```\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-attrs/index.js",
    "content": "'use strict';\n\nvar assert = require('assert');\nvar constantinople = require('constantinople');\nvar runtime = require('pug-runtime');\nvar stringify = require('js-stringify');\n\nfunction isConstant(src) {\n  return constantinople(src, {pug: runtime, pug_interp: undefined});\n}\nfunction toConstant(src) {\n  return constantinople.toConstant(src, {pug: runtime, pug_interp: undefined});\n}\n\nmodule.exports = compileAttrs;\n/**\n * options:\n *  - terse\n *  - runtime\n *  - format ('html' || 'object')\n */\nfunction compileAttrs(attrs, options) {\n  assert(Array.isArray(attrs), 'Attrs should be an array');\n  assert(\n    attrs.every(function(attr) {\n      return (\n        attr &&\n        typeof attr === 'object' &&\n        typeof attr.name === 'string' &&\n        (typeof attr.val === 'string' || typeof attr.val === 'boolean') &&\n        typeof attr.mustEscape === 'boolean'\n      );\n    }),\n    'All attributes should be supplied as an object of the form {name, val, mustEscape}'\n  );\n  assert(options && typeof options === 'object', 'Options should be an object');\n  assert(\n    typeof options.terse === 'boolean',\n    'Options.terse should be a boolean'\n  );\n  assert(\n    typeof options.runtime === 'function',\n    'Options.runtime should be a function that takes a runtime function name and returns the source code that will evaluate to that function at runtime'\n  );\n  assert(\n    options.format === 'html' || options.format === 'object',\n    'Options.format should be \"html\" or \"object\"'\n  );\n\n  var buf = [];\n  var classes = [];\n  var classEscaping = [];\n\n  function addAttribute(key, val, mustEscape, buf) {\n    if (isConstant(val)) {\n      if (options.format === 'html') {\n        var str = stringify(\n          runtime.attr(key, toConstant(val), mustEscape, options.terse)\n        );\n        var last = buf[buf.length - 1];\n        if (last && last[last.length - 1] === str[0]) {\n          buf[buf.length - 1] = last.substr(0, last.length - 1) + str.substr(1);\n        } else {\n          buf.push(str);\n        }\n      } else {\n        val = toConstant(val);\n        if (mustEscape) {\n          val = runtime.escape(val);\n        }\n        buf.push(stringify(key) + ': ' + stringify(val));\n      }\n    } else {\n      if (options.format === 'html') {\n        buf.push(\n          options.runtime('attr') +\n            '(\"' +\n            key +\n            '\", ' +\n            val +\n            ', ' +\n            stringify(mustEscape) +\n            ', ' +\n            stringify(options.terse) +\n            ')'\n        );\n      } else {\n        if (mustEscape) {\n          val = options.runtime('escape') + '(' + val + ')';\n        }\n        buf.push(stringify(key) + ': ' + val);\n      }\n    }\n  }\n\n  attrs.forEach(function(attr) {\n    var key = attr.name;\n    var val = attr.val;\n    var mustEscape = attr.mustEscape;\n\n    if (key === 'class') {\n      classes.push(val);\n      classEscaping.push(mustEscape);\n    } else {\n      if (key === 'style') {\n        if (isConstant(val)) {\n          val = stringify(runtime.style(toConstant(val)));\n        } else {\n          val = options.runtime('style') + '(' + val + ')';\n        }\n      }\n      addAttribute(key, val, mustEscape, buf);\n    }\n  });\n  var classesBuf = [];\n  if (classes.length) {\n    if (classes.every(isConstant)) {\n      addAttribute(\n        'class',\n        stringify(runtime.classes(classes.map(toConstant), classEscaping)),\n        false,\n        classesBuf\n      );\n    } else {\n      classes = classes.map(function(cls, i) {\n        if (isConstant(cls)) {\n          cls = stringify(\n            classEscaping[i] ? runtime.escape(toConstant(cls)) : toConstant(cls)\n          );\n          classEscaping[i] = false;\n        }\n        return cls;\n      });\n      addAttribute(\n        'class',\n        options.runtime('classes') +\n          '([' +\n          classes.join(',') +\n          '], ' +\n          stringify(classEscaping) +\n          ')',\n        false,\n        classesBuf\n      );\n    }\n  }\n  buf = classesBuf.concat(buf);\n  if (options.format === 'html') return buf.length ? buf.join('+') : '\"\"';\n  else return '{' + buf.join(',') + '}';\n}\n"
  },
  {
    "path": "packages/pug-attrs/package.json",
    "content": "{\n  \"name\": \"pug-attrs\",\n  \"version\": \"2.0.4\",\n  \"description\": \"Generate code for Pug attributes\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"constantinople\": \"^4.0.1\",\n    \"js-stringify\": \"^1.0.2\",\n    \"pug-runtime\": \"^2.0.5\"\n  },\n  \"files\": [\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-attrs\"\n  },\n  \"author\": \"Forbes Lindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-attrs/test/index.test.js",
    "content": "'use strict';\n\nvar assert = require('assert');\nvar utils = require('util');\nvar attrs = require('../');\n\nvar options;\nfunction test(input, expected, locals) {\n  var opts = options;\n  locals = locals || {};\n  locals.pug = locals.pug || require('pug-runtime');\n  it(\n    utils.inspect(input).replace(/\\n/g, '') + ' => ' + utils.inspect(expected),\n    function() {\n      var src = attrs(input, opts);\n      var localKeys = Object.keys(locals).sort();\n      var output = Function(\n        localKeys.join(', '),\n        'return (' + src + ');'\n      ).apply(\n        null,\n        localKeys.map(function(key) {\n          return locals[key];\n        })\n      );\n      if (opts.format === 'html') {\n        expect(output).toBe(expected);\n      } else {\n        expect(output).toEqual(expected);\n      }\n    }\n  );\n}\nfunction withOptions(opts, fn) {\n  describe('options: ' + utils.inspect(opts), function() {\n    options = opts;\n    fn();\n  });\n}\n\nwithOptions(\n  {\n    terse: true,\n    format: 'html',\n    runtime: function(name) {\n      return 'pug.' + name;\n    },\n  },\n  function() {\n    test([], '');\n    test([{name: 'foo', val: 'false', mustEscape: true}], '');\n    test([{name: 'foo', val: 'true', mustEscape: true}], ' foo');\n    test([{name: 'foo', val: false, mustEscape: true}], '');\n    test([{name: 'foo', val: true, mustEscape: true}], ' foo');\n    test([{name: 'foo', val: 'foo', mustEscape: true}], '', {foo: false});\n    test([{name: 'foo', val: 'foo', mustEscape: true}], ' foo', {foo: true});\n    test([{name: 'foo', val: '\"foo\"', mustEscape: true}], ' foo=\"foo\"');\n    test(\n      [\n        {name: 'foo', val: '\"foo\"', mustEscape: true},\n        {name: 'bar', val: '\"bar\"', mustEscape: true},\n      ],\n      ' foo=\"foo\" bar=\"bar\"'\n    );\n    test([{name: 'foo', val: 'foo', mustEscape: true}], ' foo=\"fooo\"', {\n      foo: 'fooo',\n    });\n    test(\n      [\n        {name: 'foo', val: 'foo', mustEscape: true},\n        {name: 'bar', val: 'bar', mustEscape: true},\n      ],\n      ' foo=\"fooo\" bar=\"baro\"',\n      {foo: 'fooo', bar: 'baro'}\n    );\n    test(\n      [{name: 'style', val: '{color: \"red\"}', mustEscape: true}],\n      ' style=\"color:red;\"'\n    );\n    test(\n      [{name: 'style', val: '{color: color}', mustEscape: true}],\n      ' style=\"color:red;\"',\n      {color: 'red'}\n    );\n    test(\n      [\n        {name: 'class', val: '\"foo\"', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      ' class=\"foo bar baz\"'\n    );\n    test(\n      [\n        {name: 'class', val: '{foo: foo}', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      ' class=\"foo bar baz\"',\n      {foo: true}\n    );\n    test(\n      [\n        {name: 'class', val: '{foo: foo}', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      ' class=\"bar baz\"',\n      {foo: false}\n    );\n    test(\n      [\n        {name: 'class', val: 'foo', mustEscape: true},\n        {name: 'class', val: '\"<str>\"', mustEscape: true},\n      ],\n      ' class=\"&lt;foo&gt; &lt;str&gt;\"',\n      {foo: '<foo>'}\n    );\n    test(\n      [\n        {name: 'foo', val: '\"foo\"', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      ' class=\"bar baz\" foo=\"foo\"'\n    );\n    test(\n      [\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n        {name: 'foo', val: '\"foo\"', mustEscape: true},\n      ],\n      ' class=\"bar baz\" foo=\"foo\"'\n    );\n    test([{name: 'foo', val: '\"<foo>\"', mustEscape: false}], ' foo=\"<foo>\"');\n    test(\n      [{name: 'foo', val: '\"<foo>\"', mustEscape: true}],\n      ' foo=\"&lt;foo&gt;\"'\n    );\n    test([{name: 'foo', val: 'foo', mustEscape: false}], ' foo=\"<foo>\"', {\n      foo: '<foo>',\n    });\n    test([{name: 'foo', val: 'foo', mustEscape: true}], ' foo=\"&lt;foo&gt;\"', {\n      foo: '<foo>',\n    });\n  }\n);\nwithOptions(\n  {\n    terse: false,\n    format: 'html',\n    runtime: function(name) {\n      return 'pug.' + name;\n    },\n  },\n  function() {\n    test([{name: 'foo', val: 'false', mustEscape: true}], '');\n    test([{name: 'foo', val: 'true', mustEscape: true}], ' foo=\"foo\"');\n    test([{name: 'foo', val: false, mustEscape: true}], '');\n    test([{name: 'foo', val: true, mustEscape: true}], ' foo=\"foo\"');\n    test([{name: 'foo', val: 'foo', mustEscape: true}], '', {foo: false});\n    test([{name: 'foo', val: 'foo', mustEscape: true}], ' foo=\"foo\"', {\n      foo: true,\n    });\n  }\n);\n\nwithOptions(\n  {\n    terse: true,\n    format: 'object',\n    runtime: function(name) {\n      return 'pug.' + name;\n    },\n  },\n  function() {\n    test([], {});\n    test([{name: 'foo', val: 'false', mustEscape: true}], {foo: false});\n    test([{name: 'foo', val: 'true', mustEscape: true}], {foo: true});\n    test([{name: 'foo', val: false, mustEscape: true}], {foo: false});\n    test([{name: 'foo', val: true, mustEscape: true}], {foo: true});\n    test(\n      [{name: 'foo', val: 'foo', mustEscape: true}],\n      {foo: false},\n      {foo: false}\n    );\n    test(\n      [{name: 'foo', val: 'foo', mustEscape: true}],\n      {foo: true},\n      {foo: true}\n    );\n    test([{name: 'foo', val: '\"foo\"', mustEscape: true}], {foo: 'foo'});\n    test(\n      [\n        {name: 'foo', val: '\"foo\"', mustEscape: true},\n        {name: 'bar', val: '\"bar\"', mustEscape: true},\n      ],\n      {foo: 'foo', bar: 'bar'}\n    );\n    test(\n      [{name: 'foo', val: 'foo', mustEscape: true}],\n      {foo: 'fooo'},\n      {foo: 'fooo'}\n    );\n    test(\n      [\n        {name: 'foo', val: 'foo', mustEscape: true},\n        {name: 'bar', val: 'bar', mustEscape: true},\n      ],\n      {foo: 'fooo', bar: 'baro'},\n      {foo: 'fooo', bar: 'baro'}\n    );\n    test([{name: 'style', val: '{color: \"red\"}', mustEscape: true}], {\n      style: 'color:red;',\n    });\n    test(\n      [{name: 'style', val: '{color: color}', mustEscape: true}],\n      {style: 'color:red;'},\n      {color: 'red'}\n    );\n    test(\n      [\n        {name: 'class', val: '\"foo\"', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      {class: 'foo bar baz'}\n    );\n    test(\n      [\n        {name: 'class', val: '{foo: foo}', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      {class: 'foo bar baz'},\n      {foo: true}\n    );\n    test(\n      [\n        {name: 'class', val: '{foo: foo}', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      {class: 'bar baz'},\n      {foo: false}\n    );\n    test(\n      [\n        {name: 'class', val: 'foo', mustEscape: true},\n        {name: 'class', val: '\"<str>\"', mustEscape: true},\n      ],\n      {class: '&lt;foo&gt; &lt;str&gt;'},\n      {foo: '<foo>'}\n    );\n    test(\n      [\n        {name: 'foo', val: '\"foo\"', mustEscape: true},\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n      ],\n      {class: 'bar baz', foo: 'foo'}\n    );\n    test(\n      [\n        {name: 'class', val: '[\"bar\", \"baz\"]', mustEscape: true},\n        {name: 'foo', val: '\"foo\"', mustEscape: true},\n      ],\n      {class: 'bar baz', foo: 'foo'}\n    );\n    test([{name: 'foo', val: '\"<foo>\"', mustEscape: false}], {foo: '<foo>'});\n    test([{name: 'foo', val: '\"<foo>\"', mustEscape: true}], {\n      foo: '&lt;foo&gt;',\n    });\n    test(\n      [{name: 'foo', val: 'foo', mustEscape: false}],\n      {foo: '<foo>'},\n      {foo: '<foo>'}\n    );\n    test(\n      [{name: 'foo', val: 'foo', mustEscape: true}],\n      {foo: '&lt;foo&gt;'},\n      {foo: '<foo>'}\n    );\n  }\n);\nwithOptions(\n  {\n    terse: false,\n    format: 'object',\n    runtime: function(name) {\n      return 'pug.' + name;\n    },\n  },\n  function() {\n    test([{name: 'foo', val: 'false', mustEscape: true}], {foo: false});\n    test([{name: 'foo', val: 'true', mustEscape: true}], {foo: true});\n    test([{name: 'foo', val: false, mustEscape: true}], {foo: false});\n    test([{name: 'foo', val: true, mustEscape: true}], {foo: true});\n    test(\n      [{name: 'foo', val: 'foo', mustEscape: true}],\n      {foo: false},\n      {foo: false}\n    );\n    test(\n      [{name: 'foo', val: 'foo', mustEscape: true}],\n      {foo: true},\n      {foo: true}\n    );\n  }\n);\n"
  },
  {
    "path": "packages/pug-code-gen/HISTORY.md",
    "content": "# Change log\n\n## 1.1.0 / 2016-08-23\n\n- Wrap `each` and `for` in IIFE to prevent variable from leaking\n\n## 1.0.1 / 2016-08-10\n\n- Update doctypes to 1.1.0\n\n## 1.0.0 / 2016-08-10\n\n- First stable release\n"
  },
  {
    "path": "packages/pug-code-gen/LICENSE",
    "content": "Copyright (c) 2015 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-code-gen/README.md",
    "content": "# pug-code-gen\n\nDefault code-generator for pug.  It generates HTML via a JavaScript template function.\n\n<!-- [![Build Status](https://img.shields.io/travis/pugjs/pug-code-gen/master.svg)](https://travis-ci.org/pugjs/pug-code-gen) -->\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-code-gen)](https://david-dm.org/pugjs/pug?path=packages/pug-code-gen)\n[![npm version](https://img.shields.io/npm/v/pug-code-gen.svg)](https://www.npmjs.org/package/pug-code-gen)\n\n## Installation\n\n    npm install pug-code-gen\n\n## Usage\n\n```js\nvar generateCode = require('pug-code-gen');\n```\n\n### `generateCode(ast, options)`\n\nGenerate a JavaScript function string for the given AST.\n\n`ast` is a fully expanded AST for Pug, with all inclusion, extends, and filters resolved.\n\n`options` may contain the following properties that have the same meaning as the options with the same names in `pug`:\n\n - pretty (boolean): default is `false`\n - compileDebug (boolean): default is `true`\n - doctype (string): default is `undefined`\n - inlineRuntimeFunctions (boolean): default is `false`\n - globals (array of strings): default is `[]`\n - self (boolean): default is `false`\n\nIn addition to above, `pug-code-gen` has the following unique options:\n\n - includeSources (object): map of filename to source string; used if `compileDebug` is `true`; default is `undefined`\n - templateName (string): the name of the generated function; default is `'template'`\n\n```js\nvar lex = require('pug-lexer');\nvar parse = require('pug-parser');\nvar wrap = require('pug-runtime/wrap');\nvar generateCode = require('pug-code-gen');\n\nvar funcStr = generateCode(parse(lex('p Hello world!')), {\n  compileDebug: false,\n  pretty: true,\n  inlineRuntimeFunctions: false,\n  templateName: 'helloWorld'\n});\n//=> 'function helloWorld(locals) { ... }'\n\nvar func = wrap(funcStr, 'helloWorld');\nfunc();\n//=> '\\n<p>Hello world!</p>'\n```\n\n### `new generateCode.CodeGenerator(ast, options)`\n\nThe constructor for the internal class of the code generator. You shouldn't need to use this for most purposes.\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-code-gen/index.js",
    "content": "'use strict';\n\nvar doctypes = require('doctypes');\nvar makeError = require('pug-error');\nvar buildRuntime = require('pug-runtime/build');\nvar runtime = require('pug-runtime');\nvar compileAttrs = require('pug-attrs');\nvar selfClosing = require('void-elements');\nvar constantinople = require('constantinople');\nvar stringify = require('js-stringify');\nvar addWith = require('with');\n\n// This is used to prevent pretty printing inside certain tags\nvar WHITE_SPACE_SENSITIVE_TAGS = {\n  pre: true,\n  textarea: true,\n};\n\nvar INTERNAL_VARIABLES = [\n  'pug',\n  'pug_mixins',\n  'pug_interp',\n  'pug_debug_filename',\n  'pug_debug_line',\n  'pug_debug_sources',\n  'pug_html',\n];\n\nmodule.exports = generateCode;\nmodule.exports.CodeGenerator = Compiler;\nfunction generateCode(ast, options) {\n  return new Compiler(ast, options).compile();\n}\n\nfunction isConstant(src) {\n  return constantinople(src, {pug: runtime, pug_interp: undefined});\n}\nfunction toConstant(src) {\n  return constantinople.toConstant(src, {pug: runtime, pug_interp: undefined});\n}\n\nfunction isIdentifier(name) {\n  return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(name);\n}\n\n/**\n * Initialize `Compiler` with the given `node`.\n *\n * @param {Node} node\n * @param {Object} options\n * @api public\n */\n\nfunction Compiler(node, options) {\n  this.options = options = options || {};\n  this.node = node;\n  this.bufferedConcatenationCount = 0;\n  this.hasCompiledDoctype = false;\n  this.hasCompiledTag = false;\n  this.pp = options.pretty || false;\n  if (this.pp && typeof this.pp !== 'string') {\n    this.pp = '  ';\n  }\n  if (this.pp && !/^\\s+$/.test(this.pp)) {\n    throw new Error(\n      'The pretty parameter should either be a boolean or whitespace only string'\n    );\n  }\n  if (this.options.templateName && !isIdentifier(this.options.templateName)) {\n    throw new Error(\n      'The templateName parameter must be a valid JavaScript identifier if specified.'\n    );\n  }\n  if (\n    this.options.doctype &&\n    (this.options.doctype.includes('<') || this.options.doctype.includes('>'))\n  ) {\n    throw new Error('Doctype can not contain \"<\" or \">\"');\n  }\n  if (this.options.globals && !this.options.globals.every(isIdentifier)) {\n    throw new Error(\n      'The globals option must be an array of valid JavaScript identifiers if specified.'\n    );\n  }\n\n  this.debug = false !== options.compileDebug;\n  this.indents = 0;\n  this.parentIndents = 0;\n  this.terse = false;\n  this.mixins = {};\n  this.dynamicMixins = false;\n  this.eachCount = 0;\n  if (options.doctype) this.setDoctype(options.doctype);\n  this.runtimeFunctionsUsed = [];\n  this.inlineRuntimeFunctions = options.inlineRuntimeFunctions || false;\n  if (this.debug && this.inlineRuntimeFunctions) {\n    this.runtimeFunctionsUsed.push('rethrow');\n  }\n}\n\n/**\n * Compiler prototype.\n */\n\nCompiler.prototype = {\n  runtime: function(name) {\n    if (this.inlineRuntimeFunctions) {\n      this.runtimeFunctionsUsed.push(name);\n      return 'pug_' + name;\n    } else {\n      return 'pug.' + name;\n    }\n  },\n\n  error: function(message, code, node) {\n    var err = makeError(code, message, {\n      line: node.line,\n      column: node.column,\n      filename: node.filename,\n    });\n    throw err;\n  },\n\n  /**\n   * Compile parse tree to JavaScript.\n   *\n   * @api public\n   */\n\n  compile: function() {\n    this.buf = [];\n    if (this.pp) this.buf.push('var pug_indent = [];');\n    this.lastBufferedIdx = -1;\n    this.visit(this.node);\n    if (!this.dynamicMixins) {\n      // if there are no dynamic mixins we can remove any un-used mixins\n      var mixinNames = Object.keys(this.mixins);\n      for (var i = 0; i < mixinNames.length; i++) {\n        var mixin = this.mixins[mixinNames[i]];\n        if (!mixin.used) {\n          for (var x = 0; x < mixin.instances.length; x++) {\n            for (\n              var y = mixin.instances[x].start;\n              y < mixin.instances[x].end;\n              y++\n            ) {\n              this.buf[y] = '';\n            }\n          }\n        }\n      }\n    }\n    var js = this.buf.join('\\n');\n    var globals = this.options.globals\n      ? this.options.globals.concat(INTERNAL_VARIABLES)\n      : INTERNAL_VARIABLES;\n    if (this.options.self) {\n      js = 'var self = locals || {};' + js;\n    } else {\n      js = addWith(\n        'locals || {}',\n        js,\n        globals.concat(\n          this.runtimeFunctionsUsed.map(function(name) {\n            return 'pug_' + name;\n          })\n        )\n      );\n    }\n    if (this.debug) {\n      if (this.options.includeSources) {\n        js =\n          'var pug_debug_sources = ' +\n          stringify(this.options.includeSources) +\n          ';\\n' +\n          js;\n      }\n      js =\n        'var pug_debug_filename, pug_debug_line;' +\n        'try {' +\n        js +\n        '} catch (err) {' +\n        (this.inlineRuntimeFunctions ? 'pug_rethrow' : 'pug.rethrow') +\n        '(err, pug_debug_filename, pug_debug_line' +\n        (this.options.includeSources\n          ? ', pug_debug_sources[pug_debug_filename]'\n          : '') +\n        ');' +\n        '}';\n    }\n\n    return (\n      buildRuntime(this.runtimeFunctionsUsed) +\n      'function ' +\n      (this.options.templateName || 'template') +\n      '(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;' +\n      js +\n      ';return pug_html;}'\n    );\n  },\n\n  /**\n   * Sets the default doctype `name`. Sets terse mode to `true` when\n   * html 5 is used, causing self-closing tags to end with \">\" vs \"/>\",\n   * and boolean attributes are not mirrored.\n   *\n   * @param {string} name\n   * @api public\n   */\n\n  setDoctype: function(name) {\n    this.doctype = doctypes.hasOwnProperty(name.toLowerCase())\n      ? doctypes[name.toLowerCase()]\n      : '<!DOCTYPE ' + name + '>';\n    this.terse = this.doctype.toLowerCase() == '<!doctype html>';\n    this.xml = 0 == this.doctype.indexOf('<?xml');\n  },\n\n  /**\n   * Buffer the given `str` exactly as is or with interpolation\n   *\n   * @param {String} str\n   * @param {Boolean} interpolate\n   * @api public\n   */\n\n  buffer: function(str) {\n    var self = this;\n\n    str = stringify(str);\n    str = str.substr(1, str.length - 2);\n\n    if (\n      this.lastBufferedIdx == this.buf.length &&\n      this.bufferedConcatenationCount < 100\n    ) {\n      if (this.lastBufferedType === 'code') {\n        this.lastBuffered += ' + \"';\n        this.bufferedConcatenationCount++;\n      }\n      this.lastBufferedType = 'text';\n      this.lastBuffered += str;\n      this.buf[this.lastBufferedIdx - 1] =\n        'pug_html = pug_html + ' +\n        this.bufferStartChar +\n        this.lastBuffered +\n        '\";';\n    } else {\n      this.bufferedConcatenationCount = 0;\n      this.buf.push('pug_html = pug_html + \"' + str + '\";');\n      this.lastBufferedType = 'text';\n      this.bufferStartChar = '\"';\n      this.lastBuffered = str;\n      this.lastBufferedIdx = this.buf.length;\n    }\n  },\n\n  /**\n   * Buffer the given `src` so it is evaluated at run time\n   *\n   * @param {String} src\n   * @api public\n   */\n\n  bufferExpression: function(src) {\n    if (isConstant(src)) {\n      return this.buffer(toConstant(src) + '');\n    }\n    if (\n      this.lastBufferedIdx == this.buf.length &&\n      this.bufferedConcatenationCount < 100\n    ) {\n      this.bufferedConcatenationCount++;\n      if (this.lastBufferedType === 'text') this.lastBuffered += '\"';\n      this.lastBufferedType = 'code';\n      this.lastBuffered += ' + (' + src + ')';\n      this.buf[this.lastBufferedIdx - 1] =\n        'pug_html = pug_html + (' +\n        this.bufferStartChar +\n        this.lastBuffered +\n        ');';\n    } else {\n      this.bufferedConcatenationCount = 0;\n      this.buf.push('pug_html = pug_html + (' + src + ');');\n      this.lastBufferedType = 'code';\n      this.bufferStartChar = '';\n      this.lastBuffered = '(' + src + ')';\n      this.lastBufferedIdx = this.buf.length;\n    }\n  },\n\n  /**\n   * Buffer an indent based on the current `indent`\n   * property and an additional `offset`.\n   *\n   * @param {Number} offset\n   * @param {Boolean} newline\n   * @api public\n   */\n\n  prettyIndent: function(offset, newline) {\n    offset = offset || 0;\n    newline = newline ? '\\n' : '';\n    this.buffer(newline + Array(this.indents + offset).join(this.pp));\n    if (this.parentIndents)\n      this.buf.push('pug_html = pug_html + pug_indent.join(\"\");');\n  },\n\n  /**\n   * Visit `node`.\n   *\n   * @param {Node} node\n   * @api public\n   */\n\n  visit: function(node, parent) {\n    var debug = this.debug;\n\n    if (!node) {\n      var msg;\n      if (parent) {\n        msg =\n          'A child of ' +\n          parent.type +\n          ' (' +\n          (parent.filename || 'Pug') +\n          ':' +\n          parent.line +\n          ')';\n      } else {\n        msg = 'A top-level node';\n      }\n      msg += ' is ' + node + ', expected a Pug AST Node.';\n      throw new TypeError(msg);\n    }\n\n    if (debug && node.debug !== false && node.type !== 'Block') {\n      if (node.line) {\n        var js = ';pug_debug_line = ' + node.line;\n        if (node.filename)\n          js += ';pug_debug_filename = ' + stringify(node.filename);\n        this.buf.push(js + ';');\n      }\n    }\n\n    if (!this['visit' + node.type]) {\n      var msg;\n      if (parent) {\n        msg = 'A child of ' + parent.type;\n      } else {\n        msg = 'A top-level node';\n      }\n      msg +=\n        ' (' +\n        (node.filename || 'Pug') +\n        ':' +\n        node.line +\n        ')' +\n        ' is of type ' +\n        node.type +\n        ',' +\n        ' which is not supported by pug-code-gen.';\n      switch (node.type) {\n        case 'Filter':\n          msg += ' Please use pug-filters to preprocess this AST.';\n          break;\n        case 'Extends':\n        case 'Include':\n        case 'NamedBlock':\n        case 'FileReference': // unlikely but for the sake of completeness\n          msg += ' Please use pug-linker to preprocess this AST.';\n          break;\n      }\n      throw new TypeError(msg);\n    }\n\n    this.visitNode(node);\n  },\n\n  /**\n   * Visit `node`.\n   *\n   * @param {Node} node\n   * @api public\n   */\n\n  visitNode: function(node) {\n    return this['visit' + node.type](node);\n  },\n\n  /**\n   * Visit case `node`.\n   *\n   * @param {Literal} node\n   * @api public\n   */\n\n  visitCase: function(node) {\n    this.buf.push('switch (' + node.expr + '){');\n    this.visit(node.block, node);\n    this.buf.push('}');\n  },\n\n  /**\n   * Visit when `node`.\n   *\n   * @param {Literal} node\n   * @api public\n   */\n\n  visitWhen: function(node) {\n    if ('default' == node.expr) {\n      this.buf.push('default:');\n    } else {\n      this.buf.push('case ' + node.expr + ':');\n    }\n    if (node.block) {\n      this.visit(node.block, node);\n      this.buf.push('  break;');\n    }\n  },\n\n  /**\n   * Visit literal `node`.\n   *\n   * @param {Literal} node\n   * @api public\n   */\n\n  visitLiteral: function(node) {\n    this.buffer(node.str);\n  },\n\n  visitNamedBlock: function(block) {\n    return this.visitBlock(block);\n  },\n  /**\n   * Visit all nodes in `block`.\n   *\n   * @param {Block} block\n   * @api public\n   */\n\n  visitBlock: function(block) {\n    var escapePrettyMode = this.escapePrettyMode;\n    var pp = this.pp;\n\n    // Pretty print multi-line text\n    if (\n      pp &&\n      block.nodes.length > 1 &&\n      !escapePrettyMode &&\n      block.nodes[0].type === 'Text' &&\n      block.nodes[1].type === 'Text'\n    ) {\n      this.prettyIndent(1, true);\n    }\n    for (var i = 0; i < block.nodes.length; ++i) {\n      // Pretty print text\n      if (\n        pp &&\n        i > 0 &&\n        !escapePrettyMode &&\n        block.nodes[i].type === 'Text' &&\n        block.nodes[i - 1].type === 'Text' &&\n        /\\n$/.test(block.nodes[i - 1].val)\n      ) {\n        this.prettyIndent(1, false);\n      }\n      this.visit(block.nodes[i], block);\n    }\n  },\n\n  /**\n   * Visit a mixin's `block` keyword.\n   *\n   * @param {MixinBlock} block\n   * @api public\n   */\n\n  visitMixinBlock: function(block) {\n    if (this.pp)\n      this.buf.push(\n        'pug_indent.push(' +\n          stringify(Array(this.indents + 1).join(this.pp)) +\n          ');'\n      );\n    this.buf.push('block && block();');\n    if (this.pp) this.buf.push('pug_indent.pop();');\n  },\n\n  /**\n   * Visit `doctype`. Sets terse mode to `true` when html 5\n   * is used, causing self-closing tags to end with \">\" vs \"/>\",\n   * and boolean attributes are not mirrored.\n   *\n   * @param {Doctype} doctype\n   * @api public\n   */\n\n  visitDoctype: function(doctype) {\n    if (doctype && (doctype.val || !this.doctype)) {\n      this.setDoctype(doctype.val || 'html');\n    }\n\n    if (this.doctype) this.buffer(this.doctype);\n    this.hasCompiledDoctype = true;\n  },\n\n  /**\n   * Visit `mixin`, generating a function that\n   * may be called within the template.\n   *\n   * @param {Mixin} mixin\n   * @api public\n   */\n\n  visitMixin: function(mixin) {\n    var name = 'pug_mixins[';\n    var args = mixin.args || '';\n    var block = mixin.block;\n    var attrs = mixin.attrs;\n    var attrsBlocks = this.attributeBlocks(mixin.attributeBlocks);\n    var pp = this.pp;\n    var dynamic = mixin.name[0] === '#';\n    var key = mixin.name;\n    if (dynamic) this.dynamicMixins = true;\n    name +=\n      (dynamic\n        ? mixin.name.substr(2, mixin.name.length - 3)\n        : '\"' + mixin.name + '\"') + ']';\n\n    this.mixins[key] = this.mixins[key] || {used: false, instances: []};\n    if (mixin.call) {\n      this.mixins[key].used = true;\n      if (pp)\n        this.buf.push(\n          'pug_indent.push(' +\n            stringify(Array(this.indents + 1).join(pp)) +\n            ');'\n        );\n      if (block || attrs.length || attrsBlocks.length) {\n        this.buf.push(name + '.call({');\n\n        if (block) {\n          this.buf.push('block: function(){');\n\n          // Render block with no indents, dynamically added when rendered\n          this.parentIndents++;\n          var _indents = this.indents;\n          this.indents = 0;\n          this.visit(mixin.block, mixin);\n          this.indents = _indents;\n          this.parentIndents--;\n\n          if (attrs.length || attrsBlocks.length) {\n            this.buf.push('},');\n          } else {\n            this.buf.push('}');\n          }\n        }\n\n        if (attrsBlocks.length) {\n          if (attrs.length) {\n            var val = this.attrs(attrs);\n            attrsBlocks.unshift(val);\n          }\n          if (attrsBlocks.length > 1) {\n            this.buf.push(\n              'attributes: ' +\n                this.runtime('merge') +\n                '([' +\n                attrsBlocks.join(',') +\n                '])'\n            );\n          } else {\n            this.buf.push('attributes: ' + attrsBlocks[0]);\n          }\n        } else if (attrs.length) {\n          var val = this.attrs(attrs);\n          this.buf.push('attributes: ' + val);\n        }\n\n        if (args) {\n          this.buf.push('}, ' + args + ');');\n        } else {\n          this.buf.push('});');\n        }\n      } else {\n        this.buf.push(name + '(' + args + ');');\n      }\n      if (pp) this.buf.push('pug_indent.pop();');\n    } else {\n      var mixin_start = this.buf.length;\n      args = args ? args.split(',') : [];\n      var rest;\n      if (args.length && /^\\.\\.\\./.test(args[args.length - 1].trim())) {\n        rest = args\n          .pop()\n          .trim()\n          .replace(/^\\.\\.\\./, '');\n      }\n      // we need use pug_interp here for v8: https://code.google.com/p/v8/issues/detail?id=4165\n      // once fixed, use this: this.buf.push(name + ' = function(' + args.join(',') + '){');\n      this.buf.push(name + ' = pug_interp = function(' + args.join(',') + '){');\n      this.buf.push(\n        'var block = (this && this.block), attributes = (this && this.attributes) || {};'\n      );\n      if (rest) {\n        this.buf.push('var ' + rest + ' = [];');\n        this.buf.push(\n          'for (pug_interp = ' +\n            args.length +\n            '; pug_interp < arguments.length; pug_interp++) {'\n        );\n        this.buf.push('  ' + rest + '.push(arguments[pug_interp]);');\n        this.buf.push('}');\n      }\n      this.parentIndents++;\n      this.visit(block, mixin);\n      this.parentIndents--;\n      this.buf.push('};');\n      var mixin_end = this.buf.length;\n      this.mixins[key].instances.push({start: mixin_start, end: mixin_end});\n    }\n  },\n\n  /**\n   * Visit `tag` buffering tag markup, generating\n   * attributes, visiting the `tag`'s code and block.\n   *\n   * @param {Tag} tag\n   * @param {boolean} interpolated\n   * @api public\n   */\n\n  visitTag: function(tag, interpolated) {\n    this.indents++;\n    var name = tag.name,\n      pp = this.pp,\n      self = this;\n\n    function bufferName() {\n      if (interpolated) self.bufferExpression(tag.expr);\n      else self.buffer(name);\n    }\n\n    if (WHITE_SPACE_SENSITIVE_TAGS[tag.name] === true)\n      this.escapePrettyMode = true;\n\n    if (!this.hasCompiledTag) {\n      if (!this.hasCompiledDoctype && 'html' == name) {\n        this.visitDoctype();\n      }\n      this.hasCompiledTag = true;\n    }\n\n    // pretty print\n    if (pp && !tag.isInline) this.prettyIndent(0, true);\n    if (tag.selfClosing || (!this.xml && selfClosing[tag.name])) {\n      this.buffer('<');\n      bufferName();\n      this.visitAttributes(\n        tag.attrs,\n        this.attributeBlocks(tag.attributeBlocks)\n      );\n      if (this.terse && !tag.selfClosing) {\n        this.buffer('>');\n      } else {\n        this.buffer('/>');\n      }\n      // if it is non-empty throw an error\n      if (\n        tag.code ||\n        (tag.block &&\n          !(tag.block.type === 'Block' && tag.block.nodes.length === 0) &&\n          tag.block.nodes.some(function(tag) {\n            return tag.type !== 'Text' || !/^\\s*$/.test(tag.val);\n          }))\n      ) {\n        this.error(\n          name +\n            ' is a self closing element: <' +\n            name +\n            '/> but contains nested content.',\n          'SELF_CLOSING_CONTENT',\n          tag\n        );\n      }\n    } else {\n      // Optimize attributes buffering\n      this.buffer('<');\n      bufferName();\n      this.visitAttributes(\n        tag.attrs,\n        this.attributeBlocks(tag.attributeBlocks)\n      );\n      this.buffer('>');\n      if (tag.code) this.visitCode(tag.code);\n      this.visit(tag.block, tag);\n\n      // pretty print\n      if (\n        pp &&\n        !tag.isInline &&\n        WHITE_SPACE_SENSITIVE_TAGS[tag.name] !== true &&\n        !tagCanInline(tag)\n      )\n        this.prettyIndent(0, true);\n\n      this.buffer('</');\n      bufferName();\n      this.buffer('>');\n    }\n\n    if (WHITE_SPACE_SENSITIVE_TAGS[tag.name] === true)\n      this.escapePrettyMode = false;\n\n    this.indents--;\n  },\n\n  /**\n   * Visit InterpolatedTag.\n   *\n   * @param {InterpolatedTag} tag\n   * @api public\n   */\n\n  visitInterpolatedTag: function(tag) {\n    return this.visitTag(tag, true);\n  },\n\n  /**\n   * Visit `text` node.\n   *\n   * @param {Text} text\n   * @api public\n   */\n\n  visitText: function(text) {\n    this.buffer(text.val);\n  },\n\n  /**\n   * Visit a `comment`, only buffering when the buffer flag is set.\n   *\n   * @param {Comment} comment\n   * @api public\n   */\n\n  visitComment: function(comment) {\n    if (!comment.buffer) return;\n    if (this.pp) this.prettyIndent(1, true);\n    this.buffer('<!--' + comment.val + '-->');\n  },\n\n  /**\n   * Visit a `YieldBlock`.\n   *\n   * This is necessary since we allow compiling a file with `yield`.\n   *\n   * @param {YieldBlock} block\n   * @api public\n   */\n\n  visitYieldBlock: function(block) {},\n\n  /**\n   * Visit a `BlockComment`.\n   *\n   * @param {Comment} comment\n   * @api public\n   */\n\n  visitBlockComment: function(comment) {\n    if (!comment.buffer) return;\n    if (this.pp) this.prettyIndent(1, true);\n    this.buffer('<!--' + (comment.val || ''));\n    this.visit(comment.block, comment);\n    if (this.pp) this.prettyIndent(1, true);\n    this.buffer('-->');\n  },\n\n  /**\n   * Visit `code`, respecting buffer / escape flags.\n   * If the code is followed by a block, wrap it in\n   * a self-calling function.\n   *\n   * @param {Code} code\n   * @api public\n   */\n\n  visitCode: function(code) {\n    // Wrap code blocks with {}.\n    // we only wrap unbuffered code blocks ATM\n    // since they are usually flow control\n\n    // Buffer code\n    if (code.buffer) {\n      var val = code.val.trim();\n      val = 'null == (pug_interp = ' + val + ') ? \"\" : pug_interp';\n      if (code.mustEscape !== false)\n        val = this.runtime('escape') + '(' + val + ')';\n      this.bufferExpression(val);\n    } else {\n      this.buf.push(code.val);\n    }\n\n    // Block support\n    if (code.block) {\n      if (!code.buffer) this.buf.push('{');\n      this.visit(code.block, code);\n      if (!code.buffer) this.buf.push('}');\n    }\n  },\n\n  /**\n   * Visit `Conditional`.\n   *\n   * @param {Conditional} cond\n   * @api public\n   */\n\n  visitConditional: function(cond) {\n    var test = cond.test;\n    this.buf.push('if (' + test + ') {');\n    this.visit(cond.consequent, cond);\n    this.buf.push('}');\n    if (cond.alternate) {\n      if (cond.alternate.type === 'Conditional') {\n        this.buf.push('else');\n        this.visitConditional(cond.alternate);\n      } else {\n        this.buf.push('else {');\n        this.visit(cond.alternate, cond);\n        this.buf.push('}');\n      }\n    }\n  },\n\n  /**\n   * Visit `While`.\n   *\n   * @param {While} loop\n   * @api public\n   */\n\n  visitWhile: function(loop) {\n    var test = loop.test;\n    this.buf.push('while (' + test + ') {');\n    this.visit(loop.block, loop);\n    this.buf.push('}');\n  },\n\n  /**\n   * Visit `each` block.\n   *\n   * @param {Each} each\n   * @api public\n   */\n\n  visitEach: function(each) {\n    var indexVarName = each.key || 'pug_index' + this.eachCount;\n    this.eachCount++;\n\n    this.buf.push(\n      '' +\n        '// iterate ' +\n        each.obj +\n        '\\n' +\n        ';(function(){\\n' +\n        '  var $$obj = ' +\n        each.obj +\n        ';\\n' +\n        \"  if ('number' == typeof $$obj.length) {\"\n    );\n\n    if (each.alternate) {\n      this.buf.push('    if ($$obj.length) {');\n    }\n\n    this.buf.push(\n      '' +\n        '      for (var ' +\n        indexVarName +\n        ' = 0, $$l = $$obj.length; ' +\n        indexVarName +\n        ' < $$l; ' +\n        indexVarName +\n        '++) {\\n' +\n        '        var ' +\n        each.val +\n        ' = $$obj[' +\n        indexVarName +\n        '];'\n    );\n\n    this.visit(each.block, each);\n\n    this.buf.push('      }');\n\n    if (each.alternate) {\n      this.buf.push('    } else {');\n      this.visit(each.alternate, each);\n      this.buf.push('    }');\n    }\n\n    this.buf.push(\n      '' +\n        '  } else {\\n' +\n        '    var $$l = 0;\\n' +\n        '    for (var ' +\n        indexVarName +\n        ' in $$obj) {\\n' +\n        '      $$l++;\\n' +\n        '      var ' +\n        each.val +\n        ' = $$obj[' +\n        indexVarName +\n        '];'\n    );\n\n    this.visit(each.block, each);\n\n    this.buf.push('    }');\n    if (each.alternate) {\n      this.buf.push('    if ($$l === 0) {');\n      this.visit(each.alternate, each);\n      this.buf.push('    }');\n    }\n    this.buf.push('  }\\n}).call(this);\\n');\n  },\n\n  visitEachOf: function(each) {\n    this.buf.push(\n      '' +\n        '// iterate ' +\n        each.obj +\n        '\\n' +\n        'for (const ' +\n        each.val +\n        ' of ' +\n        each.obj +\n        ') {\\n'\n    );\n\n    this.visit(each.block, each);\n\n    this.buf.push('}\\n');\n  },\n\n  /**\n   * Visit `attrs`.\n   *\n   * @param {Array} attrs\n   * @api public\n   */\n\n  visitAttributes: function(attrs, attributeBlocks) {\n    if (attributeBlocks.length) {\n      if (attrs.length) {\n        var val = this.attrs(attrs);\n        attributeBlocks.unshift(val);\n      }\n      if (attributeBlocks.length > 1) {\n        this.bufferExpression(\n          this.runtime('attrs') +\n            '(' +\n            this.runtime('merge') +\n            '([' +\n            attributeBlocks.join(',') +\n            ']), ' +\n            stringify(this.terse) +\n            ')'\n        );\n      } else {\n        this.bufferExpression(\n          this.runtime('attrs') +\n            '(' +\n            attributeBlocks[0] +\n            ', ' +\n            stringify(this.terse) +\n            ')'\n        );\n      }\n    } else if (attrs.length) {\n      this.attrs(attrs, true);\n    }\n  },\n\n  /**\n   * Compile attributes.\n   */\n\n  attrs: function(attrs, buffer) {\n    var res = compileAttrs(attrs, {\n      terse: this.terse,\n      format: buffer ? 'html' : 'object',\n      runtime: this.runtime.bind(this),\n    });\n    if (buffer) {\n      this.bufferExpression(res);\n    }\n    return res;\n  },\n\n  /**\n   * Compile attribute blocks.\n   */\n\n  attributeBlocks: function(attributeBlocks) {\n    return (\n      attributeBlocks &&\n      attributeBlocks.slice().map(function(attrBlock) {\n        return attrBlock.val;\n      })\n    );\n  },\n};\n\nfunction tagCanInline(tag) {\n  function isInline(node) {\n    // Recurse if the node is a block\n    if (node.type === 'Block') return node.nodes.every(isInline);\n    // When there is a YieldBlock here, it is an indication that the file is\n    // expected to be included but is not. If this is the case, the block\n    // must be empty.\n    if (node.type === 'YieldBlock') return true;\n    return (node.type === 'Text' && !/\\n/.test(node.val)) || node.isInline;\n  }\n\n  return tag.block.nodes.every(isInline);\n}\n"
  },
  {
    "path": "packages/pug-code-gen/package.json",
    "content": "{\n  \"name\": \"pug-code-gen\",\n  \"version\": \"2.0.2\",\n  \"description\": \"Default code-generator for pug.  It generates HTML via a JavaScript template function.\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"constantinople\": \"^4.0.1\",\n    \"doctypes\": \"^1.1.0\",\n    \"js-stringify\": \"^1.0.2\",\n    \"pug-attrs\": \"^2.0.4\",\n    \"pug-error\": \"^1.3.3\",\n    \"pug-runtime\": \"^2.0.5\",\n    \"void-elements\": \"^3.1.0\",\n    \"with\": \"^7.0.0\"\n  },\n  \"files\": [\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-code-gen\"\n  },\n  \"author\": \"Forbes Lindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-error/LICENSE",
    "content": "Copyright (c) 2015 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-error/README.md",
    "content": "# pug-error\n\nStandard error objects for pug.  This module is intended for use by the lexer, parser, loader, linker, code-generator and any plugins.\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-error/master.svg)](https://travis-ci.org/pugjs/pug-error)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-error)](https://david-dm.org/pugjs/pug?path=packages/pug-error)\n[![NPM version](https://img.shields.io/npm/v/pug-error.svg)](https://www.npmjs.org/package/pug-error)\n\n## Installation\n\n    npm install pug-error\n\n## Usage\n\n```js\nvar error = require('pug-error');\n```\n\n### `error(code, message, options)`\n\nCreate a Pug error object.\n\n`code` is a required unique code for the error type that can be used to pinpoint a certain error.\n\n`message` is a human-readable explanation of the error.\n\n`options` can contain any of the following properties:\n\n- `filename`: the name of the file causing the error\n- `line`: the offending line\n- `column`: the offending column\n- `src`: the Pug source, if available, for pretty-printing the error context\n\nThe resulting error object is a simple Error object with additional properties given in the arguments.\n\n**Caveat:** the `message` argument is stored in `err.msg`, not `err.message`, which is occupied with a better-formatted message.\n\n```js\nvar error = require('pug-error');\n\nvar err = error('MY_CODE', 'My message', {line: 3, filename: 'myfile', src: 'foo\\nbar\\nbaz\\nbash\\nbing'});\n// { code: 'PUG:MY_CODE',\n//   msg: 'My message',\n//   line: 3,\n//   column: undefined,\n//   filename: 'myfile',\n//   src: 'foo\\nbar\\nbaz\\nbash\\nbing',\n//   message: 'myfile:3\\n    1| foo\\n    2| bar\\n  > 3| baz\\n    4| bash\\n    5| bing\\n\\nMy message' }\n\nthrow err;\n```\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-error/package.json",
    "content": "{\n  \"name\": \"pug-error\",\n  \"version\": \"1.3.3\",\n  \"description\": \"Standard error objects for pug\",\n  \"main\": \"./lib/index.js\",\n  \"types\": \"./lib/index.d.ts\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"files\": [\n    \"lib/\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-error\"\n  },\n  \"author\": \"Forbes Lindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-error/src/index.ts",
    "content": "export default function makeError(\n  code: string,\n  message: string,\n  options: {line: number; column: number; filename?: string; src?: string},\n) {\n  const line = options.line;\n  const column = options.column;\n  const filename = options.filename;\n  const src = options.src;\n  let fullMessage;\n  const location = line + (column ? ':' + column : '');\n  if (src && line >= 1 && line <= src.split('\\n').length) {\n    const lines = src.split('\\n');\n    const start = Math.max(line - 3, 0);\n    const end = Math.min(lines.length, line + 3);\n    // Error context\n    const context = lines\n      .slice(start, end)\n      .map(function(text, i) {\n        const curr = i + start + 1;\n        const preamble = (curr == line ? '  > ' : '    ') + curr + '| ';\n        let out = preamble + text;\n        if (curr === line && column > 0) {\n          out += '\\n';\n          out += Array(preamble.length + column).join('-') + '^';\n        }\n        return out;\n      })\n      .join('\\n');\n    fullMessage =\n      (filename || 'Pug') + ':' + location + '\\n' + context + '\\n\\n' + message;\n  } else {\n    fullMessage = (filename || 'Pug') + ':' + location + '\\n\\n' + message;\n  }\n  const err: any = new Error(fullMessage);\n  err.code = 'PUG:' + code;\n  err.msg = message;\n  err.line = line;\n  err.column = column;\n  err.filename = filename;\n  err.src = src;\n  err.toJSON = function() {\n    return {\n      code: this.code,\n      msg: this.msg,\n      line: this.line,\n      column: this.column,\n      filename: this.filename,\n    };\n  };\n  return err;\n}\n\n// Make this easier to use from CommonJS\nmodule.exports = makeError;\nmodule.exports.default = makeError;\n"
  },
  {
    "path": "packages/pug-error/test/index.test.js",
    "content": "'use strict';\n\nvar error = require('../');\n\ndescribe('with a source', function() {\n  test('and a filename', function() {\n    var err = error('MY_CODE', 'My message', {\n      line: 3,\n      filename: 'myfile',\n      src: 'foo\\nbar\\nbaz\\nbash\\nbing',\n    });\n    expect(err.message).toBe(\n      'myfile:3\\n    1| foo\\n    2| bar\\n  > 3| baz\\n    4| bash\\n    5| bing\\n\\nMy message'\n    );\n    expect(err.code).toBe('PUG:MY_CODE');\n    expect(err.msg).toBe('My message');\n    expect(err.line).toBe(3);\n    expect(err.filename).toBe('myfile');\n    expect(err.src).toBe('foo\\nbar\\nbaz\\nbash\\nbing');\n  });\n  test('and no filename', function() {\n    var err = error('MY_CODE', 'My message', {\n      line: 3,\n      src: 'foo\\nbar\\nbaz\\nbash\\nbing',\n    });\n    expect(err.message).toBe(\n      'Pug:3\\n    1| foo\\n    2| bar\\n  > 3| baz\\n    4| bash\\n    5| bing\\n\\nMy message'\n    );\n    expect(err.code).toBe('PUG:MY_CODE');\n    expect(err.msg).toBe('My message');\n    expect(err.line).toBe(3);\n    expect(err.filename).toBe(undefined);\n    expect(err.src).toBe('foo\\nbar\\nbaz\\nbash\\nbing');\n  });\n});\n\ndescribe('without source', function() {\n  test('and with a filename', function() {\n    var err = error('MY_CODE', 'My message', {line: 3, filename: 'myfile'});\n    expect(err.message).toBe('myfile:3\\n\\nMy message');\n    expect(err.code).toBe('PUG:MY_CODE');\n    expect(err.msg).toBe('My message');\n    expect(err.line).toBe(3);\n    expect(err.filename).toBe('myfile');\n    expect(err.src).toBe(undefined);\n  });\n  test('and with no filename', function() {\n    var err = error('MY_CODE', 'My message', {line: 3});\n    expect(err.message).toBe('Pug:3\\n\\nMy message');\n    expect(err.code).toBe('PUG:MY_CODE');\n    expect(err.msg).toBe('My message');\n    expect(err.line).toBe(3);\n    expect(err.filename).toBe(undefined);\n    expect(err.src).toBe(undefined);\n  });\n});\n\ndescribe('with column', function() {\n  test('and with a filename', function() {\n    var err = error('MY_CODE', 'My message', {\n      line: 3,\n      column: 2,\n      filename: 'myfile',\n      src: 'foo\\nbar\\nbaz\\nbash\\nbing',\n    });\n    expect(err.message).toBe(\n      'myfile:3:2\\n    1| foo\\n    2| bar\\n  > 3| baz\\n--------^\\n    4| bash\\n    5| bing\\n\\nMy message'\n    );\n    expect(err.code).toBe('PUG:MY_CODE');\n    expect(err.msg).toBe('My message');\n    expect(err.line).toBe(3);\n    expect(err.filename).toBe('myfile');\n    expect(err.src).toBe('foo\\nbar\\nbaz\\nbash\\nbing');\n  });\n  test('and with no filename', function() {\n    var err = error('MY_CODE', 'My message', {line: 3, column: 1});\n    expect(err.message).toBe('Pug:3:1\\n\\nMy message');\n    expect(err.code).toBe('PUG:MY_CODE');\n    expect(err.msg).toBe('My message');\n    expect(err.line).toBe(3);\n    expect(err.filename).toBe(undefined);\n    expect(err.src).toBe(undefined);\n  });\n});\n\ndescribe('invalid information', function() {\n  test('negative column', function() {\n    var err = error('MY_CODE', 'My message', {\n      line: 3,\n      column: -1,\n      src: 'foo\\nbar\\nbaz\\nbash\\nbing',\n    });\n    expect(err.message).toBe(\n      'Pug:3:-1\\n    1| foo\\n    2| bar\\n  > 3| baz\\n    4| bash\\n    5| bing\\n\\nMy message'\n    );\n    expect(err.code).toBe('PUG:MY_CODE');\n    expect(err.msg).toBe('My message');\n    expect(err.line).toBe(3);\n    expect(err.filename).toBe(undefined);\n    expect(err.src).toBe('foo\\nbar\\nbaz\\nbash\\nbing');\n  });\n  test('out of range line', function() {\n    check(0);\n    check(6);\n\n    function check(line) {\n      var err = error('MY_CODE', 'My message', {\n        line: line,\n        src: 'foo\\nbar\\nbaz\\nbash\\nbing',\n      });\n      expect(err.message).toBe('Pug:' + line + '\\n\\nMy message');\n      expect(err.code).toBe('PUG:MY_CODE');\n      expect(err.msg).toBe('My message');\n      expect(err.line).toBe(line);\n      expect(err.filename).toBe(undefined);\n      expect(err.src).toBe('foo\\nbar\\nbaz\\nbash\\nbing');\n    }\n  });\n});\n"
  },
  {
    "path": "packages/pug-error/tsconfig.json",
    "content": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"rootDir\": \"src\",\n    \"outDir\": \"lib\",\n    \"tsBuildInfoFile\": \"lib/tsconfig.tsbuildinfo\",\n  },\n  \"references\": [],\n}\n"
  },
  {
    "path": "packages/pug-filters/CHANGELOG.md",
    "content": "# Change log\n\n## 1.2.4 / 2016-08-23\n\n- Update to `pug-walk@1.0.0`\n\n## 1.2.3 / 2016-07-18\n\n- Fix includes using custom filters\n\n## 1.2.2 / 2016-06-06\n\n- Update to `jstransformer@1.0.0`\n\n## 1.2.1 / 2016-04-27\n\n- Apply filters to included files as well\n\n## 1.2.0 / 2016-04-01\n\n- Add support for specifying per-filter options\n\n## 1.1.1 / 2015-12-23\n\n- Update UglifyJS to 2.6.2\n- Rename to Pug\n\n## 1.1.0 / 2015-11-14\n\n- Add support for filtered includes\n\n## 1.0.0 / 2015-10-08\n\n- Initial stable release\n"
  },
  {
    "path": "packages/pug-filters/LICENSE",
    "content": "Copyright (c) 2015 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-filters/README.md",
    "content": "# pug-filters\n\nCode for processing filters in pug templates\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-filters/master.svg)](https://travis-ci.org/pugjs/pug-filters)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-filters)](https://david-dm.org/pugjs/pug?path=packages/pug-filters)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-filters)](https://david-dm.org/pugjs/pug?path=packages/pug-filters&type=dev)\n[![NPM version](https://img.shields.io/npm/v/pug-filters.svg)](https://www.npmjs.org/package/pug-filters)\n\n## Installation\n\n    npm install pug-filters\n\n## Usage\n\n```\nvar filters = require('pug-filters');\n```\n\n### `filters.handleFilters(ast, filters)`\n\nRenders all `Filter` nodes in a Pug AST (`ast`), using user-specified filters (`filters`) or a JSTransformer.\n\n### `filters.runFilter(name, str[, options[, currentDirectory]])`\n\nInvokes filter through `jstransformer`.\n\nThis is internally used in `filters.handleFilters`, and is a lower-level interface exclusively for invoking JSTransformer-based filters.\n\n`name` represents the name of the JSTransformer.\n\n`str` represents the string to render.\n\n`currentDirectory` is used when attempting to `require` the transformer module.\n\n`options` may contain the following properties:\n\n- `minify` (boolean): whether or not to attempt minifying the result from the transformer. If minification fails, the original result is returned.\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-filters/index.js",
    "content": "'use strict';\n\nexports.runFilter = require('./lib/run-filter');\nexports.handleFilters = require('./lib/handle-filters');\n"
  },
  {
    "path": "packages/pug-filters/lib/handle-filters.js",
    "content": "'use strict';\n\nvar dirname = require('path').dirname;\nvar constantinople = require('constantinople');\nvar walk = require('pug-walk');\nvar error = require('pug-error');\nvar runFilter = require('./run-filter');\n\nmodule.exports = handleFilters;\nfunction handleFilters(ast, filters, options, filterAliases) {\n  options = options || {};\n  walk(\n    ast,\n    function(node) {\n      var dir = node.filename ? dirname(node.filename) : null;\n      if (node.type === 'Filter') {\n        handleNestedFilters(node, filters, options, filterAliases);\n        var text = getBodyAsText(node);\n        var attrs = getAttributes(node, options);\n        attrs.filename = node.filename;\n        node.type = 'Text';\n        node.val = filterWithFallback(node, text, attrs);\n      } else if (node.type === 'RawInclude' && node.filters.length) {\n        var firstFilter = node.filters.pop();\n        var attrs = getAttributes(firstFilter, options);\n        var filename = (attrs.filename = node.file.fullPath);\n        node.type = 'Text';\n        node.val = filterFileWithFallback(\n          firstFilter,\n          filename,\n          node.file,\n          attrs\n        );\n        node.filters\n          .slice()\n          .reverse()\n          .forEach(function(filter) {\n            var attrs = getAttributes(filter, options);\n            attrs.filename = filename;\n            node.val = filterWithFallback(filter, node.val, attrs);\n          });\n        node.filters = undefined;\n        node.file = undefined;\n      }\n\n      function filterWithFallback(filter, text, attrs, funcName) {\n        try {\n          var filterName = getFilterName(filter);\n          if (filters && filters[filterName]) {\n            return filters[filterName](text, attrs);\n          } else {\n            return runFilter(filterName, text, attrs, dir, funcName);\n          }\n        } catch (ex) {\n          if (ex.code === 'UNKNOWN_FILTER') {\n            throw error(ex.code, ex.message, filter);\n          }\n          throw ex;\n        }\n      }\n\n      function filterFileWithFallback(filter, filename, file, attrs) {\n        var filterName = getFilterName(filter);\n        if (filters && filters[filterName]) {\n          if (filters[filterName].renderBuffer) {\n            return filters[filterName].renderBuffer(file.raw, attrs);\n          } else {\n            return filters[filterName](file.str, attrs);\n          }\n        } else {\n          return filterWithFallback(filter, filename, attrs, 'renderFile');\n        }\n      }\n    },\n    {includeDependencies: true}\n  );\n  function getFilterName(filter) {\n    var filterName = filter.name;\n    if (filterAliases && filterAliases[filterName]) {\n      filterName = filterAliases[filterName];\n      if (filterAliases[filterName]) {\n        throw error(\n          'FILTER_ALISE_CHAIN',\n          'The filter \"' +\n            filter.name +\n            '\" is an alias for \"' +\n            filterName +\n            '\", which is an alias for \"' +\n            filterAliases[filterName] +\n            '\".  Pug does not support chains of filter aliases.',\n          filter\n        );\n      }\n    }\n    return filterName;\n  }\n  return ast;\n}\n\nfunction handleNestedFilters(node, filters, options, filterAliases) {\n  if (node.block.nodes[0] && node.block.nodes[0].type === 'Filter') {\n    node.block.nodes[0] = handleFilters(\n      node.block,\n      filters,\n      options,\n      filterAliases\n    ).nodes[0];\n  }\n}\n\nfunction getBodyAsText(node) {\n  return node.block.nodes\n    .map(function(node) {\n      return node.val;\n    })\n    .join('');\n}\n\nfunction getAttributes(node, options) {\n  var attrs = {};\n  node.attrs.forEach(function(attr) {\n    try {\n      attrs[attr.name] =\n        attr.val === true ? true : constantinople.toConstant(attr.val);\n    } catch (ex) {\n      if (/not constant/.test(ex.message)) {\n        throw error(\n          'FILTER_OPTION_NOT_CONSTANT',\n          ex.message +\n            ' All filters are rendered compile-time so filter options must be constants.',\n          node\n        );\n      }\n      throw ex;\n    }\n  });\n  var opts = options[node.name] || {};\n  Object.keys(opts).forEach(function(opt) {\n    if (!attrs.hasOwnProperty(opt)) {\n      attrs[opt] = opts[opt];\n    }\n  });\n  return attrs;\n}\n"
  },
  {
    "path": "packages/pug-filters/lib/run-filter.js",
    "content": "'use strict';\n\nvar jstransformer = require('jstransformer');\nvar resolve = require('resolve');\n\nmodule.exports = filter;\n\nfunction getMinifyTransformerName(outputFormat) {\n  switch (outputFormat) {\n    case 'js':\n      return 'uglify-js';\n    case 'css':\n      return 'clean-css';\n  }\n}\n\nfunction filter(name, str, options, currentDirectory, funcName) {\n  funcName = funcName || 'render';\n  var trPath;\n  try {\n    try {\n      trPath = resolve.sync('jstransformer-' + name, {\n        basedir: currentDirectory || process.cwd(),\n      });\n    } catch (ex) {\n      trPath = require.resolve('jstransformer-' + name);\n    }\n  } catch (ex) {\n    var err = new Error('unknown filter \":' + name + '\"');\n    err.code = 'UNKNOWN_FILTER';\n    throw err;\n  }\n  var tr = jstransformer(require(trPath));\n  // TODO: we may want to add a way for people to separately specify \"locals\"\n  var result = tr[funcName](str, options, options).body;\n  if (options && options.minify) {\n    var minifyTranformer = getMinifyTransformerName(tr.outputFormat);\n    if (minifyTranformer) {\n      try {\n        result = filter(minifyTranformer, result, null, currentDirectory);\n      } catch (ex) {\n        // better to fail to minify than output nothing\n      }\n    }\n  }\n  return result;\n}\n"
  },
  {
    "path": "packages/pug-filters/package.json",
    "content": "{\n  \"name\": \"pug-filters\",\n  \"version\": \"3.1.1\",\n  \"description\": \"Code for processing filters in pug templates\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"constantinople\": \"^4.0.1\",\n    \"jstransformer\": \"1.0.0\",\n    \"pug-error\": \"^1.3.3\",\n    \"pug-walk\": \"^1.1.8\",\n    \"resolve\": \"^1.15.1\"\n  },\n  \"devDependencies\": {\n    \"jstransformer-cdata\": \"^1.0.0\",\n    \"jstransformer-coffee-script\": \"^1.1.1\",\n    \"jstransformer-less\": \"^2.3.0\",\n    \"jstransformer-markdown-it\": \"^2.0.0\",\n    \"jstransformer-stylus\": \"^1.5.0\",\n    \"jstransformer-uglify-js\": \"^1.2.0\",\n    \"pug-lexer\": \"^4.1.0\",\n    \"pug-load\": \"^2.0.12\",\n    \"pug-parser\": \"^5.0.1\"\n  },\n  \"files\": [\n    \"lib/handle-filters.js\",\n    \"lib/run-filter.js\",\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-filters\"\n  },\n  \"author\": \"Forbes Lindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-filters/test/__snapshots__/filter-aliases.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`filters can be aliased 1`] = `\nObject {\n  \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"function myFunc(foo) {\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"  return foo;\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                  \"line\": 3,\n                  \"name\": \"minify\",\n                  \"type\": \"Text\",\n                  \"val\": \"function myFunc(n) {\n  return n;\n}\n\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n            \"line\": 3,\n            \"name\": \"cdata\",\n            \"type\": \"Text\",\n            \"val\": \"<![CDATA[function myFunc(n){return n}]]>\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`options are applied before aliases 1`] = `\nObject {\n  \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"function myFunc(foo) {\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"  return foo;\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                  \"line\": 3,\n                  \"name\": \"minify\",\n                  \"type\": \"Text\",\n                  \"val\": \"function myFunc(n) {\n  return n;\n}\n\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n            \"line\": 3,\n            \"name\": \"cdata\",\n            \"type\": \"Text\",\n            \"val\": \"<![CDATA[function myFunc(n) {\n    return n;\n}]]>\",\n          },\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                    \"line\": 7,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 8,\n                        \"type\": \"Text\",\n                        \"val\": \"function myFunc(foo) {\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 9,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 9,\n                        \"type\": \"Text\",\n                        \"val\": \"  return foo;\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 10,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                        \"line\": 10,\n                        \"type\": \"Text\",\n                        \"val\": \"}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n                  \"line\": 7,\n                  \"name\": \"uglify-js\",\n                  \"type\": \"Text\",\n                  \"val\": \"function myFunc(n) {\n  return n;\n}\n\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n            \"line\": 7,\n            \"name\": \"cdata\",\n            \"type\": \"Text\",\n            \"val\": \"<![CDATA[function myFunc(n){return n}]]>\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`we do not support chains of aliases 1`] = `\nObject {\n  \"code\": \"PUG:FILTER_ALISE_CHAIN\",\n  \"message\": \"<basedir>/packages/pug-filters/test/filter-aliases.test.js:3:9\n\nThe filter \\\\\"minify-js\\\\\" is an alias for \\\\\"minify\\\\\", which is an alias for \\\\\"uglify-js\\\\\".  Pug does not support chains of filter aliases.\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-filters/test/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`cases/filters.cdata.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Code\\\\\",\n      \\\\\"val\\\\\": \\\\\"users = [{ name: 'tobi', age: 2 }]\\\\\",\n      \\\\\"buffer\\\\\": false,\n      \\\\\"mustEscape\\\\\": false,\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 2,\n      \\\\\"filename\\\\\": \\\\\"filters.cdata.tokens.json\\\\\"\n    },\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"fb:users\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Each\\\\\",\n            \\\\\"obj\\\\\": \\\\\"users\\\\\",\n            \\\\\"val\\\\\": \\\\\"user\\\\\",\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n                  \\\\\"name\\\\\": \\\\\"fb:user\\\\\",\n                  \\\\\"selfClosing\\\\\": false,\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"name\\\\\": \\\\\"cdata\\\\\",\n                        \\\\\"block\\\\\": {\n                          \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                          \\\\\"nodes\\\\\": [\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"#{user.name}\\\\\",\n                              \\\\\"line\\\\\": 8\n                            }\n                          ]\n                        },\n                        \\\\\"attrs\\\\\": [],\n                        \\\\\"line\\\\\": 7,\n                        \\\\\"filename\\\\\": \\\\\"filters.cdata.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"<![CDATA[#{user.name}]]>\\\\\"\n                      }\n                    ]\n                  },\n                  \\\\\"attrs\\\\\": [\n                    {\n                      \\\\\"name\\\\\": \\\\\"age\\\\\",\n                      \\\\\"val\\\\\": \\\\\"user.age\\\\\",\n                      \\\\\"mustEscape\\\\\": true\n                    }\n                  ],\n                  \\\\\"attributeBlocks\\\\\": [],\n                  \\\\\"isInline\\\\\": false,\n                  \\\\\"line\\\\\": 6,\n                  \\\\\"filename\\\\\": \\\\\"filters.cdata.tokens.json\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 6,\n              \\\\\"filename\\\\\": \\\\\"filters.cdata.tokens.json\\\\\"\n            },\n            \\\\\"line\\\\\": 5,\n            \\\\\"filename\\\\\": \\\\\"filters.cdata.tokens.json\\\\\"\n          }\n        ]\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 4,\n      \\\\\"filename\\\\\": \\\\\"filters.cdata.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.cdata.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.coffeescript.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"script\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Text\\\\\",\n            \\\\\"name\\\\\": \\\\\"coffee-script\\\\\",\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"val\\\\\": \\\\\"regexp = /\\\\\\\\\\\\\\\\n/\\\\\",\n                  \\\\\"line\\\\\": 3\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.coffeescript.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.coffeescript.tokens.json\\\\\",\n            \\\\\"val\\\\\": \\\\\"(function() {\\\\\\\\n  var regexp;\\\\\\\\n\\\\\\\\n  regexp = /\\\\\\\\\\\\\\\\n/;\\\\\\\\n\\\\\\\\n}).call(this);\\\\\\\\n\\\\\"\n          },\n          {\n            \\\\\"type\\\\\": \\\\\"Text\\\\\",\n            \\\\\"name\\\\\": \\\\\"coffee-script\\\\\",\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"val\\\\\": \\\\\"math =\\\\\",\n                  \\\\\"line\\\\\": 5\n                },\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                  \\\\\"line\\\\\": 6\n                },\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"val\\\\\": \\\\\"  square: (value) -> value * value\\\\\",\n                  \\\\\"line\\\\\": 6\n                }\n              ],\n              \\\\\"line\\\\\": 4,\n              \\\\\"filename\\\\\": \\\\\"filters.coffeescript.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [\n              {\n                \\\\\"name\\\\\": \\\\\"minify\\\\\",\n                \\\\\"val\\\\\": \\\\\"true\\\\\",\n                \\\\\"mustEscape\\\\\": true\n              }\n            ],\n            \\\\\"line\\\\\": 4,\n            \\\\\"filename\\\\\": \\\\\"filters.coffeescript.tokens.json\\\\\",\n            \\\\\"val\\\\\": \\\\\"(function(){}).call(this);\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.coffeescript.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [\n        {\n          \\\\\"name\\\\\": \\\\\"type\\\\\",\n          \\\\\"val\\\\\": \\\\\"'text/javascript'\\\\\",\n          \\\\\"mustEscape\\\\\": true\n        }\n      ],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.coffeescript.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.coffeescript.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.custom.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"html\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n            \\\\\"name\\\\\": \\\\\"body\\\\\",\n            \\\\\"selfClosing\\\\\": false,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"name\\\\\": \\\\\"custom\\\\\",\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"Line 1\\\\\",\n                        \\\\\"line\\\\\": 4\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                        \\\\\"line\\\\\": 5\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"Line 2\\\\\",\n                        \\\\\"line\\\\\": 5\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                        \\\\\"line\\\\\": 6\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"\\\\\",\n                        \\\\\"line\\\\\": 6\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                        \\\\\"line\\\\\": 7\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"Line 4\\\\\",\n                        \\\\\"line\\\\\": 7\n                      }\n                    ],\n                    \\\\\"line\\\\\": 3,\n                    \\\\\"filename\\\\\": \\\\\"filters.custom.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [\n                    {\n                      \\\\\"name\\\\\": \\\\\"opt\\\\\",\n                      \\\\\"val\\\\\": \\\\\"'val'\\\\\",\n                      \\\\\"mustEscape\\\\\": true\n                    },\n                    {\n                      \\\\\"name\\\\\": \\\\\"num\\\\\",\n                      \\\\\"val\\\\\": \\\\\"2\\\\\",\n                      \\\\\"mustEscape\\\\\": true\n                    }\n                  ],\n                  \\\\\"line\\\\\": 3,\n                  \\\\\"filename\\\\\": \\\\\"filters.custom.tokens.json\\\\\",\n                  \\\\\"val\\\\\": \\\\\"BEGINLine 1\\\\\\\\nLine 2\\\\\\\\n\\\\\\\\nLine 4END\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.custom.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"attributeBlocks\\\\\": [],\n            \\\\\"isInline\\\\\": false,\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.custom.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.custom.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.custom.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.custom.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.include.custom.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"html\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n            \\\\\"name\\\\\": \\\\\"body\\\\\",\n            \\\\\"selfClosing\\\\\": false,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n                  \\\\\"name\\\\\": \\\\\"pre\\\\\",\n                  \\\\\"selfClosing\\\\\": false,\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"line\\\\\": 4,\n                        \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"BEGINhtml\\\\\\\\n  body\\\\\\\\n    pre\\\\\\\\n      include:custom(opt='val' num=2) filters.include.custom.pug\\\\\\\\nEND\\\\\"\n                      }\n                    ],\n                    \\\\\"line\\\\\": 3,\n                    \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [],\n                  \\\\\"attributeBlocks\\\\\": [],\n                  \\\\\"isInline\\\\\": false,\n                  \\\\\"line\\\\\": 3,\n                  \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"attributeBlocks\\\\\": [],\n            \\\\\"isInline\\\\\": false,\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.include.custom.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.include.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"html\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n            \\\\\"name\\\\\": \\\\\"body\\\\\",\n            \\\\\"selfClosing\\\\\": false,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"line\\\\\": 3,\n                  \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\",\n                  \\\\\"val\\\\\": \\\\\"<p>Just <em>some</em> markdown <strong>tests</strong>.</p>\\\\\\\\n<p>With new line.</p>\\\\\\\\n\\\\\"\n                },\n                {\n                  \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n                  \\\\\"name\\\\\": \\\\\"script\\\\\",\n                  \\\\\"selfClosing\\\\\": false,\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"line\\\\\": 5,\n                        \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"(function(){}).call(this);\\\\\"\n                      }\n                    ],\n                    \\\\\"line\\\\\": 4,\n                    \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [],\n                  \\\\\"attributeBlocks\\\\\": [],\n                  \\\\\"isInline\\\\\": false,\n                  \\\\\"line\\\\\": 4,\n                  \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n                },\n                {\n                  \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n                  \\\\\"name\\\\\": \\\\\"script\\\\\",\n                  \\\\\"selfClosing\\\\\": false,\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"line\\\\\": 7,\n                        \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"<![CDATA[(function() {\\\\\\\\n  var math;\\\\\\\\n\\\\\\\\n  math = {\\\\\\\\n    square: function(value) {\\\\\\\\n      return value * value;\\\\\\\\n    }\\\\\\\\n  };\\\\\\\\n\\\\\\\\n}).call(this);\\\\\\\\n]]>\\\\\"\n                      }\n                    ],\n                    \\\\\"line\\\\\": 6,\n                    \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [],\n                  \\\\\"attributeBlocks\\\\\": [],\n                  \\\\\"isInline\\\\\": false,\n                  \\\\\"line\\\\\": 6,\n                  \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"attributeBlocks\\\\\": [],\n            \\\\\"isInline\\\\\": false,\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.include.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.inline.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"p\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Text\\\\\",\n            \\\\\"val\\\\\": \\\\\"before \\\\\",\n            \\\\\"line\\\\\": 1,\n            \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\"\n          },\n          {\n            \\\\\"type\\\\\": \\\\\"Text\\\\\",\n            \\\\\"name\\\\\": \\\\\"cdata\\\\\",\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"val\\\\\": \\\\\"inside\\\\\",\n                  \\\\\"line\\\\\": 1,\n                  \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 1,\n              \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"line\\\\\": 1,\n            \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\",\n            \\\\\"val\\\\\": \\\\\"<![CDATA[inside]]>\\\\\"\n          },\n          {\n            \\\\\"type\\\\\": \\\\\"Text\\\\\",\n            \\\\\"val\\\\\": \\\\\" after\\\\\",\n            \\\\\"line\\\\\": 1,\n            \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.inline.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.less.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"html\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n            \\\\\"name\\\\\": \\\\\"head\\\\\",\n            \\\\\"selfClosing\\\\\": false,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n                  \\\\\"name\\\\\": \\\\\"style\\\\\",\n                  \\\\\"selfClosing\\\\\": false,\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"name\\\\\": \\\\\"less\\\\\",\n                        \\\\\"block\\\\\": {\n                          \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                          \\\\\"nodes\\\\\": [\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"@pad: 15px;\\\\\",\n                              \\\\\"line\\\\\": 5\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                              \\\\\"line\\\\\": 6\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"body {\\\\\",\n                              \\\\\"line\\\\\": 6\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                              \\\\\"line\\\\\": 7\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"  padding: @pad;\\\\\",\n                              \\\\\"line\\\\\": 7\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                              \\\\\"line\\\\\": 8\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"}\\\\\",\n                              \\\\\"line\\\\\": 8\n                            }\n                          ],\n                          \\\\\"line\\\\\": 4,\n                          \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n                        },\n                        \\\\\"attrs\\\\\": [],\n                        \\\\\"line\\\\\": 4,\n                        \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"body {\\\\\\\\n  padding: 15px;\\\\\\\\n}\\\\\\\\n\\\\\"\n                      }\n                    ],\n                    \\\\\"line\\\\\": 3,\n                    \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [\n                    {\n                      \\\\\"name\\\\\": \\\\\"type\\\\\",\n                      \\\\\"val\\\\\": \\\\\"\\\\\\\\\\\\\"text/css\\\\\\\\\\\\\"\\\\\",\n                      \\\\\"mustEscape\\\\\": true\n                    }\n                  ],\n                  \\\\\"attributeBlocks\\\\\": [],\n                  \\\\\"isInline\\\\\": false,\n                  \\\\\"line\\\\\": 3,\n                  \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"attributeBlocks\\\\\": [],\n            \\\\\"isInline\\\\\": false,\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.less.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.markdown.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"html\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n            \\\\\"name\\\\\": \\\\\"body\\\\\",\n            \\\\\"selfClosing\\\\\": false,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"name\\\\\": \\\\\"markdown-it\\\\\",\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"This is _some_ awesome **markdown**\\\\\",\n                        \\\\\"line\\\\\": 4\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                        \\\\\"line\\\\\": 5\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"whoop.\\\\\",\n                        \\\\\"line\\\\\": 5\n                      }\n                    ],\n                    \\\\\"line\\\\\": 3,\n                    \\\\\"filename\\\\\": \\\\\"filters.markdown.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [],\n                  \\\\\"line\\\\\": 3,\n                  \\\\\"filename\\\\\": \\\\\"filters.markdown.tokens.json\\\\\",\n                  \\\\\"val\\\\\": \\\\\"<p>This is <em>some</em> awesome <strong>markdown</strong>\\\\\\\\nwhoop.</p>\\\\\\\\n\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.markdown.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"attributeBlocks\\\\\": [],\n            \\\\\"isInline\\\\\": false,\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.markdown.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.markdown.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.markdown.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.markdown.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.nested.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"script\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Text\\\\\",\n            \\\\\"name\\\\\": \\\\\"cdata\\\\\",\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"name\\\\\": \\\\\"uglify-js\\\\\",\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"(function() {\\\\\",\n                        \\\\\"line\\\\\": 3\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                        \\\\\"line\\\\\": 4\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"  console.log('test')\\\\\",\n                        \\\\\"line\\\\\": 4\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                        \\\\\"line\\\\\": 5\n                      },\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"val\\\\\": \\\\\"})()\\\\\",\n                        \\\\\"line\\\\\": 5\n                      }\n                    ],\n                    \\\\\"line\\\\\": 2,\n                    \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [],\n                  \\\\\"line\\\\\": 2,\n                  \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\",\n                  \\\\\"val\\\\\": \\\\\"!function(){console.log(\\\\\\\\\\\\\"test\\\\\\\\\\\\\")}();\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\",\n            \\\\\"val\\\\\": \\\\\"<![CDATA[!function(){console.log(\\\\\\\\\\\\\"test\\\\\\\\\\\\\")}();]]>\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n    },\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"script\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Text\\\\\",\n            \\\\\"name\\\\\": \\\\\"cdata\\\\\",\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                  \\\\\"name\\\\\": \\\\\"uglify-js\\\\\",\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"name\\\\\": \\\\\"coffee-script\\\\\",\n                        \\\\\"block\\\\\": {\n                          \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                          \\\\\"nodes\\\\\": [\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"(->\\\\\",\n                              \\\\\"line\\\\\": 8\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                              \\\\\"line\\\\\": 9\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"  console.log 'test'\\\\\",\n                              \\\\\"line\\\\\": 9\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                              \\\\\"line\\\\\": 10\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\")()\\\\\",\n                              \\\\\"line\\\\\": 10\n                            }\n                          ],\n                          \\\\\"line\\\\\": 7,\n                          \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n                        },\n                        \\\\\"attrs\\\\\": [],\n                        \\\\\"line\\\\\": 7,\n                        \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"(function() {\\\\\\\\n  (function() {\\\\\\\\n    return console.log('test');\\\\\\\\n  })();\\\\\\\\n\\\\\\\\n}).call(this);\\\\\\\\n\\\\\"\n                      }\n                    ],\n                    \\\\\"line\\\\\": 7,\n                    \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [],\n                  \\\\\"line\\\\\": 7,\n                  \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\",\n                  \\\\\"val\\\\\": \\\\\"(function(){!function(){console.log(\\\\\\\\\\\\\"test\\\\\\\\\\\\\")}()}).call(this);\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 7,\n              \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"line\\\\\": 7,\n            \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\",\n            \\\\\"val\\\\\": \\\\\"<![CDATA[(function(){!function(){console.log(\\\\\\\\\\\\\"test\\\\\\\\\\\\\")}()}).call(this);]]>\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 6,\n        \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 6,\n      \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.nested.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters.stylus.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"html\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n            \\\\\"name\\\\\": \\\\\"head\\\\\",\n            \\\\\"selfClosing\\\\\": false,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n                  \\\\\"name\\\\\": \\\\\"style\\\\\",\n                  \\\\\"selfClosing\\\\\": false,\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"name\\\\\": \\\\\"stylus\\\\\",\n                        \\\\\"block\\\\\": {\n                          \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                          \\\\\"nodes\\\\\": [\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"body\\\\\",\n                              \\\\\"line\\\\\": 5\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"\\\\\\\\n\\\\\",\n                              \\\\\"line\\\\\": 6\n                            },\n                            {\n                              \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                              \\\\\"val\\\\\": \\\\\"  padding: 50px\\\\\",\n                              \\\\\"line\\\\\": 6\n                            }\n                          ],\n                          \\\\\"line\\\\\": 4,\n                          \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n                        },\n                        \\\\\"attrs\\\\\": [],\n                        \\\\\"line\\\\\": 4,\n                        \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"body {\\\\\\\\n  padding: 50px;\\\\\\\\n}\\\\\\\\n\\\\\"\n                      }\n                    ],\n                    \\\\\"line\\\\\": 3,\n                    \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [\n                    {\n                      \\\\\"name\\\\\": \\\\\"type\\\\\",\n                      \\\\\"val\\\\\": \\\\\"\\\\\\\\\\\\\"text/css\\\\\\\\\\\\\"\\\\\",\n                      \\\\\"mustEscape\\\\\": true\n                    }\n                  ],\n                  \\\\\"attributeBlocks\\\\\": [],\n                  \\\\\"isInline\\\\\": false,\n                  \\\\\"line\\\\\": 3,\n                  \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 2,\n              \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"attributeBlocks\\\\\": [],\n            \\\\\"isInline\\\\\": false,\n            \\\\\"line\\\\\": 2,\n            \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n          },\n          {\n            \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n            \\\\\"name\\\\\": \\\\\"body\\\\\",\n            \\\\\"selfClosing\\\\\": false,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [],\n              \\\\\"line\\\\\": 7,\n              \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n            },\n            \\\\\"attrs\\\\\": [],\n            \\\\\"attributeBlocks\\\\\": [],\n            \\\\\"isInline\\\\\": false,\n            \\\\\"line\\\\\": 7,\n            \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 1,\n        \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters.stylus.tokens.json\\\\\"\n}\"\n`;\n\nexports[`cases/filters-empty.input.json 1`] = `\n\"{\n  \\\\\"type\\\\\": \\\\\"Block\\\\\",\n  \\\\\"nodes\\\\\": [\n    {\n      \\\\\"type\\\\\": \\\\\"Code\\\\\",\n      \\\\\"val\\\\\": \\\\\"var users = [{ name: 'tobi', age: 2 }]\\\\\",\n      \\\\\"buffer\\\\\": false,\n      \\\\\"mustEscape\\\\\": false,\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 1,\n      \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n    },\n    {\n      \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n      \\\\\"name\\\\\": \\\\\"fb:users\\\\\",\n      \\\\\"selfClosing\\\\\": false,\n      \\\\\"block\\\\\": {\n        \\\\\"type\\\\\": \\\\\"Block\\\\\",\n        \\\\\"nodes\\\\\": [\n          {\n            \\\\\"type\\\\\": \\\\\"Each\\\\\",\n            \\\\\"obj\\\\\": \\\\\"users\\\\\",\n            \\\\\"val\\\\\": \\\\\"user\\\\\",\n            \\\\\"key\\\\\": null,\n            \\\\\"block\\\\\": {\n              \\\\\"type\\\\\": \\\\\"Block\\\\\",\n              \\\\\"nodes\\\\\": [\n                {\n                  \\\\\"type\\\\\": \\\\\"Tag\\\\\",\n                  \\\\\"name\\\\\": \\\\\"fb:user\\\\\",\n                  \\\\\"selfClosing\\\\\": false,\n                  \\\\\"block\\\\\": {\n                    \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                    \\\\\"nodes\\\\\": [\n                      {\n                        \\\\\"type\\\\\": \\\\\"Text\\\\\",\n                        \\\\\"name\\\\\": \\\\\"cdata\\\\\",\n                        \\\\\"block\\\\\": {\n                          \\\\\"type\\\\\": \\\\\"Block\\\\\",\n                          \\\\\"nodes\\\\\": [],\n                          \\\\\"line\\\\\": 6,\n                          \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n                        },\n                        \\\\\"attrs\\\\\": [],\n                        \\\\\"line\\\\\": 6,\n                        \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\",\n                        \\\\\"val\\\\\": \\\\\"<![CDATA[]]>\\\\\"\n                      }\n                    ],\n                    \\\\\"line\\\\\": 5,\n                    \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n                  },\n                  \\\\\"attrs\\\\\": [\n                    {\n                      \\\\\"name\\\\\": \\\\\"age\\\\\",\n                      \\\\\"val\\\\\": \\\\\"user.age\\\\\",\n                      \\\\\"mustEscape\\\\\": true\n                    }\n                  ],\n                  \\\\\"attributeBlocks\\\\\": [],\n                  \\\\\"isInline\\\\\": false,\n                  \\\\\"line\\\\\": 5,\n                  \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n                }\n              ],\n              \\\\\"line\\\\\": 5,\n              \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n            },\n            \\\\\"line\\\\\": 4,\n            \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n          }\n        ],\n        \\\\\"line\\\\\": 3,\n        \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n      },\n      \\\\\"attrs\\\\\": [],\n      \\\\\"attributeBlocks\\\\\": [],\n      \\\\\"isInline\\\\\": false,\n      \\\\\"line\\\\\": 3,\n      \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n    }\n  ],\n  \\\\\"line\\\\\": 0,\n  \\\\\"filename\\\\\": \\\\\"filters-empty.tokens.json\\\\\"\n}\"\n`;\n\nexports[`errors/dynamic-option.input.json 1`] = `\nObject {\n  \"code\": \"PUG:FILTER_OPTION_NOT_CONSTANT\",\n  \"line\": 2,\n  \"msg\": \"\\\\\"opt\\\\\" is not constant. All filters are rendered compile-time so filter options must be constants.\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-filters/test/__snapshots__/per-filter-options-applied-to-nested-filters.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`per filter options are applied, even to nested filters 1`] = `\nObject {\n  \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"function myFunc(foo) {\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"  return foo;\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n                  \"line\": 3,\n                  \"name\": \"uglify-js\",\n                  \"type\": \"Text\",\n                  \"val\": \"function myFunc(n) {\n  return n;\n}\n\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n            \"line\": 3,\n            \"name\": \"cdata\",\n            \"type\": \"Text\",\n            \"val\": \"<![CDATA[function myFunc(n) {\n    return n;\n}]]>\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"<basedir>/packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-filters/test/cases/filters-empty.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Code\",\n      \"val\": \"var users = [{ name: 'tobi', age: 2 }]\",\n      \"buffer\": false,\n      \"mustEscape\": false,\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters-empty.tokens.json\"\n    },\n    {\n      \"type\": \"Tag\",\n      \"name\": \"fb:users\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Each\",\n            \"obj\": \"users\",\n            \"val\": \"user\",\n            \"key\": null,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"fb:user\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Filter\",\n                        \"name\": \"cdata\",\n                        \"block\": {\n                          \"type\": \"Block\",\n                          \"nodes\": [],\n                          \"line\": 6,\n                          \"filename\": \"filters-empty.tokens.json\"\n                        },\n                        \"attrs\": [],\n                        \"line\": 6,\n                        \"filename\": \"filters-empty.tokens.json\"\n                      }\n                    ],\n                    \"line\": 5,\n                    \"filename\": \"filters-empty.tokens.json\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"age\",\n                      \"val\": \"user.age\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"filename\": \"filters-empty.tokens.json\"\n                }\n              ],\n              \"line\": 5,\n              \"filename\": \"filters-empty.tokens.json\"\n            },\n            \"line\": 4,\n            \"filename\": \"filters-empty.tokens.json\"\n          }\n        ],\n        \"line\": 3,\n        \"filename\": \"filters-empty.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 3,\n      \"filename\": \"filters-empty.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters-empty.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.cdata.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Code\",\n      \"val\": \"users = [{ name: 'tobi', age: 2 }]\",\n      \"buffer\": false,\n      \"mustEscape\": false,\n      \"isInline\": false,\n      \"line\": 2,\n      \"filename\": \"filters.cdata.tokens.json\"\n    },\n    {\n      \"type\": \"Tag\",\n      \"name\": \"fb:users\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Each\",\n            \"obj\": \"users\",\n            \"val\": \"user\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"fb:user\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Filter\",\n                        \"name\": \"cdata\",\n                        \"block\": {\n                          \"type\": \"Block\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"#{user.name}\",\n                              \"line\": 8\n                            }\n                          ]\n                        },\n                        \"attrs\": [],\n                        \"line\": 7,\n                        \"filename\": \"filters.cdata.tokens.json\"\n                      }\n                    ]\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"age\",\n                      \"val\": \"user.age\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"filename\": \"filters.cdata.tokens.json\"\n                }\n              ],\n              \"line\": 6,\n              \"filename\": \"filters.cdata.tokens.json\"\n            },\n            \"line\": 5,\n            \"filename\": \"filters.cdata.tokens.json\"\n          }\n        ]\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 4,\n      \"filename\": \"filters.cdata.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.cdata.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.coffeescript.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Filter\",\n            \"name\": \"coffee-script\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"regexp = /\\\\n/\",\n                  \"line\": 3\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.coffeescript.tokens.json\"\n            },\n            \"attrs\": [],\n            \"line\": 2,\n            \"filename\": \"filters.coffeescript.tokens.json\"\n          },\n          {\n            \"type\": \"Filter\",\n            \"name\": \"coffee-script\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"math =\",\n                  \"line\": 5\n                },\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"\\n\",\n                  \"line\": 6\n                },\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"  square: (value) -> value * value\",\n                  \"line\": 6\n                }\n              ],\n              \"line\": 4,\n              \"filename\": \"filters.coffeescript.tokens.json\"\n            },\n            \"attrs\": [\n              {\n                \"name\": \"minify\",\n                \"val\": \"true\",\n                \"mustEscape\": true\n              }\n            ],\n            \"line\": 4,\n            \"filename\": \"filters.coffeescript.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.coffeescript.tokens.json\"\n      },\n      \"attrs\": [\n        {\n          \"name\": \"type\",\n          \"val\": \"'text/javascript'\",\n          \"mustEscape\": true\n        }\n      ],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.coffeescript.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.coffeescript.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.custom.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Filter\",\n                  \"name\": \"custom\",\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"Line 1\",\n                        \"line\": 4\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"\\n\",\n                        \"line\": 5\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"Line 2\",\n                        \"line\": 5\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"\\n\",\n                        \"line\": 6\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"\",\n                        \"line\": 6\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"\\n\",\n                        \"line\": 7\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"Line 4\",\n                        \"line\": 7\n                      }\n                    ],\n                    \"line\": 3,\n                    \"filename\": \"filters.custom.tokens.json\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"opt\",\n                      \"val\": \"'val'\",\n                      \"mustEscape\": true\n                    },\n                    {\n                      \"name\": \"num\",\n                      \"val\": \"2\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"line\": 3,\n                  \"filename\": \"filters.custom.tokens.json\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.custom.tokens.json\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"filters.custom.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.custom.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.custom.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.custom.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.include.custom.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"pre\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"RawInclude\",\n                        \"file\": {\n                          \"type\": \"FileReference\",\n                          \"line\": 4,\n                          \"filename\": \"filters.include.custom.tokens.json\",\n                          \"path\": \"filters.include.custom.pug\",\n                          \"fullPath\": \"test/cases/filters.include.custom.pug\",\n                          \"str\": \"html\\n  body\\n    pre\\n      include:custom(opt='val' num=2) filters.include.custom.pug\\n\"\n                        },\n                        \"line\": 4,\n                        \"filename\": \"filters.include.custom.tokens.json\",\n                        \"filters\": [\n                          {\n                            \"type\": \"IncludeFilter\",\n                            \"name\": \"custom\",\n                            \"attrs\": [\n                              {\n                                \"name\": \"opt\",\n                                \"val\": \"'val'\",\n                                \"mustEscape\": true\n                              },\n                              {\n                                \"name\": \"num\",\n                                \"val\": \"2\",\n                                \"mustEscape\": true\n                              }\n                            ],\n                            \"line\": 4,\n                            \"filename\": \"filters.include.custom.tokens.json\"\n                          }\n                        ]\n                      }\n                    ],\n                    \"line\": 3,\n                    \"filename\": \"filters.include.custom.tokens.json\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"filename\": \"filters.include.custom.tokens.json\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.include.custom.tokens.json\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"filters.include.custom.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.include.custom.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.include.custom.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.include.custom.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.include.custom.pug",
    "content": "html\n  body\n    pre\n      include:custom(opt='val' num=2) filters.include.custom.pug\n"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.include.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"RawInclude\",\n                  \"file\": {\n                    \"type\": \"FileReference\",\n                    \"line\": 3,\n                    \"filename\": \"filters.include.tokens.json\",\n                    \"path\": \"some.md\",\n                    \"fullPath\": \"test/cases/some.md\",\n                    \"str\": \"Just _some_ markdown **tests**.\\n\\nWith new line.\\n\"\n                  },\n                  \"line\": 3,\n                  \"filename\": \"filters.include.tokens.json\",\n                  \"filters\": [\n                    {\n                      \"type\": \"IncludeFilter\",\n                      \"name\": \"markdown-it\",\n                      \"attrs\": [],\n                      \"line\": 3,\n                      \"filename\": \"filters.include.tokens.json\"\n                    }\n                  ]\n                },\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"RawInclude\",\n                        \"file\": {\n                          \"type\": \"FileReference\",\n                          \"line\": 5,\n                          \"filename\": \"filters.include.tokens.json\",\n                          \"path\": \"include-filter-coffee.coffee\",\n                          \"fullPath\": \"test/cases/include-filter-coffee.coffee\",\n                          \"str\": \"math =\\n  square: (value) -> value * value\\n\"\n                        },\n                        \"line\": 5,\n                        \"filename\": \"filters.include.tokens.json\",\n                        \"filters\": [\n                          {\n                            \"type\": \"IncludeFilter\",\n                            \"name\": \"coffee-script\",\n                            \"attrs\": [\n                              {\n                                \"name\": \"minify\",\n                                \"val\": \"true\",\n                                \"mustEscape\": true\n                              }\n                            ],\n                            \"line\": 5,\n                            \"filename\": \"filters.include.tokens.json\"\n                          }\n                        ]\n                      }\n                    ],\n                    \"line\": 4,\n                    \"filename\": \"filters.include.tokens.json\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"filename\": \"filters.include.tokens.json\"\n                },\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"RawInclude\",\n                        \"file\": {\n                          \"type\": \"FileReference\",\n                          \"line\": 7,\n                          \"filename\": \"filters.include.tokens.json\",\n                          \"path\": \"include-filter-coffee.coffee\",\n                          \"fullPath\": \"test/cases/include-filter-coffee.coffee\",\n                          \"str\": \"math =\\n  square: (value) -> value * value\\n\"\n                        },\n                        \"line\": 7,\n                        \"filename\": \"filters.include.tokens.json\",\n                        \"filters\": [\n                          {\n                            \"type\": \"IncludeFilter\",\n                            \"name\": \"cdata\",\n                            \"attrs\": [],\n                            \"line\": 7,\n                            \"filename\": \"filters.include.tokens.json\"\n                          },\n                          {\n                            \"type\": \"IncludeFilter\",\n                            \"name\": \"coffee-script\",\n                            \"attrs\": [\n                              {\n                                \"name\": \"minify\",\n                                \"val\": \"false\",\n                                \"mustEscape\": true\n                              }\n                            ],\n                            \"line\": 7,\n                            \"filename\": \"filters.include.tokens.json\"\n                          }\n                        ]\n                      }\n                    ],\n                    \"line\": 6,\n                    \"filename\": \"filters.include.tokens.json\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"filename\": \"filters.include.tokens.json\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.include.tokens.json\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"filters.include.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.include.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.include.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.include.tokens.json\"\n}\n"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.inline.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Text\",\n            \"val\": \"before \",\n            \"line\": 1,\n            \"filename\": \"filters.inline.tokens.json\"\n          },\n          {\n            \"type\": \"Filter\",\n            \"name\": \"cdata\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"inside\",\n                  \"line\": 1,\n                  \"filename\": \"filters.inline.tokens.json\"\n                }\n              ],\n              \"line\": 1,\n              \"filename\": \"filters.inline.tokens.json\"\n            },\n            \"attrs\": [],\n            \"line\": 1,\n            \"filename\": \"filters.inline.tokens.json\"\n          },\n          {\n            \"type\": \"Text\",\n            \"val\": \" after\",\n            \"line\": 1,\n            \"filename\": \"filters.inline.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.inline.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.inline.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.inline.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.less.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"style\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Filter\",\n                        \"name\": \"less\",\n                        \"block\": {\n                          \"type\": \"Block\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"@pad: 15px;\",\n                              \"line\": 5\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"\\n\",\n                              \"line\": 6\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"body {\",\n                              \"line\": 6\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"\\n\",\n                              \"line\": 7\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"  padding: @pad;\",\n                              \"line\": 7\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"\\n\",\n                              \"line\": 8\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"}\",\n                              \"line\": 8\n                            }\n                          ],\n                          \"line\": 4,\n                          \"filename\": \"filters.less.tokens.json\"\n                        },\n                        \"attrs\": [],\n                        \"line\": 4,\n                        \"filename\": \"filters.less.tokens.json\"\n                      }\n                    ],\n                    \"line\": 3,\n                    \"filename\": \"filters.less.tokens.json\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"type\",\n                      \"val\": \"\\\"text/css\\\"\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"filename\": \"filters.less.tokens.json\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.less.tokens.json\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"filters.less.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.less.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.less.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.less.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.markdown.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Filter\",\n                  \"name\": \"markdown-it\",\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"This is _some_ awesome **markdown**\",\n                        \"line\": 4\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"\\n\",\n                        \"line\": 5\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"whoop.\",\n                        \"line\": 5\n                      }\n                    ],\n                    \"line\": 3,\n                    \"filename\": \"filters.markdown.tokens.json\"\n                  },\n                  \"attrs\": [],\n                  \"line\": 3,\n                  \"filename\": \"filters.markdown.tokens.json\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.markdown.tokens.json\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"filters.markdown.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.markdown.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.markdown.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.markdown.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.nested.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Filter\",\n            \"name\": \"cdata\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Filter\",\n                  \"name\": \"uglify-js\",\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"(function() {\",\n                        \"line\": 3\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"\\n\",\n                        \"line\": 4\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"  console.log('test')\",\n                        \"line\": 4\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"\\n\",\n                        \"line\": 5\n                      },\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"})()\",\n                        \"line\": 5\n                      }\n                    ],\n                    \"line\": 2,\n                    \"filename\": \"filters.nested.tokens.json\"\n                  },\n                  \"attrs\": [],\n                  \"line\": 2,\n                  \"filename\": \"filters.nested.tokens.json\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.nested.tokens.json\"\n            },\n            \"attrs\": [],\n            \"line\": 2,\n            \"filename\": \"filters.nested.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.nested.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.nested.tokens.json\"\n    },\n    {\n      \"type\": \"Tag\",\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Filter\",\n            \"name\": \"cdata\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Filter\",\n                  \"name\": \"uglify-js\",\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Filter\",\n                        \"name\": \"coffee-script\",\n                        \"block\": {\n                          \"type\": \"Block\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"(->\",\n                              \"line\": 8\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"\\n\",\n                              \"line\": 9\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"  console.log 'test'\",\n                              \"line\": 9\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"\\n\",\n                              \"line\": 10\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \")()\",\n                              \"line\": 10\n                            }\n                          ],\n                          \"line\": 7,\n                          \"filename\": \"filters.nested.tokens.json\"\n                        },\n                        \"attrs\": [],\n                        \"line\": 7,\n                        \"filename\": \"filters.nested.tokens.json\"\n                      }\n                    ],\n                    \"line\": 7,\n                    \"filename\": \"filters.nested.tokens.json\"\n                  },\n                  \"attrs\": [],\n                  \"line\": 7,\n                  \"filename\": \"filters.nested.tokens.json\"\n                }\n              ],\n              \"line\": 7,\n              \"filename\": \"filters.nested.tokens.json\"\n            },\n            \"attrs\": [],\n            \"line\": 7,\n            \"filename\": \"filters.nested.tokens.json\"\n          }\n        ],\n        \"line\": 6,\n        \"filename\": \"filters.nested.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 6,\n      \"filename\": \"filters.nested.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.nested.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/filters.stylus.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"style\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Filter\",\n                        \"name\": \"stylus\",\n                        \"block\": {\n                          \"type\": \"Block\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"body\",\n                              \"line\": 5\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"\\n\",\n                              \"line\": 6\n                            },\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"  padding: 50px\",\n                              \"line\": 6\n                            }\n                          ],\n                          \"line\": 4,\n                          \"filename\": \"filters.stylus.tokens.json\"\n                        },\n                        \"attrs\": [],\n                        \"line\": 4,\n                        \"filename\": \"filters.stylus.tokens.json\"\n                      }\n                    ],\n                    \"line\": 3,\n                    \"filename\": \"filters.stylus.tokens.json\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"type\",\n                      \"val\": \"\\\"text/css\\\"\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"filename\": \"filters.stylus.tokens.json\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"filters.stylus.tokens.json\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"filters.stylus.tokens.json\"\n          },\n          {\n            \"type\": \"Tag\",\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [],\n              \"line\": 7,\n              \"filename\": \"filters.stylus.tokens.json\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 7,\n            \"filename\": \"filters.stylus.tokens.json\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"filters.stylus.tokens.json\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"filters.stylus.tokens.json\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"filters.stylus.tokens.json\"\n}"
  },
  {
    "path": "packages/pug-filters/test/cases/include-filter-coffee.coffee",
    "content": "math =\n  square: (value) -> value * value\n"
  },
  {
    "path": "packages/pug-filters/test/cases/some.md",
    "content": "Just _some_ markdown **tests**.\n\nWith new line.\n"
  },
  {
    "path": "packages/pug-filters/test/custom-filters.js",
    "content": "var assert = require('assert');\n\nmodule.exports = {\n  custom: function(str, options) {\n    expect(options.opt).toBe('val');\n    expect(options.num).toBe(2);\n    return 'BEGIN' + str + 'END';\n  },\n};\n"
  },
  {
    "path": "packages/pug-filters/test/errors/dynamic-option.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Code\",\n      \"val\": \"var opt = 'a'\",\n      \"buffer\": false,\n      \"escape\": false,\n      \"isInline\": false,\n      \"line\": 1\n    },\n    {\n      \"type\": \"Filter\",\n      \"name\": \"cdata\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Text\",\n            \"val\": \"hey\",\n            \"line\": 3\n          }\n        ],\n        \"line\": 2\n      },\n      \"attrs\": [\n        {\n          \"name\": \"option\",\n          \"val\": \"opt\",\n          \"escaped\": true\n        }\n      ],\n      \"line\": 2\n    }\n  ],\n  \"line\": 0\n}"
  },
  {
    "path": "packages/pug-filters/test/errors-src/dynamic-option.jade",
    "content": "- var opt = 'a'\n:cdata(option=opt)\n  hey\n"
  },
  {
    "path": "packages/pug-filters/test/filter-aliases.test.js",
    "content": "const lex = require('pug-lexer');\nconst parse = require('pug-parser');\nconst handleFilters = require('../').handleFilters;\n\nconst customFilters = {};\ntest('filters can be aliased', () => {\n  const source = `\nscript\n  :cdata:minify\n    function myFunc(foo) {\n      return foo;\n    }\n  `;\n\n  const ast = parse(lex(source, {filename: __filename}), {\n    filename: __filename,\n    src: source,\n  });\n\n  const options = {};\n  const aliases = {\n    minify: 'uglify-js',\n  };\n\n  const output = handleFilters(ast, customFilters, options, aliases);\n  expect(output).toMatchSnapshot();\n});\n\ntest('we do not support chains of aliases', () => {\n  const source = `\nscript\n  :cdata:minify-js\n    function myFunc(foo) {\n      return foo;\n    }\n  `;\n\n  const ast = parse(lex(source, {filename: __filename}), {\n    filename: __filename,\n    src: source,\n  });\n\n  const options = {};\n  const aliases = {\n    'minify-js': 'minify',\n    minify: 'uglify-js',\n  };\n\n  try {\n    const output = handleFilters(ast, customFilters, options, aliases);\n  } catch (ex) {\n    expect({\n      code: ex.code,\n      message: ex.message,\n    }).toMatchSnapshot();\n    return;\n  }\n  throw new Error('Expected an exception');\n});\n\ntest('options are applied before aliases', () => {\n  const source = `\nscript\n  :cdata:minify\n    function myFunc(foo) {\n      return foo;\n    }\n  :cdata:uglify-js\n    function myFunc(foo) {\n      return foo;\n    }\n  `;\n\n  const ast = parse(lex(source, {filename: __filename}), {\n    filename: __filename,\n    src: source,\n  });\n\n  const options = {\n    minify: {output: {beautify: true}},\n  };\n  const aliases = {\n    minify: 'uglify-js',\n  };\n\n  const output = handleFilters(ast, customFilters, options, aliases);\n  expect(output).toMatchSnapshot();\n});\n"
  },
  {
    "path": "packages/pug-filters/test/index.test.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar assert = require('assert');\nvar handleFilters = require('../').handleFilters;\nvar customFilters = require('./custom-filters.js');\n\nprocess.chdir(__dirname + '/../');\n\nvar testCases;\n\ntestCases = fs.readdirSync(__dirname + '/cases').filter(function(name) {\n  return /\\.input\\.json$/.test(name);\n});\n//\ntestCases.forEach(function(filename) {\n  function read(path) {\n    return fs.readFileSync(__dirname + '/cases/' + path, 'utf8');\n  }\n\n  test('cases/' + filename, function() {\n    var actualAst = JSON.stringify(\n      handleFilters(JSON.parse(read(filename)), customFilters),\n      null,\n      '  '\n    );\n    expect(actualAst).toMatchSnapshot();\n  });\n});\n\ntestCases = fs.readdirSync(__dirname + '/errors').filter(function(name) {\n  return /\\.input\\.json$/.test(name);\n});\n\ntestCases.forEach(function(filename) {\n  function read(path) {\n    return fs.readFileSync(__dirname + '/errors/' + path, 'utf8');\n  }\n\n  test('errors/' + filename, function() {\n    var actual;\n    try {\n      handleFilters(JSON.parse(read(filename)), customFilters);\n      throw new Error('Expected ' + filename + ' to throw an exception.');\n    } catch (ex) {\n      if (!ex || !ex.code || ex.code.indexOf('PUG:') !== 0) throw ex;\n      actual = {\n        msg: ex.msg,\n        code: ex.code,\n        line: ex.line,\n      };\n    }\n    expect(actual).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/pug-filters/test/per-filter-options-applied-to-nested-filters.test.js",
    "content": "const lex = require('pug-lexer');\nconst parse = require('pug-parser');\nconst handleFilters = require('../').handleFilters;\n\nconst customFilters = {};\ntest('per filter options are applied, even to nested filters', () => {\n  const source = `\nscript\n  :cdata:uglify-js\n    function myFunc(foo) {\n      return foo;\n    }\n  `;\n\n  const ast = parse(lex(source, {filename: __filename}), {\n    filename: __filename,\n    src: source,\n  });\n\n  const options = {\n    'uglify-js': {output: {beautify: true}},\n  };\n\n  const output = handleFilters(ast, customFilters, options);\n  expect(output).toMatchSnapshot();\n\n  // TODO: render with `options.filterOptions['uglify-js']`\n});\n"
  },
  {
    "path": "packages/pug-lexer/History.md",
    "content": "2.3.0 / 2016-09-11\n==================\n\n  * Update is-expression to 3.0.0\n\n2.2.2 / 2016-09-07\n==================\n\n  * Support non-standard class names that start with two hyphens in class\n    literals, most notably used in Bemto\n\n2.2.1 / 2016-08-29\n==================\n\n  * Fix semantics of `isExpression` plugin\n\n2.2.0 / 2016-08-26\n==================\n\n  * Allow customizing `isExpression`\n\n2.1.0 / 2016-08-22\n==================\n\n  * Allow attributes that start with a colon\n\n2.0.3 / 2016-08-07\n==================\n\n  * Allow `when` expressions with colons\n  * Fix incorrect location of some errors\n\n2.0.2 / 2016-06-02\n==================\n\n  * Fix incorrect location of some invalid expressions in an attribute.\n\n2.0.1 / 2016-05-31\n==================\n\n  * Update README for `filename` option\n\n2.0.0 / 2016-05-14\n==================\n\n  * Take the `filename` as an option rather than special casing it.  This means that lex only takes 2 arguments rather than 3\n  * Add support for an inline comment after a block.  This means block names can no longer contain `//`\n  * Add type checking on arguments\n\n1.2.0 / 2016-05-14\n==================\n\n  * Throw a more helpful error if someone attempts to use the old `- each foo in bar` syntax (it should not have the `- ` prefix)\n  * Add Error reporting for invalid case expressions\n\n1.0.1 / 2016-04-18\n==================\n\n  * Update dependencies\n    - Update to `is-expression@2` which allows ES2015-style template strings\n      by default.\n\n1.0.0 / 2015-12-23\n==================\n\n  * First stable release\n"
  },
  {
    "path": "packages/pug-lexer/LICENSE",
    "content": "Copyright (c) 2014 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-lexer/README.md",
    "content": "# pug-lexer\n\nThe pug lexer.  This module is responsible for taking a string and converting it into an array of tokens.\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-lexer/master.svg)](https://travis-ci.org/pugjs/pug-lexer)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-lexer)](https://david-dm.org/pugjs/pug?path=packages/pug-lexer)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-lexer)](https://david-dm.org/pugjs/pug?path=packages/pug-lexer&type=dev)\n[![NPM version](https://img.shields.io/npm/v/pug-lexer.svg)](https://www.npmjs.org/package/pug-lexer)\n[![Coverage Status](https://img.shields.io/codecov/c/github/pugjs/pug-lexer.svg)](https://codecov.io/gh/pugjs/pug-lexer)\n\n## Installation\n\n    npm install pug-lexer\n\n## Usage\n\n```js\nvar lex = require('pug-lexer');\n```\n\n### `lex(str, options)`\n\nConvert Pug string to an array of tokens.\n\n`options` can contain the following properties:\n\n- `filename` (string): The name of the Pug file; it is used in error handling if provided.\n- `plugins` (array): An array of plugins, in the order they should be applied.\n\n```js\nconsole.log(JSON.stringify(lex('div(data-foo=\"bar\")', {filename: 'my-file.pug'}), null, '  '))\n```\n\n```json\n[\n  {\n    \"type\": \"tag\",\n    \"line\": 1,\n    \"val\": \"div\",\n    \"selfClosing\": false\n  },\n  {\n    \"type\": \"attrs\",\n    \"line\": 1,\n    \"attrs\": [\n      {\n        \"name\": \"data-foo\",\n        \"val\": \"\\\"bar\\\"\",\n        \"escaped\": true\n      }\n    ]\n  },\n  {\n    \"type\": \"eos\",\n    \"line\": 1\n  }\n]\n```\n\n### `new lex.Lexer(str, options)`\n\nConstructor for a Lexer class. This is not meant to be used directly unless you know what you are doing.\n\n`options` may contain the following properties:\n\n- `filename` (string): The name of the Pug file; it is used in error handling if provided.\n- `interpolated` (boolean): if the Lexer is created as a child lexer for inline tag interpolation (e.g. `#[p Hello]`). Defaults to `false`.\n- `startingLine` (integer): the real line number of the first line in the input. It is also used for inline tag interpolation. Defaults to `1`.\n- `plugins` (array): An array of plugins, in the order they should be applied.\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-lexer/index.d.ts",
    "content": "declare module 'pug-lexer' {\n  namespace lex {\n    export interface Loc {\n      start: {line: number; column: number};\n      end: {line: number; column: number};\n    }\n\n    export type LexTokenType =\n      | ':'\n      | '&attributes'\n      | 'attribute'\n      | 'block'\n      | 'blockcode'\n      | 'call'\n      | 'case'\n      | 'class'\n      | 'code'\n      | 'comment'\n      | 'default'\n      | 'doctype'\n      | 'dot'\n      | 'each'\n      | 'eachOf'\n      | 'else-if'\n      | 'else'\n      | 'end-attributes'\n      | 'end-pipeless-text'\n      | 'end-pug-interpolation'\n      | 'eos'\n      | 'extends'\n      | 'filter'\n      | 'id'\n      | 'if'\n      | 'include'\n      | 'indent'\n      | 'interpolated-code'\n      | 'interpolation'\n      | 'mixin-block'\n      | 'mixin'\n      | 'newline'\n      | 'outdent'\n      | 'path'\n      | 'slash'\n      | 'start-attributes'\n      | 'start-pipeless-text'\n      | 'start-pug-interpolation'\n      | 'tag'\n      | 'text-html'\n      | 'text'\n      | 'when'\n      | 'while'\n      | 'yield';\n\n    export interface LexToken<Type extends LexTokenType> {\n      type: Type;\n      loc: Loc;\n    }\n\n    export interface TagToken extends LexToken<'tag'> {\n      val: string;\n    }\n\n    export type StartAttributesToken = LexToken<'start-attributes'>;\n\n    export interface AttributeToken extends LexToken<'attribute'> {\n      name: string;\n      val: string | boolean;\n      mustEscape: boolean;\n    }\n\n    export type EndAttributesToken = LexToken<'end-attributes'>;\n\n    export interface IndentToken extends LexToken<'indent'> {\n      val: number;\n    }\n\n    export interface ClassToken extends LexToken<'class'> {\n      val: string;\n    }\n\n    export type OutdentToken = LexToken<'outdent'>;\n\n    export type EosToken = LexToken<'eos'>;\n\n    export interface CommentToken extends LexToken<'comment'> {\n      val: string;\n      buffer: boolean;\n    }\n\n    export type NewlineToken = LexToken<'newline'>;\n\n    export interface TextToken extends LexToken<'text'> {\n      val: string;\n    }\n\n    export interface InterpolatedCodeToken\n      extends LexToken<'interpolated-code'> {\n      mustEscape: boolean;\n      buffer: boolean;\n      val: string;\n    }\n\n    export interface CodeToken extends LexToken<'code'> {\n      val: string;\n      mustEscape: boolean;\n      buffer: boolean;\n    }\n\n    export interface IdToken extends LexToken<'id'> {\n      val: string;\n    }\n\n    export type StartPipelessTextToken = LexToken<'start-pipeless-text'>;\n\n    export type EndPipelessTextToken = LexToken<'end-pipeless-text'>;\n\n    export interface DoctypeToken extends LexToken<'doctype'> {\n      val: string;\n    }\n\n    export type DotToken = LexToken<'dot'>;\n\n    export interface BlockToken extends LexToken<'block'> {\n      val: string;\n      mode: 'replace' | 'prepend' | 'append';\n    }\n\n    export type ExtendsToken = LexToken<'extends'>;\n\n    export interface PathToken extends LexToken<'path'> {\n      val: string;\n    }\n\n    export type StartPugInterpolationToken = LexToken<\n      'start-pug-interpolation'\n    >;\n\n    export type EndPugInterpolationToken = LexToken<'end-pug-interpolation'>;\n\n    export interface InterpolationToken extends LexToken<'interpolation'> {\n      val: string;\n    }\n\n    export type IncludeToken = LexToken<'include'>;\n\n    export interface FilterToken extends LexToken<'filter'> {\n      val: string;\n    }\n\n    export interface CallToken extends LexToken<'call'> {\n      val: string;\n      args: string;\n    }\n\n    export interface MixinToken extends LexToken<'mixin'> {\n      val: string;\n      args: string | null;\n    }\n\n    export interface IfToken extends LexToken<'if'> {\n      val: string;\n    }\n\n    export type MixinBlockToken = LexToken<'mixin-block'>;\n\n    export interface ElseToken extends LexToken<'else'> {\n      val: string;\n    }\n\n    export interface AndAttributesToken extends LexToken<'&attributes'> {\n      val: string;\n    }\n\n    export interface TextHtmlToken extends LexToken<'text-html'> {\n      val: string;\n    }\n\n    export interface EachToken extends LexToken<'each'> {\n      val: string;\n      key: string | null;\n      code: string;\n    }\n\n    export interface EachOfToken extends LexToken<'eachOf'> {\n      val: string;\n      value: string;\n      code: string;\n    }\n\n    export interface WhileToken extends LexToken<'while'> {\n      val: string;\n    }\n\n    export interface CaseToken extends LexToken<'case'> {\n      val: string;\n    }\n\n    export interface WhenToken extends LexToken<'when'> {\n      val: string;\n    }\n\n    export type ColonToken = LexToken<':'>;\n\n    export type DefaultToken = LexToken<'default'>;\n\n    export interface ElseIfToken extends LexToken<'else-if'> {\n      val: string;\n    }\n\n    export type BlockcodeToken = LexToken<'blockcode'>;\n\n    export type YieldToken = LexToken<'yield'>;\n\n    export type SlashToken = LexToken<'slash'>;\n\n    export type Token =\n      | AndAttributesToken\n      | AttributeToken\n      | BlockcodeToken\n      | BlockToken\n      | CallToken\n      | CaseToken\n      | ClassToken\n      | CodeToken\n      | ColonToken\n      | CommentToken\n      | DefaultToken\n      | DoctypeToken\n      | DotToken\n      | EachToken\n      | EachOfToken\n      | ElseIfToken\n      | ElseToken\n      | EndAttributesToken\n      | EndPipelessTextToken\n      | EndPugInterpolationToken\n      | EosToken\n      | ExtendsToken\n      | FilterToken\n      | IdToken\n      | IfToken\n      | IncludeToken\n      | IndentToken\n      | InterpolatedCodeToken\n      | InterpolationToken\n      | MixinBlockToken\n      | MixinToken\n      | NewlineToken\n      | OutdentToken\n      | PathToken\n      | SlashToken\n      | StartAttributesToken\n      | StartPipelessTextToken\n      | StartPugInterpolationToken\n      | TagToken\n      | TextHtmlToken\n      | TextToken\n      | WhenToken\n      | WhileToken\n      | YieldToken;\n\n    export type LexerFunction = (type: string, exp?: any) => boolean;\n    export interface LexerOptions {\n      filename: string;\n      interpolated?: boolean;\n      startingLine?: number;\n      startingColumn?: number;\n      plugins?: LexerFunction[];\n    }\n    export class Lexer {\n      input: string;\n      originalInput: string;\n      filename?: string;\n      interpolated: boolean;\n      lineno: number;\n      colno: number;\n      plugins: LexerFunction[];\n      indentStack: number[];\n      indentRe: RegExp | null;\n      interpolationAllowed: boolean;\n      whitespaceRe: RegExp;\n      tokens: Token[];\n      ended: boolean;\n      constructor(str: string, options?: LexerOptions);\n      error(code: string, message: string): never;\n      assert(value: any, message: string): void;\n      isExpression(exp: string): boolean;\n      assertExpression(exp: string, noThrow?: boolean): boolean;\n      assertNestingCorrect(exp: string): void;\n      private tok<Type extends LexTokenType>(\n        type: Type,\n        val?: any,\n      ): LexToken<Type>;\n      private tokEnd<Type extends LexTokenType>(\n        tok: LexToken<Type>,\n      ): LexToken<Type>;\n      private incrementLine(increment: number): void;\n      private incrementColumn(increment: number): void;\n      private consume(len: number): void;\n      private scan<Type extends LexTokenType>(\n        regexp: RegExp,\n        type: Type,\n      ): LexToken<Type> | undefined;\n      private scanEndOfLine<Type extends LexTokenType>(\n        regexp: RegExp,\n        type: Type,\n      ): LexToken<Type> | undefined;\n      private bracketExpression(skip?: number): number;\n      scanIndentation(): RegExpExecArray | null;\n      eos(): true | undefined;\n      blank(): true | undefined;\n      comment(): true | undefined;\n      interpolation(): true | undefined;\n      tag(): true | undefined;\n      filter(): true | undefined;\n      doctype(): true | undefined;\n      id(): true | undefined;\n      className(): true | undefined;\n      endInterpolation(): true | undefined;\n      addText(\n        type: LexTokenType,\n        value: string,\n        prefix?: string,\n        escaped?: number,\n      ): void;\n      text(): true | undefined;\n      textHtml(): true | undefined;\n      dot(): true | undefined;\n      extends(): true | undefined;\n      prepend(): true | undefined;\n      append(): true | undefined;\n      block(): true | undefined;\n      mixinBlock(): true | undefined;\n      yield(): true | undefined;\n      include(): true | undefined;\n      path(): true | undefined;\n      case(): true | undefined;\n      when(): true | undefined;\n      default(): true | undefined;\n      call(): true | undefined;\n      mixin(): true | undefined;\n      conditional(): true | undefined;\n      while(): true | undefined;\n      each(): true | undefined;\n      eachOf(): true | undefined;\n      code(): true | undefined;\n      blockCode(): true | undefined;\n      attribute(): string;\n      attributeValue(\n        str: string,\n      ): {val?: string; mustEscape?: boolean; remainingSource: string};\n      attrs(): true | undefined;\n      attributesBlock(): true | undefined;\n      indent(): true | NewlineToken | undefined;\n      pipelessText(indents?: number): boolean | undefined;\n      slash(): true | undefined;\n      colon(): true | undefined;\n      fail(): never;\n      callLexerFunction(func: string): boolean;\n      private advance(): boolean;\n      getTokens(): Token[];\n    }\n  }\n  function lex(str: string, options?: lex.LexerOptions): lex.Token[];\n  export = lex;\n}\n"
  },
  {
    "path": "packages/pug-lexer/index.js",
    "content": "'use strict';\n\nvar assert = require('assert');\nvar isExpression = require('is-expression');\nvar characterParser = require('character-parser');\nvar error = require('pug-error');\n\nmodule.exports = lex;\nmodule.exports.Lexer = Lexer;\nfunction lex(str, options) {\n  var lexer = new Lexer(str, options);\n  return JSON.parse(JSON.stringify(lexer.getTokens()));\n}\n\n/**\n * Initialize `Lexer` with the given `str`.\n *\n * @param {String} str\n * @param {String} filename\n * @api private\n */\n\nfunction Lexer(str, options) {\n  options = options || {};\n  if (typeof str !== 'string') {\n    throw new Error(\n      'Expected source code to be a string but got \"' + typeof str + '\"'\n    );\n  }\n  if (typeof options !== 'object') {\n    throw new Error(\n      'Expected \"options\" to be an object but got \"' + typeof options + '\"'\n    );\n  }\n  //Strip any UTF-8 BOM off of the start of `str`, if it exists.\n  str = str.replace(/^\\uFEFF/, '');\n  this.input = str.replace(/\\r\\n|\\r/g, '\\n');\n  this.originalInput = this.input;\n  this.filename = options.filename;\n  this.interpolated = options.interpolated || false;\n  this.lineno = options.startingLine || 1;\n  this.colno = options.startingColumn || 1;\n  this.plugins = options.plugins || [];\n  this.indentStack = [0];\n  this.indentRe = null;\n  // If #{}, !{} or #[] syntax is allowed when adding text\n  this.interpolationAllowed = true;\n  this.whitespaceRe = /[ \\n\\t]/;\n\n  this.tokens = [];\n  this.ended = false;\n}\n\n/**\n * Lexer prototype.\n */\n\nLexer.prototype = {\n  constructor: Lexer,\n\n  error: function(code, message) {\n    var err = error(code, message, {\n      line: this.lineno,\n      column: this.colno,\n      filename: this.filename,\n      src: this.originalInput,\n    });\n    throw err;\n  },\n\n  assert: function(value, message) {\n    if (!value) this.error('ASSERT_FAILED', message);\n  },\n\n  isExpression: function(exp) {\n    return isExpression(exp, {\n      throw: true,\n    });\n  },\n\n  assertExpression: function(exp, noThrow) {\n    //this verifies that a JavaScript expression is valid\n    try {\n      this.callLexerFunction('isExpression', exp);\n      return true;\n    } catch (ex) {\n      if (noThrow) return false;\n\n      // not coming from acorn\n      if (!ex.loc) throw ex;\n\n      this.incrementLine(ex.loc.line - 1);\n      this.incrementColumn(ex.loc.column);\n      var msg =\n        'Syntax Error: ' + ex.message.replace(/ \\([0-9]+:[0-9]+\\)$/, '');\n      this.error('SYNTAX_ERROR', msg);\n    }\n  },\n\n  assertNestingCorrect: function(exp) {\n    //this verifies that code is properly nested, but allows\n    //invalid JavaScript such as the contents of `attributes`\n    var res = characterParser.default(exp);\n    if (res.isNesting()) {\n      this.error(\n        'INCORRECT_NESTING',\n        'Nesting must match on expression `' + exp + '`'\n      );\n    }\n  },\n\n  /**\n   * Construct a token with the given `type` and `val`.\n   *\n   * @param {String} type\n   * @param {String} val\n   * @return {Object}\n   * @api private\n   */\n\n  tok: function(type, val) {\n    var res = {\n      type: type,\n      loc: {\n        start: {\n          line: this.lineno,\n          column: this.colno,\n        },\n        filename: this.filename,\n      },\n    };\n\n    if (val !== undefined) res.val = val;\n\n    return res;\n  },\n\n  /**\n   * Set the token's `loc.end` value.\n   *\n   * @param {Object} tok\n   * @returns {Object}\n   * @api private\n   */\n\n  tokEnd: function(tok) {\n    tok.loc.end = {\n      line: this.lineno,\n      column: this.colno,\n    };\n    return tok;\n  },\n\n  /**\n   * Increment `this.lineno` and reset `this.colno`.\n   *\n   * @param {Number} increment\n   * @api private\n   */\n\n  incrementLine: function(increment) {\n    this.lineno += increment;\n    if (increment) this.colno = 1;\n  },\n\n  /**\n   * Increment `this.colno`.\n   *\n   * @param {Number} increment\n   * @api private\n   */\n\n  incrementColumn: function(increment) {\n    this.colno += increment;\n  },\n\n  /**\n   * Consume the given `len` of input.\n   *\n   * @param {Number} len\n   * @api private\n   */\n\n  consume: function(len) {\n    this.input = this.input.substr(len);\n  },\n\n  /**\n   * Scan for `type` with the given `regexp`.\n   *\n   * @param {String} type\n   * @param {RegExp} regexp\n   * @return {Object}\n   * @api private\n   */\n\n  scan: function(regexp, type) {\n    var captures;\n    if ((captures = regexp.exec(this.input))) {\n      var len = captures[0].length;\n      var val = captures[1];\n      var diff = len - (val ? val.length : 0);\n      var tok = this.tok(type, val);\n      this.consume(len);\n      this.incrementColumn(diff);\n      return tok;\n    }\n  },\n  scanEndOfLine: function(regexp, type) {\n    var captures;\n    if ((captures = regexp.exec(this.input))) {\n      var whitespaceLength = 0;\n      var whitespace;\n      var tok;\n      if ((whitespace = /^([ ]+)([^ ]*)/.exec(captures[0]))) {\n        whitespaceLength = whitespace[1].length;\n        this.incrementColumn(whitespaceLength);\n      }\n      var newInput = this.input.substr(captures[0].length);\n      if (newInput[0] === ':') {\n        this.input = newInput;\n        tok = this.tok(type, captures[1]);\n        this.incrementColumn(captures[0].length - whitespaceLength);\n        return tok;\n      }\n      if (/^[ \\t]*(\\n|$)/.test(newInput)) {\n        this.input = newInput.substr(/^[ \\t]*/.exec(newInput)[0].length);\n        tok = this.tok(type, captures[1]);\n        this.incrementColumn(captures[0].length - whitespaceLength);\n        return tok;\n      }\n    }\n  },\n\n  /**\n   * Return the indexOf `(` or `{` or `[` / `)` or `}` or `]` delimiters.\n   *\n   * Make sure that when calling this function, colno is at the character\n   * immediately before the beginning.\n   *\n   * @return {Number}\n   * @api private\n   */\n\n  bracketExpression: function(skip) {\n    skip = skip || 0;\n    var start = this.input[skip];\n    assert(\n      start === '(' || start === '{' || start === '[',\n      'The start character should be \"(\", \"{\" or \"[\"'\n    );\n    var end = {'(': ')', '{': '}', '[': ']'}[start];\n    var range;\n    try {\n      range = characterParser.parseUntil(this.input, end, {start: skip + 1});\n    } catch (ex) {\n      if (ex.index !== undefined) {\n        var idx = ex.index;\n        // starting from this.input[skip]\n        var tmp = this.input.substr(skip).indexOf('\\n');\n        // starting from this.input[0]\n        var nextNewline = tmp + skip;\n        var ptr = 0;\n        while (idx > nextNewline && tmp !== -1) {\n          this.incrementLine(1);\n          idx -= nextNewline + 1;\n          ptr += nextNewline + 1;\n          tmp = nextNewline = this.input.substr(ptr).indexOf('\\n');\n        }\n\n        this.incrementColumn(idx);\n      }\n      if (ex.code === 'CHARACTER_PARSER:END_OF_STRING_REACHED') {\n        this.error(\n          'NO_END_BRACKET',\n          'The end of the string reached with no closing bracket ' +\n            end +\n            ' found.'\n        );\n      } else if (ex.code === 'CHARACTER_PARSER:MISMATCHED_BRACKET') {\n        this.error('BRACKET_MISMATCH', ex.message);\n      }\n      throw ex;\n    }\n    return range;\n  },\n\n  scanIndentation: function() {\n    var captures, re;\n\n    // established regexp\n    if (this.indentRe) {\n      captures = this.indentRe.exec(this.input);\n      // determine regexp\n    } else {\n      // tabs\n      re = /^\\n(\\t*) */;\n      captures = re.exec(this.input);\n\n      // spaces\n      if (captures && !captures[1].length) {\n        re = /^\\n( *)/;\n        captures = re.exec(this.input);\n      }\n\n      // established\n      if (captures && captures[1].length) this.indentRe = re;\n    }\n\n    return captures;\n  },\n\n  /**\n   * end-of-source.\n   */\n\n  eos: function() {\n    if (this.input.length) return;\n    if (this.interpolated) {\n      this.error(\n        'NO_END_BRACKET',\n        'End of line was reached with no closing bracket for interpolation.'\n      );\n    }\n    for (var i = 0; this.indentStack[i]; i++) {\n      this.tokens.push(this.tokEnd(this.tok('outdent')));\n    }\n    this.tokens.push(this.tokEnd(this.tok('eos')));\n    this.ended = true;\n    return true;\n  },\n\n  /**\n   * Blank line.\n   */\n\n  blank: function() {\n    var captures;\n    if ((captures = /^\\n[ \\t]*\\n/.exec(this.input))) {\n      this.consume(captures[0].length - 1);\n      this.incrementLine(1);\n      return true;\n    }\n  },\n\n  /**\n   * Comment.\n   */\n\n  comment: function() {\n    var captures;\n    if ((captures = /^\\/\\/(-)?([^\\n]*)/.exec(this.input))) {\n      this.consume(captures[0].length);\n      var tok = this.tok('comment', captures[2]);\n      tok.buffer = '-' != captures[1];\n      this.interpolationAllowed = tok.buffer;\n      this.tokens.push(tok);\n      this.incrementColumn(captures[0].length);\n      this.tokEnd(tok);\n      this.callLexerFunction('pipelessText');\n      return true;\n    }\n  },\n\n  /**\n   * Interpolated tag.\n   */\n\n  interpolation: function() {\n    if (/^#\\{/.test(this.input)) {\n      var match = this.bracketExpression(1);\n      this.consume(match.end + 1);\n      var tok = this.tok('interpolation', match.src);\n      this.tokens.push(tok);\n      this.incrementColumn(2); // '#{'\n      this.assertExpression(match.src);\n\n      var splitted = match.src.split('\\n');\n      var lines = splitted.length - 1;\n      this.incrementLine(lines);\n      this.incrementColumn(splitted[lines].length + 1); // + 1 → '}'\n      this.tokEnd(tok);\n      return true;\n    }\n  },\n\n  /**\n   * Tag.\n   */\n\n  tag: function() {\n    var captures;\n\n    if ((captures = /^(\\w(?:[-:\\w]*\\w)?)/.exec(this.input))) {\n      var tok,\n        name = captures[1],\n        len = captures[0].length;\n      this.consume(len);\n      tok = this.tok('tag', name);\n      this.tokens.push(tok);\n      this.incrementColumn(len);\n      this.tokEnd(tok);\n      return true;\n    }\n  },\n\n  /**\n   * Filter.\n   */\n\n  filter: function(opts) {\n    var tok = this.scan(/^:([\\w\\-]+)/, 'filter');\n    var inInclude = opts && opts.inInclude;\n    if (tok) {\n      this.tokens.push(tok);\n      this.incrementColumn(tok.val.length);\n      this.tokEnd(tok);\n      this.callLexerFunction('attrs');\n      if (!inInclude) {\n        this.interpolationAllowed = false;\n        this.callLexerFunction('pipelessText');\n      }\n      return true;\n    }\n  },\n\n  /**\n   * Doctype.\n   */\n\n  doctype: function() {\n    var node = this.scanEndOfLine(/^doctype *([^\\n]*)/, 'doctype');\n    if (node) {\n      this.tokens.push(this.tokEnd(node));\n      return true;\n    }\n  },\n\n  /**\n   * Id.\n   */\n\n  id: function() {\n    var tok = this.scan(/^#([\\w-]+)/, 'id');\n    if (tok) {\n      this.tokens.push(tok);\n      this.incrementColumn(tok.val.length);\n      this.tokEnd(tok);\n      return true;\n    }\n    if (/^#/.test(this.input)) {\n      this.error(\n        'INVALID_ID',\n        '\"' +\n          /.[^ \\t\\(\\#\\.\\:]*/.exec(this.input.substr(1))[0] +\n          '\" is not a valid ID.'\n      );\n    }\n  },\n\n  /**\n   * Class.\n   */\n\n  className: function() {\n    var tok = this.scan(/^\\.([_a-z0-9\\-]*[_a-z][_a-z0-9\\-]*)/i, 'class');\n    if (tok) {\n      this.tokens.push(tok);\n      this.incrementColumn(tok.val.length);\n      this.tokEnd(tok);\n      return true;\n    }\n    if (/^\\.[_a-z0-9\\-]+/i.test(this.input)) {\n      this.error(\n        'INVALID_CLASS_NAME',\n        'Class names must contain at least one letter or underscore.'\n      );\n    }\n    if (/^\\./.test(this.input)) {\n      this.error(\n        'INVALID_CLASS_NAME',\n        '\"' +\n          /.[^ \\t\\(\\#\\.\\:]*/.exec(this.input.substr(1))[0] +\n          '\" is not a valid class name.  Class names can only contain \"_\", \"-\", a-z and 0-9, and must contain at least one of \"_\", or a-z'\n      );\n    }\n  },\n\n  /**\n   * Text.\n   */\n  endInterpolation: function() {\n    if (this.interpolated && this.input[0] === ']') {\n      this.input = this.input.substr(1);\n      this.ended = true;\n      return true;\n    }\n  },\n  addText: function(type, value, prefix, escaped) {\n    var tok;\n    if (value + prefix === '') return;\n    prefix = prefix || '';\n    escaped = escaped || 0;\n    var indexOfEnd = this.interpolated ? value.indexOf(']') : -1;\n    var indexOfStart = this.interpolationAllowed ? value.indexOf('#[') : -1;\n    var indexOfEscaped = this.interpolationAllowed ? value.indexOf('\\\\#[') : -1;\n    var matchOfStringInterp = /(\\\\)?([#!]){((?:.|\\n)*)$/.exec(value);\n    var indexOfStringInterp =\n      this.interpolationAllowed && matchOfStringInterp\n        ? matchOfStringInterp.index\n        : Infinity;\n\n    if (indexOfEnd === -1) indexOfEnd = Infinity;\n    if (indexOfStart === -1) indexOfStart = Infinity;\n    if (indexOfEscaped === -1) indexOfEscaped = Infinity;\n\n    if (\n      indexOfEscaped !== Infinity &&\n      indexOfEscaped < indexOfEnd &&\n      indexOfEscaped < indexOfStart &&\n      indexOfEscaped < indexOfStringInterp\n    ) {\n      prefix = prefix + value.substring(0, indexOfEscaped) + '#[';\n      return this.addText(\n        type,\n        value.substring(indexOfEscaped + 3),\n        prefix,\n        escaped + 1\n      );\n    }\n    if (\n      indexOfStart !== Infinity &&\n      indexOfStart < indexOfEnd &&\n      indexOfStart < indexOfEscaped &&\n      indexOfStart < indexOfStringInterp\n    ) {\n      tok = this.tok(type, prefix + value.substring(0, indexOfStart));\n      this.incrementColumn(prefix.length + indexOfStart + escaped);\n      this.tokens.push(this.tokEnd(tok));\n      tok = this.tok('start-pug-interpolation');\n      this.incrementColumn(2);\n      this.tokens.push(this.tokEnd(tok));\n      var child = new this.constructor(value.substr(indexOfStart + 2), {\n        filename: this.filename,\n        interpolated: true,\n        startingLine: this.lineno,\n        startingColumn: this.colno,\n        plugins: this.plugins,\n      });\n      var interpolated;\n      try {\n        interpolated = child.getTokens();\n      } catch (ex) {\n        if (ex.code && /^PUG:/.test(ex.code)) {\n          this.colno = ex.column;\n          this.error(ex.code.substr(4), ex.msg);\n        }\n        throw ex;\n      }\n      this.colno = child.colno;\n      this.tokens = this.tokens.concat(interpolated);\n      tok = this.tok('end-pug-interpolation');\n      this.incrementColumn(1);\n      this.tokens.push(this.tokEnd(tok));\n      this.addText(type, child.input);\n      return;\n    }\n    if (\n      indexOfEnd !== Infinity &&\n      indexOfEnd < indexOfStart &&\n      indexOfEnd < indexOfEscaped &&\n      indexOfEnd < indexOfStringInterp\n    ) {\n      if (prefix + value.substring(0, indexOfEnd)) {\n        this.addText(type, value.substring(0, indexOfEnd), prefix);\n      }\n      this.ended = true;\n      this.input = value.substr(value.indexOf(']') + 1) + this.input;\n      return;\n    }\n    if (indexOfStringInterp !== Infinity) {\n      if (matchOfStringInterp[1]) {\n        prefix =\n          prefix +\n          value.substring(0, indexOfStringInterp) +\n          matchOfStringInterp[2] +\n          '{';\n        return this.addText(\n          type,\n          value.substring(indexOfStringInterp + 3),\n          prefix,\n          escaped + 1\n        );\n      }\n      var before = value.substr(0, indexOfStringInterp);\n      if (prefix || before) {\n        before = prefix + before;\n        tok = this.tok(type, before);\n        this.incrementColumn(before.length + escaped);\n        this.tokens.push(this.tokEnd(tok));\n      }\n\n      var rest = matchOfStringInterp[3];\n      var range;\n      tok = this.tok('interpolated-code');\n      this.incrementColumn(2);\n      try {\n        range = characterParser.parseUntil(rest, '}');\n      } catch (ex) {\n        if (ex.index !== undefined) {\n          this.incrementColumn(ex.index);\n        }\n        if (ex.code === 'CHARACTER_PARSER:END_OF_STRING_REACHED') {\n          this.error(\n            'NO_END_BRACKET',\n            'End of line was reached with no closing bracket for interpolation.'\n          );\n        } else if (ex.code === 'CHARACTER_PARSER:MISMATCHED_BRACKET') {\n          this.error('BRACKET_MISMATCH', ex.message);\n        } else {\n          throw ex;\n        }\n      }\n      tok.mustEscape = matchOfStringInterp[2] === '#';\n      tok.buffer = true;\n      tok.val = range.src;\n      this.assertExpression(range.src);\n\n      if (range.end + 1 < rest.length) {\n        rest = rest.substr(range.end + 1);\n        this.incrementColumn(range.end + 1);\n        this.tokens.push(this.tokEnd(tok));\n        this.addText(type, rest);\n      } else {\n        this.incrementColumn(rest.length);\n        this.tokens.push(this.tokEnd(tok));\n      }\n      return;\n    }\n\n    value = prefix + value;\n    tok = this.tok(type, value);\n    this.incrementColumn(value.length + escaped);\n    this.tokens.push(this.tokEnd(tok));\n  },\n\n  text: function() {\n    var tok =\n      this.scan(/^(?:\\| ?| )([^\\n]+)/, 'text') ||\n      this.scan(/^( )/, 'text') ||\n      this.scan(/^\\|( ?)/, 'text');\n    if (tok) {\n      this.addText('text', tok.val);\n      return true;\n    }\n  },\n\n  textHtml: function() {\n    var tok = this.scan(/^(<[^\\n]*)/, 'text-html');\n    if (tok) {\n      this.addText('text-html', tok.val);\n      return true;\n    }\n  },\n\n  /**\n   * Dot.\n   */\n\n  dot: function() {\n    var tok;\n    if ((tok = this.scanEndOfLine(/^\\./, 'dot'))) {\n      this.tokens.push(this.tokEnd(tok));\n      this.callLexerFunction('pipelessText');\n      return true;\n    }\n  },\n\n  /**\n   * Extends.\n   */\n\n  extends: function() {\n    var tok = this.scan(/^extends?(?= |$|\\n)/, 'extends');\n    if (tok) {\n      this.tokens.push(this.tokEnd(tok));\n      if (!this.callLexerFunction('path')) {\n        this.error('NO_EXTENDS_PATH', 'missing path for extends');\n      }\n      return true;\n    }\n    if (this.scan(/^extends?\\b/)) {\n      this.error('MALFORMED_EXTENDS', 'malformed extends');\n    }\n  },\n\n  /**\n   * Block prepend.\n   */\n\n  prepend: function() {\n    var captures;\n    if ((captures = /^(?:block +)?prepend +([^\\n]+)/.exec(this.input))) {\n      var name = captures[1].trim();\n      var comment = '';\n      if (name.indexOf('//') !== -1) {\n        comment =\n          '//' +\n          name\n            .split('//')\n            .slice(1)\n            .join('//');\n        name = name.split('//')[0].trim();\n      }\n      if (!name) return;\n      var tok = this.tok('block', name);\n      var len = captures[0].length - comment.length;\n      while (this.whitespaceRe.test(this.input.charAt(len - 1))) len--;\n      this.incrementColumn(len);\n      tok.mode = 'prepend';\n      this.tokens.push(this.tokEnd(tok));\n      this.consume(captures[0].length - comment.length);\n      this.incrementColumn(captures[0].length - comment.length - len);\n      return true;\n    }\n  },\n\n  /**\n   * Block append.\n   */\n\n  append: function() {\n    var captures;\n    if ((captures = /^(?:block +)?append +([^\\n]+)/.exec(this.input))) {\n      var name = captures[1].trim();\n      var comment = '';\n      if (name.indexOf('//') !== -1) {\n        comment =\n          '//' +\n          name\n            .split('//')\n            .slice(1)\n            .join('//');\n        name = name.split('//')[0].trim();\n      }\n      if (!name) return;\n      var tok = this.tok('block', name);\n      var len = captures[0].length - comment.length;\n      while (this.whitespaceRe.test(this.input.charAt(len - 1))) len--;\n      this.incrementColumn(len);\n      tok.mode = 'append';\n      this.tokens.push(this.tokEnd(tok));\n      this.consume(captures[0].length - comment.length);\n      this.incrementColumn(captures[0].length - comment.length - len);\n      return true;\n    }\n  },\n\n  /**\n   * Block.\n   */\n\n  block: function() {\n    var captures;\n    if ((captures = /^block +([^\\n]+)/.exec(this.input))) {\n      var name = captures[1].trim();\n      var comment = '';\n      if (name.indexOf('//') !== -1) {\n        comment =\n          '//' +\n          name\n            .split('//')\n            .slice(1)\n            .join('//');\n        name = name.split('//')[0].trim();\n      }\n      if (!name) return;\n      var tok = this.tok('block', name);\n      var len = captures[0].length - comment.length;\n      while (this.whitespaceRe.test(this.input.charAt(len - 1))) len--;\n      this.incrementColumn(len);\n      tok.mode = 'replace';\n      this.tokens.push(this.tokEnd(tok));\n      this.consume(captures[0].length - comment.length);\n      this.incrementColumn(captures[0].length - comment.length - len);\n      return true;\n    }\n  },\n\n  /**\n   * Mixin Block.\n   */\n\n  mixinBlock: function() {\n    var tok;\n    if ((tok = this.scanEndOfLine(/^block/, 'mixin-block'))) {\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * Yield.\n   */\n\n  yield: function() {\n    var tok = this.scanEndOfLine(/^yield/, 'yield');\n    if (tok) {\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * Include.\n   */\n\n  include: function() {\n    var tok = this.scan(/^include(?=:| |$|\\n)/, 'include');\n    if (tok) {\n      this.tokens.push(this.tokEnd(tok));\n      while (this.callLexerFunction('filter', {inInclude: true}));\n      if (!this.callLexerFunction('path')) {\n        if (/^[^ \\n]+/.test(this.input)) {\n          // if there is more text\n          this.fail();\n        } else {\n          // if not\n          this.error('NO_INCLUDE_PATH', 'missing path for include');\n        }\n      }\n      return true;\n    }\n    if (this.scan(/^include\\b/)) {\n      this.error('MALFORMED_INCLUDE', 'malformed include');\n    }\n  },\n\n  /**\n   * Path\n   */\n\n  path: function() {\n    var tok = this.scanEndOfLine(/^ ([^\\n]+)/, 'path');\n    if (tok && (tok.val = tok.val.trim())) {\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * Case.\n   */\n\n  case: function() {\n    var tok = this.scanEndOfLine(/^case +([^\\n]+)/, 'case');\n    if (tok) {\n      this.incrementColumn(-tok.val.length);\n      this.assertExpression(tok.val);\n      this.incrementColumn(tok.val.length);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n    if (this.scan(/^case\\b/)) {\n      this.error('NO_CASE_EXPRESSION', 'missing expression for case');\n    }\n  },\n\n  /**\n   * When.\n   */\n\n  when: function() {\n    var tok = this.scanEndOfLine(/^when +([^:\\n]+)/, 'when');\n    if (tok) {\n      var parser = characterParser.default(tok.val);\n      while (parser.isNesting() || parser.isString()) {\n        var rest = /:([^:\\n]+)/.exec(this.input);\n        if (!rest) break;\n\n        tok.val += rest[0];\n        this.consume(rest[0].length);\n        this.incrementColumn(rest[0].length);\n        parser = characterParser.default(tok.val);\n      }\n\n      this.incrementColumn(-tok.val.length);\n      this.assertExpression(tok.val);\n      this.incrementColumn(tok.val.length);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n    if (this.scan(/^when\\b/)) {\n      this.error('NO_WHEN_EXPRESSION', 'missing expression for when');\n    }\n  },\n\n  /**\n   * Default.\n   */\n\n  default: function() {\n    var tok = this.scanEndOfLine(/^default/, 'default');\n    if (tok) {\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n    if (this.scan(/^default\\b/)) {\n      this.error(\n        'DEFAULT_WITH_EXPRESSION',\n        'default should not have an expression'\n      );\n    }\n  },\n\n  /**\n   * Call mixin.\n   */\n\n  call: function() {\n    var tok, captures, increment;\n    if ((captures = /^\\+(\\s*)(([-\\w]+)|(#\\{))/.exec(this.input))) {\n      // try to consume simple or interpolated call\n      if (captures[3]) {\n        // simple call\n        increment = captures[0].length;\n        this.consume(increment);\n        tok = this.tok('call', captures[3]);\n      } else {\n        // interpolated call\n        var match = this.bracketExpression(2 + captures[1].length);\n        increment = match.end + 1;\n        this.consume(increment);\n        this.assertExpression(match.src);\n        tok = this.tok('call', '#{' + match.src + '}');\n      }\n\n      this.incrementColumn(increment);\n\n      tok.args = null;\n      // Check for args (not attributes)\n      if ((captures = /^ *\\(/.exec(this.input))) {\n        var range = this.bracketExpression(captures[0].length - 1);\n        if (!/^\\s*[-\\w]+ *=/.test(range.src)) {\n          // not attributes\n          this.incrementColumn(1);\n          this.consume(range.end + 1);\n          tok.args = range.src;\n          this.assertExpression('[' + tok.args + ']');\n          for (var i = 0; i <= tok.args.length; i++) {\n            if (tok.args[i] === '\\n') {\n              this.incrementLine(1);\n            } else {\n              this.incrementColumn(1);\n            }\n          }\n        }\n      }\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * Mixin.\n   */\n\n  mixin: function() {\n    var captures;\n    if ((captures = /^mixin +([-\\w]+)(?: *\\((.*)\\))? */.exec(this.input))) {\n      this.consume(captures[0].length);\n      var tok = this.tok('mixin', captures[1]);\n      tok.args = captures[2] || null;\n      this.incrementColumn(captures[0].length);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * Conditional.\n   */\n\n  conditional: function() {\n    var captures;\n    if ((captures = /^(if|unless|else if|else)\\b([^\\n]*)/.exec(this.input))) {\n      this.consume(captures[0].length);\n      var type = captures[1].replace(/ /g, '-');\n      var js = captures[2] && captures[2].trim();\n      // type can be \"if\", \"else-if\" and \"else\"\n      var tok = this.tok(type, js);\n      this.incrementColumn(captures[0].length - js.length);\n\n      switch (type) {\n        case 'if':\n        case 'else-if':\n          this.assertExpression(js);\n          break;\n        case 'unless':\n          this.assertExpression(js);\n          tok.val = '!(' + js + ')';\n          tok.type = 'if';\n          break;\n        case 'else':\n          if (js) {\n            this.error(\n              'ELSE_CONDITION',\n              '`else` cannot have a condition, perhaps you meant `else if`'\n            );\n          }\n          break;\n      }\n      this.incrementColumn(js.length);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * While.\n   */\n\n  while: function() {\n    var captures, tok;\n    if ((captures = /^while +([^\\n]+)/.exec(this.input))) {\n      this.consume(captures[0].length);\n      this.assertExpression(captures[1]);\n      tok = this.tok('while', captures[1]);\n      this.incrementColumn(captures[0].length);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n    if (this.scan(/^while\\b/)) {\n      this.error('NO_WHILE_EXPRESSION', 'missing expression for while');\n    }\n  },\n\n  /**\n   * Each.\n   */\n\n  each: function() {\n    var captures;\n    if (\n      (captures = /^(?:each|for) +([a-zA-Z_$][\\w$]*)(?: *, *([a-zA-Z_$][\\w$]*))? * in *([^\\n]+)/.exec(\n        this.input\n      ))\n    ) {\n      this.consume(captures[0].length);\n      var tok = this.tok('each', captures[1]);\n      tok.key = captures[2] || null;\n      this.incrementColumn(captures[0].length - captures[3].length);\n      this.assertExpression(captures[3]);\n      tok.code = captures[3];\n      this.incrementColumn(captures[3].length);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n    const name = /^each\\b/.exec(this.input) ? 'each' : 'for';\n    if (this.scan(/^(?:each|for)\\b/)) {\n      this.error(\n        'MALFORMED_EACH',\n        'This `' +\n          name +\n          '` has a syntax error. `' +\n          name +\n          '` statements should be of the form: `' +\n          name +\n          ' VARIABLE_NAME of JS_EXPRESSION`'\n      );\n    }\n    if (\n      (captures = /^- *(?:each|for) +([a-zA-Z_$][\\w$]*)(?: *, *([a-zA-Z_$][\\w$]*))? +in +([^\\n]+)/.exec(\n        this.input\n      ))\n    ) {\n      this.error(\n        'MALFORMED_EACH',\n        'Pug each and for should no longer be prefixed with a dash (\"-\"). They are pug keywords and not part of JavaScript.'\n      );\n    }\n  },\n\n  /**\n   * EachOf.\n   */\n\n  eachOf: function() {\n    var captures;\n    if ((captures = /^(?:each|for) (.*?) of *([^\\n]+)/.exec(this.input))) {\n      this.consume(captures[0].length);\n      var tok = this.tok('eachOf', captures[1]);\n      tok.value = captures[1];\n      this.incrementColumn(captures[0].length - captures[2].length);\n      this.assertExpression(captures[2]);\n      tok.code = captures[2];\n      this.incrementColumn(captures[2].length);\n      this.tokens.push(this.tokEnd(tok));\n\n      if (\n        !(\n          /^[a-zA-Z_$][\\w$]*$/.test(tok.value.trim()) ||\n          /^\\[ *[a-zA-Z_$][\\w$]* *\\, *[a-zA-Z_$][\\w$]* *\\]$/.test(\n            tok.value.trim()\n          )\n        )\n      ) {\n        this.error(\n          'MALFORMED_EACH_OF_LVAL',\n          'The value variable for each must either be a valid identifier (e.g. `item`) or a pair of identifiers in square brackets (e.g. `[key, value]`).'\n        );\n      }\n\n      return true;\n    }\n    if (\n      (captures = /^- *(?:each|for) +([a-zA-Z_$][\\w$]*)(?: *, *([a-zA-Z_$][\\w$]*))? +of +([^\\n]+)/.exec(\n        this.input\n      ))\n    ) {\n      this.error(\n        'MALFORMED_EACH',\n        'Pug each and for should not be prefixed with a dash (\"-\"). They are pug keywords and not part of JavaScript.'\n      );\n    }\n  },\n\n  /**\n   * Code.\n   */\n\n  code: function() {\n    var captures;\n    if ((captures = /^(!?=|-)[ \\t]*([^\\n]+)/.exec(this.input))) {\n      var flags = captures[1];\n      var code = captures[2];\n      var shortened = 0;\n      if (this.interpolated) {\n        var parsed;\n        try {\n          parsed = characterParser.parseUntil(code, ']');\n        } catch (err) {\n          if (err.index !== undefined) {\n            this.incrementColumn(captures[0].length - code.length + err.index);\n          }\n          if (err.code === 'CHARACTER_PARSER:END_OF_STRING_REACHED') {\n            this.error(\n              'NO_END_BRACKET',\n              'End of line was reached with no closing bracket for interpolation.'\n            );\n          } else if (err.code === 'CHARACTER_PARSER:MISMATCHED_BRACKET') {\n            this.error('BRACKET_MISMATCH', err.message);\n          } else {\n            throw err;\n          }\n        }\n        shortened = code.length - parsed.end;\n        code = parsed.src;\n      }\n      var consumed = captures[0].length - shortened;\n      this.consume(consumed);\n      var tok = this.tok('code', code);\n      tok.mustEscape = flags.charAt(0) === '=';\n      tok.buffer = flags.charAt(0) === '=' || flags.charAt(1) === '=';\n\n      // p #[!=    abc] hey\n      //     ^              original colno\n      //     -------------- captures[0]\n      //           -------- captures[2]\n      //     ------         captures[0] - captures[2]\n      //           ^        after colno\n\n      // =   abc\n      // ^                  original colno\n      // -------            captures[0]\n      //     ---            captures[2]\n      // ----               captures[0] - captures[2]\n      //     ^              after colno\n      this.incrementColumn(captures[0].length - captures[2].length);\n      if (tok.buffer) this.assertExpression(code);\n      this.tokens.push(tok);\n\n      // p #[!=    abc] hey\n      //           ^        original colno\n      //              ----- shortened\n      //           ---      code\n      //              ^     after colno\n\n      // =   abc\n      //     ^              original colno\n      //                    shortened\n      //     ---            code\n      //        ^           after colno\n      this.incrementColumn(code.length);\n      this.tokEnd(tok);\n      return true;\n    }\n  },\n\n  /**\n   * Block code.\n   */\n  blockCode: function() {\n    var tok;\n    if ((tok = this.scanEndOfLine(/^-/, 'blockcode'))) {\n      this.tokens.push(this.tokEnd(tok));\n      this.interpolationAllowed = false;\n      this.callLexerFunction('pipelessText');\n      return true;\n    }\n  },\n\n  /**\n   * Attribute Name.\n   */\n  attribute: function(str) {\n    var quote = '';\n    var quoteRe = /['\"]/;\n    var key = '';\n    var i;\n\n    // consume all whitespace before the key\n    for (i = 0; i < str.length; i++) {\n      if (!this.whitespaceRe.test(str[i])) break;\n      if (str[i] === '\\n') {\n        this.incrementLine(1);\n      } else {\n        this.incrementColumn(1);\n      }\n    }\n\n    if (i === str.length) {\n      return '';\n    }\n\n    var tok = this.tok('attribute');\n\n    // quote?\n    if (quoteRe.test(str[i])) {\n      quote = str[i];\n      this.incrementColumn(1);\n      i++;\n    }\n\n    // start looping through the key\n    for (; i < str.length; i++) {\n      if (quote) {\n        if (str[i] === quote) {\n          this.incrementColumn(1);\n          i++;\n          break;\n        }\n      } else {\n        if (\n          this.whitespaceRe.test(str[i]) ||\n          str[i] === '!' ||\n          str[i] === '=' ||\n          str[i] === ','\n        ) {\n          break;\n        }\n      }\n\n      key += str[i];\n\n      if (str[i] === '\\n') {\n        this.incrementLine(1);\n      } else {\n        this.incrementColumn(1);\n      }\n    }\n\n    tok.name = key;\n\n    var valueResponse = this.attributeValue(str.substr(i));\n\n    if (valueResponse.val) {\n      tok.val = valueResponse.val;\n      tok.mustEscape = valueResponse.mustEscape;\n    } else {\n      // was a boolean attribute (ex: `input(disabled)`)\n      tok.val = true;\n      tok.mustEscape = true;\n    }\n\n    str = valueResponse.remainingSource;\n\n    this.tokens.push(this.tokEnd(tok));\n\n    for (i = 0; i < str.length; i++) {\n      if (!this.whitespaceRe.test(str[i])) {\n        break;\n      }\n      if (str[i] === '\\n') {\n        this.incrementLine(1);\n      } else {\n        this.incrementColumn(1);\n      }\n    }\n\n    if (str[i] === ',') {\n      this.incrementColumn(1);\n      i++;\n    }\n\n    return str.substr(i);\n  },\n\n  /**\n   * Attribute Value.\n   */\n  attributeValue: function(str) {\n    var quoteRe = /['\"]/;\n    var val = '';\n    var done, i, x;\n    var escapeAttr = true;\n    var state = characterParser.defaultState();\n    var col = this.colno;\n    var line = this.lineno;\n\n    // consume all whitespace before the equals sign\n    for (i = 0; i < str.length; i++) {\n      if (!this.whitespaceRe.test(str[i])) break;\n      if (str[i] === '\\n') {\n        line++;\n        col = 1;\n      } else {\n        col++;\n      }\n    }\n\n    if (i === str.length) {\n      return {remainingSource: str};\n    }\n\n    if (str[i] === '!') {\n      escapeAttr = false;\n      col++;\n      i++;\n      if (str[i] !== '=')\n        this.error(\n          'INVALID_KEY_CHARACTER',\n          'Unexpected character ' + str[i] + ' expected `=`'\n        );\n    }\n\n    if (str[i] !== '=') {\n      // check for anti-pattern `div(\"foo\"bar)`\n      if (i === 0 && str && !this.whitespaceRe.test(str[0]) && str[0] !== ',') {\n        this.error(\n          'INVALID_KEY_CHARACTER',\n          'Unexpected character ' + str[0] + ' expected `=`'\n        );\n      } else {\n        return {remainingSource: str};\n      }\n    }\n\n    this.lineno = line;\n    this.colno = col + 1;\n    i++;\n\n    // consume all whitespace before the value\n    for (; i < str.length; i++) {\n      if (!this.whitespaceRe.test(str[i])) break;\n      if (str[i] === '\\n') {\n        this.incrementLine(1);\n      } else {\n        this.incrementColumn(1);\n      }\n    }\n\n    line = this.lineno;\n    col = this.colno;\n\n    // start looping through the value\n    for (; i < str.length; i++) {\n      // if the character is in a string or in parentheses/brackets/braces\n      if (!(state.isNesting() || state.isString())) {\n        if (this.whitespaceRe.test(str[i])) {\n          done = false;\n\n          // find the first non-whitespace character\n          for (x = i; x < str.length; x++) {\n            if (!this.whitespaceRe.test(str[x])) {\n              // if it is a JavaScript punctuator, then assume that it is\n              // a part of the value\n              const isNotPunctuator = !characterParser.isPunctuator(str[x]);\n              const isQuote = quoteRe.test(str[x]);\n              const isColon = str[x] === ':';\n              const isSpreadOperator =\n                str[x] + str[x + 1] + str[x + 2] === '...';\n              if (\n                (isNotPunctuator || isQuote || isColon || isSpreadOperator) &&\n                this.assertExpression(val, true)\n              ) {\n                done = true;\n              }\n              break;\n            }\n          }\n\n          // if everything else is whitespace, return now so last attribute\n          // does not include trailing whitespace\n          if (done || x === str.length) {\n            break;\n          }\n        }\n\n        // if there's no whitespace and the character is not ',', the\n        // attribute did not end.\n        if (str[i] === ',' && this.assertExpression(val, true)) {\n          break;\n        }\n      }\n\n      state = characterParser.parseChar(str[i], state);\n      val += str[i];\n\n      if (str[i] === '\\n') {\n        line++;\n        col = 1;\n      } else {\n        col++;\n      }\n    }\n\n    this.assertExpression(val);\n\n    this.lineno = line;\n    this.colno = col;\n\n    return {val: val, mustEscape: escapeAttr, remainingSource: str.substr(i)};\n  },\n\n  /**\n   * Attributes.\n   */\n\n  attrs: function() {\n    var tok;\n\n    if ('(' == this.input.charAt(0)) {\n      tok = this.tok('start-attributes');\n      var index = this.bracketExpression().end;\n      var str = this.input.substr(1, index - 1);\n\n      this.incrementColumn(1);\n      this.tokens.push(this.tokEnd(tok));\n      this.assertNestingCorrect(str);\n      this.consume(index + 1);\n\n      while (str) {\n        str = this.attribute(str);\n      }\n\n      tok = this.tok('end-attributes');\n      this.incrementColumn(1);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * &attributes block\n   */\n  attributesBlock: function() {\n    if (/^&attributes\\b/.test(this.input)) {\n      var consumed = 11;\n      this.consume(consumed);\n      var tok = this.tok('&attributes');\n      this.incrementColumn(consumed);\n      var args = this.bracketExpression();\n      consumed = args.end + 1;\n      this.consume(consumed);\n      tok.val = args.src;\n      this.incrementColumn(consumed);\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * Indent | Outdent | Newline.\n   */\n\n  indent: function() {\n    var captures = this.scanIndentation();\n    var tok;\n\n    if (captures) {\n      var indents = captures[1].length;\n\n      this.incrementLine(1);\n      this.consume(indents + 1);\n\n      if (' ' == this.input[0] || '\\t' == this.input[0]) {\n        this.error(\n          'INVALID_INDENTATION',\n          'Invalid indentation, you can use tabs or spaces but not both'\n        );\n      }\n\n      // blank line\n      if ('\\n' == this.input[0]) {\n        this.interpolationAllowed = true;\n        return this.tokEnd(this.tok('newline'));\n      }\n\n      // outdent\n      if (indents < this.indentStack[0]) {\n        var outdent_count = 0;\n        while (this.indentStack[0] > indents) {\n          if (this.indentStack[1] < indents) {\n            this.error(\n              'INCONSISTENT_INDENTATION',\n              'Inconsistent indentation. Expecting either ' +\n                this.indentStack[1] +\n                ' or ' +\n                this.indentStack[0] +\n                ' spaces/tabs.'\n            );\n          }\n          outdent_count++;\n          this.indentStack.shift();\n        }\n        while (outdent_count--) {\n          this.colno = 1;\n          tok = this.tok('outdent');\n          this.colno = this.indentStack[0] + 1;\n          this.tokens.push(this.tokEnd(tok));\n        }\n        // indent\n      } else if (indents && indents != this.indentStack[0]) {\n        tok = this.tok('indent', indents);\n        this.colno = 1 + indents;\n        this.tokens.push(this.tokEnd(tok));\n        this.indentStack.unshift(indents);\n        // newline\n      } else {\n        tok = this.tok('newline');\n        this.colno = 1 + Math.min(this.indentStack[0] || 0, indents);\n        this.tokens.push(this.tokEnd(tok));\n      }\n\n      this.interpolationAllowed = true;\n      return true;\n    }\n  },\n\n  pipelessText: function pipelessText(indents) {\n    while (this.callLexerFunction('blank'));\n\n    var captures = this.scanIndentation();\n\n    indents = indents || (captures && captures[1].length);\n    if (indents > this.indentStack[0]) {\n      this.tokens.push(this.tokEnd(this.tok('start-pipeless-text')));\n      var tokens = [];\n      var token_indent = [];\n      var isMatch;\n      // Index in this.input. Can't use this.consume because we might need to\n      // retry lexing the block.\n      var stringPtr = 0;\n      do {\n        // text has `\\n` as a prefix\n        var i = this.input.substr(stringPtr + 1).indexOf('\\n');\n        if (-1 == i) i = this.input.length - stringPtr - 1;\n        var str = this.input.substr(stringPtr + 1, i);\n        var lineCaptures = this.indentRe.exec('\\n' + str);\n        var lineIndents = lineCaptures && lineCaptures[1].length;\n        isMatch = lineIndents >= indents;\n        token_indent.push(isMatch);\n        isMatch = isMatch || !str.trim();\n        if (isMatch) {\n          // consume test along with `\\n` prefix if match\n          stringPtr += str.length + 1;\n          tokens.push(str.substr(indents));\n        } else if (lineIndents > this.indentStack[0]) {\n          // line is indented less than the first line but is still indented\n          // need to retry lexing the text block\n          this.tokens.pop();\n          return pipelessText.call(this, lineCaptures[1].length);\n        }\n      } while (this.input.length - stringPtr && isMatch);\n      this.consume(stringPtr);\n      while (this.input.length === 0 && tokens[tokens.length - 1] === '')\n        tokens.pop();\n      tokens.forEach(\n        function(token, i) {\n          var tok;\n          this.incrementLine(1);\n          if (i !== 0) tok = this.tok('newline');\n          if (token_indent[i]) this.incrementColumn(indents);\n          if (tok) this.tokens.push(this.tokEnd(tok));\n          this.addText('text', token);\n        }.bind(this)\n      );\n      this.tokens.push(this.tokEnd(this.tok('end-pipeless-text')));\n      return true;\n    }\n  },\n\n  /**\n   * Slash.\n   */\n\n  slash: function() {\n    var tok = this.scan(/^\\//, 'slash');\n    if (tok) {\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  /**\n   * ':'\n   */\n\n  colon: function() {\n    var tok = this.scan(/^: +/, ':');\n    if (tok) {\n      this.tokens.push(this.tokEnd(tok));\n      return true;\n    }\n  },\n\n  fail: function() {\n    this.error(\n      'UNEXPECTED_TEXT',\n      'unexpected text \"' + this.input.substr(0, 5) + '\"'\n    );\n  },\n\n  callLexerFunction: function(func) {\n    var rest = [];\n    for (var i = 1; i < arguments.length; i++) {\n      rest.push(arguments[i]);\n    }\n    var pluginArgs = [this].concat(rest);\n    for (var i = 0; i < this.plugins.length; i++) {\n      var plugin = this.plugins[i];\n      if (plugin[func] && plugin[func].apply(plugin, pluginArgs)) {\n        return true;\n      }\n    }\n    return this[func].apply(this, rest);\n  },\n\n  /**\n   * Move to the next token\n   *\n   * @api private\n   */\n\n  advance: function() {\n    return (\n      this.callLexerFunction('blank') ||\n      this.callLexerFunction('eos') ||\n      this.callLexerFunction('endInterpolation') ||\n      this.callLexerFunction('yield') ||\n      this.callLexerFunction('doctype') ||\n      this.callLexerFunction('interpolation') ||\n      this.callLexerFunction('case') ||\n      this.callLexerFunction('when') ||\n      this.callLexerFunction('default') ||\n      this.callLexerFunction('extends') ||\n      this.callLexerFunction('append') ||\n      this.callLexerFunction('prepend') ||\n      this.callLexerFunction('block') ||\n      this.callLexerFunction('mixinBlock') ||\n      this.callLexerFunction('include') ||\n      this.callLexerFunction('mixin') ||\n      this.callLexerFunction('call') ||\n      this.callLexerFunction('conditional') ||\n      this.callLexerFunction('eachOf') ||\n      this.callLexerFunction('each') ||\n      this.callLexerFunction('while') ||\n      this.callLexerFunction('tag') ||\n      this.callLexerFunction('filter') ||\n      this.callLexerFunction('blockCode') ||\n      this.callLexerFunction('code') ||\n      this.callLexerFunction('id') ||\n      this.callLexerFunction('dot') ||\n      this.callLexerFunction('className') ||\n      this.callLexerFunction('attrs') ||\n      this.callLexerFunction('attributesBlock') ||\n      this.callLexerFunction('indent') ||\n      this.callLexerFunction('text') ||\n      this.callLexerFunction('textHtml') ||\n      this.callLexerFunction('comment') ||\n      this.callLexerFunction('slash') ||\n      this.callLexerFunction('colon') ||\n      this.fail()\n    );\n  },\n\n  /**\n   * Return an array of tokens for the current file\n   *\n   * @returns {Array.<Token>}\n   * @api public\n   */\n  getTokens: function() {\n    while (!this.ended) {\n      this.callLexerFunction('advance');\n    }\n    return this.tokens;\n  },\n};\n"
  },
  {
    "path": "packages/pug-lexer/package.json",
    "content": "{\n  \"name\": \"pug-lexer\",\n  \"version\": \"4.1.0\",\n  \"description\": \"The pug lexer (takes a string and converts it to an array of tokens)\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"character-parser\": \"^4.0.0\",\n    \"is-expression\": \"^4.0.0\",\n    \"pug-error\": \"^1.3.3\"\n  },\n  \"devDependencies\": {\n    \"acorn\": \"^7.1.1\",\n    \"acorn-walk\": \"^7.1.1\"\n  },\n  \"files\": [\n    \"index.js\",\n    \"index.d.ts\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-lexer\"\n  },\n  \"author\": \"ForbesLindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-lexer/test/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`attr-es2015.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 50,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var avatar = '219b77f9d21de75e81851b6b886057c7'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"avatar-div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 88,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"style\",\n    \"type\": \"attribute\",\n    \"val\": \"\\`background-image: url(https://www.gravatar.com/avatar/\\${avatar})\\`\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 89,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 88,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attr-es2015.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`attribute-invalid-expression.pug 1`] = `\nObject {\n  \"code\": \"PUG:SYNTAX_ERROR\",\n  \"column\": 5,\n  \"line\": 2,\n  \"msg\": \"Syntax Error: Unterminated string constant\",\n}\n`;\n\nexports[`attrs.js.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var id = 5\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"function answer() {\n  return 42;\n}\n\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/user/' + id\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'button'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/user/' + id\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 27,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'button'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 45,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"meta\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"key\",\n    \"type\": \"attribute\",\n    \"val\": \"'answer'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"answer()\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 34,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"['class1', 'class2']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"tag-class\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"['class1', 'class2']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 41,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/user/' + id\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'button'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 36,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/user/' + id\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'button'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 44,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"meta\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 11,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"key\",\n    \"type\": \"attribute\",\n    \"val\": \"'answer'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 11,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"answer()\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"['class1', 'class2']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"tag-class\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"['class1', 'class2']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 41,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"id\",\n    \"type\": \"attribute\",\n    \"val\": \"id\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"{foo: 'bar'}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var bar = null\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"null\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 17,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 47,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"{baz: 'baz'}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"...object\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 20,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"...object\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 20,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"after\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"after\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"before\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"before\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 21,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"...object\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"before\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"before\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 22,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"...object\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 22,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"after\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"after\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 44,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`attrs.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/contact'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"contact\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/save'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"button\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"save\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"baz\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo, bar, baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'((foo))'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"(1) ? 1 : 0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 35,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"select\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"option\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"selected\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"option\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"selected\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"class:\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"pattern\",\n    \"type\": \"attribute\",\n    \"val\": \"'\\\\\\\\\\\\\\\\S+'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/contact'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"contact\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/save'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"button\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"save\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 14,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 14,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"baz\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo, bar, baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 15,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'((foo))'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 16,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"(1) ? 1 : 0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 34,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"select\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"option\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 18,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 18,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"selected\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"option\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 19,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"selected\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 19,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"class:\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 21,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"pattern\",\n    \"type\": \"attribute\",\n    \"val\": \"'\\\\\\\\\\\\\\\\S+'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"terse\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"true\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 23,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"date\",\n    \"type\": \"attribute\",\n    \"val\": \"new Date(0)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 25,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"abc\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 26,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"def\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 27,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"abc\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 28,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"def\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 29,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"abc\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 30,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"def\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 31,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"abc\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 32,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"def\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 33,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"abc\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 34,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"def\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 35,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"abc\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 36,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"def\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var attrs = {foo: 'bar', bar: '<baz>'}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attrs\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 42,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 42,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"bar\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 43,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 43,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`attrs.unescaped.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/x-template'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"name\": \"id\",\n    \"type\": \"attribute\",\n    \"val\": \"'user-<%= user.id %>'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"<%= user.title %>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs.unescaped.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`attrs-data.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var user = { name: 'tobi' }\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-user\",\n    \"type\": \"attribute\",\n    \"val\": \"user\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-items\",\n    \"type\": \"attribute\",\n    \"val\": \"[1,2,3]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-username\",\n    \"type\": \"attribute\",\n    \"val\": \"'tobi'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-escaped\",\n    \"type\": \"attribute\",\n    \"val\": \"{message: \\\\\"Let's rock!\\\\\"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 42,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 60,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-ampersand\",\n    \"type\": \"attribute\",\n    \"val\": \"{message: \\\\\"a quote: &quot; this & that\\\\\"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 61,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 60,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-epoc\",\n    \"type\": \"attribute\",\n    \"val\": \"new Date(0)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/attrs-data.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`basic.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/basic.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`blanks.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blanks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`block-code.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"blockcode\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"list = [\\\\\"uno\\\\\", \\\\\"dos\\\\\", \\\\\"tres\\\\\",\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"        \\\\\"cuatro\\\\\", \\\\\"cinco\\\\\", \\\\\"seis\\\\\"];\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 70,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" Without a block, the element is accepted and no code is generated\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"blockcode\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"code\": \"list\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"blockcode\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"string = item.charAt(0)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  .toUpperCase() +\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"item.slice(1);\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"string\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`block-expansion.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'#'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'#'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`block-expansion.shorthands.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"list-item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 2,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/block-expansion.shorthands.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`blockquote.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"figure\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"blockquote\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 123,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Try to define yourself by what you do, and you&#8217;ll burnout every time. You are. That is enough. I rest in that.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"figcaption\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 47,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"from @thefray at 1:43pm on May 10\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 47,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 47,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 47,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blockquote.pug\",\n      \"start\": Object {\n        \"column\": 47,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`blocks-in-blocks.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 48,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"./auxiliary/blocks-in-blocks-layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Page 2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`blocks-in-if.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 49,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" see https://github.com/pugjs/pug/issues/1589\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var ajax = true\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"if( ajax )\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" return only contents if ajax requests\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"contents\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"ajax contents\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"else\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" return all html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 12,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"meta\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 15,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"charset\",\n    \"type\": \"attribute\",\n    \"val\": \"'utf8'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 34,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"sample\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 16,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 18,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"contents\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 20,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"all contetns\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/blocks-in-if.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`case.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var friends = 1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"case\",\n    \"val\": \"friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have no friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have a friend\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"default\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 27,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var friends = 0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"case\",\n    \"val\": \"friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have very few friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"default\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 14,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 16,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var friend = 'Tim:G'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"case\",\n    \"val\": \"friend\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"'Tim:G'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 18,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Friend is a string\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"{tim: 'g'}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 19,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Friend is an object\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`case-blocks.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var friends = 1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"case\",\n    \"val\": \"friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have no friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have a friend\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"default\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"you have \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" friends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/case-blocks.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`case-with-invalid-expression.pug 1`] = `\nObject {\n  \"code\": \"PUG:SYNTAX_ERROR\",\n  \"column\": 22,\n  \"line\": 1,\n  \"msg\": \"Syntax Error: Unexpected token\",\n}\n`;\n\nexports[`case-with-no-expression.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_CASE_EXPRESSION\",\n  \"column\": 5,\n  \"line\": 1,\n  \"msg\": \"missing expression for case\",\n}\n`;\n\nexports[`classes.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"['foo', 'bar', 'baz']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"foo-bar_baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"{foo: true, bar: false, baz: true}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 43,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"-foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"3foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`classes-empty.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"''\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"null\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"undefined\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/classes-empty.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`code.conditionals.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"if (true)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"else\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"if (true) {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"} else {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"true\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"!(true)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"'nested'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"'works'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"yay\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" allow empty blocks\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"true\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bing\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bing\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"else-if\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.conditionals.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`code.escape.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.escape.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"'<script>'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.escape.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"'<script>'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.escape.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`code.iteration.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var items = [1,2,3]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"items.forEach(function(item){\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"})\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var items = [1,2,3]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"items\",\n    \"key\": \"i\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'item-' + i\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"items\",\n    \"key\": \"i\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 17,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"items\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"$item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 21,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"$item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var nums = [1, 2, 3]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var letters = ['a', 'b', 'c']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"letters\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"l\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"code\": \"nums\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"n\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 29,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"n\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \": \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 29,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"l\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var count = 1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 66,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var counter = function() { return [count++, count++, count++] }\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"counter()\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"n\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 35,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"n\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.iteration.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`code.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"null\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"undefined\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"''\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"null\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"undefined\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"''\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"0\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/code.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"one\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"two\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  li foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"// inline follow\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"li three\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"// inline followed by tags\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  li four\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \"if IE lt 9\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"// inline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"script(src='/lame.js')\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"// end-inline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"five\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"// not a comment\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments.source.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"s/s.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" test/cases/comments.source.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"test/cases/comments.source.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"when\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"()\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments.source.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments-in-case.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 3,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var s = 'this'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"case\",\n    \"val\": \"s\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 5,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" Comment\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"'this'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"It's this!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"when\",\n    \"val\": \"'that'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"It's that!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/comments-in-case.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`default-with-expression.pug 1`] = `\nObject {\n  \"code\": \"PUG:DEFAULT_WITH_EXPRESSION\",\n  \"column\": 8,\n  \"line\": 1,\n  \"msg\": \"default should not have an expression\",\n}\n`;\n\nexports[`doctype.custom.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"custom stuff\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.custom.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`doctype.default.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.default.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`doctype.keyword.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.keyword.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/doctype.keyword.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`each.else.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var users = []\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"users\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"user\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"user.name\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"no users!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 70,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var users = [{ name: 'tobi', friends: ['loki'] }, { name: 'loki' }]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"users\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"code\": \"users\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"user\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 16,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"user.name\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"no users!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var user = { name: 'tobi', age: 10 }\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"user\",\n    \"key\": \"key\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 24,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"key\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \": \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 24,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"user has no details!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var user = {}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"user\",\n    \"key\": \"key\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"prop\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 32,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"key\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \": \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 32,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"user has no details!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var user = Object.create(null)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 37,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 37,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 37,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 37,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"user.name = 'tobi'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"user\",\n    \"key\": \"key\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 41,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"key\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \": \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 41,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"user has no details!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 45,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 45,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 74,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 45,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var ofKeyword = [{ name: 'tobi', friends: ['loki'] }, { name: 'loki' }]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 47,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 47,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"ofKeyword\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 47,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 47,\n      },\n    },\n    \"type\": \"eachOf\",\n    \"val\": \"val\",\n    \"value\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 48,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 48,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 48,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 48,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 48,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 48,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"user.name\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 50,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 50,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 50,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 50,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 50,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 50,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 51,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 51,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"[\\\\\"variable with of keyword\\\\\"]\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 51,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 51,\n      },\n    },\n    \"type\": \"eachOf\",\n    \"val\": \"val\",\n    \"value\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 52,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 52,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 52,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 52,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 52,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 52,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 52,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 52,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 52,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 52,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 52,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/each.else.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 52,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`else-with-condition.pug 1`] = `\nObject {\n  \"code\": \"PUG:ELSE_CONDITION\",\n  \"column\": 6,\n  \"line\": 3,\n  \"msg\": \"\\`else\\` cannot have a condition, perhaps you meant \\`else if\\`\",\n}\n`;\n\nexports[`escape-chars.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-chars.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-chars.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-chars.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-chars.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"var re = /\\\\\\\\d+/;\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-chars.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-chars.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`escape-test.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"escape-test\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"textarea\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 12,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 108,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var txt = '<param name=\\\\\"flashvars\\\\\" value=\\\\\"a=&quot;value_a&quot;&b=&quot;value_b&quot;&c=3\\\\\"/>'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"txt\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escape-test.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`escaping-class-attribute.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"attr\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": false,\n    \"name\": \"attr\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": false,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": false,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"<%= bar %> lol rofl\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": false,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"<%= bar %> lol rofl <%= lmao %>\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 45,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/escaping-class-attribute.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`extends-no-path.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_EXTENDS_PATH\",\n  \"column\": 8,\n  \"line\": 1,\n  \"msg\": \"missing path for extends\",\n}\n`;\n\nexports[`filter-in-include.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filter-in-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filter-in-include.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"./auxiliary/filter-in-include.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filter-in-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filter-in-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.coffeescript.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/javascript'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"coffee-script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"regexp = /\\\\\\\\n/\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"coffee-script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"minify\",\n    \"type\": \"attribute\",\n    \"val\": \"true\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"math =\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  square: (value) -> value * value\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.coffeescript.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.custom.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"custom\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"opt\",\n    \"type\": \"attribute\",\n    \"val\": \"'val'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"num\",\n    \"type\": \"attribute\",\n    \"val\": \"2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Line 1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Line 2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Line 4\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.custom.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.include.custom.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"pre\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"custom\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"opt\",\n    \"type\": \"attribute\",\n    \"val\": \"'val'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"num\",\n    \"type\": \"attribute\",\n    \"val\": \"2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 65,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"filters.include.custom.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.custom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.include.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"markdown-it\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"some.md\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"coffee-script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"minify\",\n    \"type\": \"attribute\",\n    \"val\": \"true\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 40,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 70,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 42,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"include-filter-coffee.coffee\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"cdata\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"coffee-script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 34,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 47,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 35,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"minify\",\n    \"type\": \"attribute\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 48,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 47,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 77,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 49,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"include-filter-coffee.coffee\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.inline.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"before \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"cdata\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"inside\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" after\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.inline.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.less.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"style\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"text/css\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"less\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"@pad: 15px;\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"body {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  padding: @pad;\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.less.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.markdown.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"markdown-it\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"This is _some_ awesome **markdown**\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"whoop.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.markdown.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.nested.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"cdata\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"uglify-js\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"(function() {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  console.log('test')\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"})()\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"cdata\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"uglify-js\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"coffee-script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"(->\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  console.log 'test'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \")()\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.nested.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.stylus.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"style\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"text/css\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"stylus\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  padding: 50px\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.stylus.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters.verbatim.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 1,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"verbatim\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"filters are applied at compile time\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"with no #[b interpolation] at #{all}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters.verbatim.pug\",\n      \"start\": Object {\n        \"column\": 41,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`filters-empty.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var users = [{ name: 'tobi', age: 2 }]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"fb:users\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"code\": \"users\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"user\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"fb:user\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"age\",\n    \"type\": \"attribute\",\n    \"val\": \"user.age\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"cdata\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/filters-empty.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`html.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var version = 1449104952939\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"<ul>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"<li>foo</li>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"<li>bar</li>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"<li>baz</li>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"</ul>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"<!--build:js /js/app.min.js?v=\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"version\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 41,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"-->\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"<!--endbuild-->\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"You can <em>embed</em> html as well.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 59,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text-html\",\n    \"val\": \"<strong>Even</strong> as the body of a block expansion.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`html5.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'checkbox'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"checked\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'checkbox'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"checked\",\n    \"type\": \"attribute\",\n    \"val\": \"true\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 36,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'checkbox'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"checked\",\n    \"type\": \"attribute\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/html5.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include.script.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"pet-template\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/x-template'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 43,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/pet.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.script.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include.yield.nested.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/yield-nested.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"some content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"and some more\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include.yield.nested.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include-extends-from-root.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-from-root.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-from-root.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"/auxiliary/extends-from-root.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-from-root.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-from-root.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include-extends-of-common-template.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-of-common-template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-of-common-template.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/extends-empty-block-1.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-of-common-template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-of-common-template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-of-common-template.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/extends-empty-block-2.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-of-common-template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-of-common-template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include-extends-relative.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-relative.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 48,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-relative.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"../cases/auxiliary/extends-relative.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-relative.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-extends-relative.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include-filter-no-path.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_INCLUDE_PATH\",\n  \"column\": 12,\n  \"line\": 1,\n  \"msg\": \"missing path for include\",\n}\n`;\n\nexports[`include-filter-no-path-2.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_INCLUDE_PATH\",\n  \"column\": 12,\n  \"line\": 1,\n  \"msg\": \"missing path for include\",\n}\n`;\n\nexports[`include-filter-no-space.pug 1`] = `\nObject {\n  \"code\": \"PUG:UNEXPECTED_TEXT\",\n  \"column\": 14,\n  \"line\": 1,\n  \"msg\": \"unexpected text \\\\\"foo.£\\\\\"\",\n}\n`;\n\nexports[`include-no-path.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_INCLUDE_PATH\",\n  \"column\": 8,\n  \"line\": 1,\n  \"msg\": \"missing path for include\",\n}\n`;\n\nexports[`include-only-text.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"include-only-text-body.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"em\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"hello world\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include-only-text-body.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text-body.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"The message is \\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text-body.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text-body.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"yield\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text-body.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text-body.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text-body.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-only-text-body.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include-with-text.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"include-with-text-head.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/caustic.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/app.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`include-with-text-head.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/javascript'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 34,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"alert('hello world');\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/include-with-text-head.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`includes.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/mixins.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/smile.html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/escapes.html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"text/javascript\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"verbatim\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/includable.js\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`includes-with-ext-js.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"pre\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"code\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"javascript-new-lines.js\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/includes-with-ext-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inconsistent-indentation.pug 1`] = `\nObject {\n  \"code\": \"PUG:INCONSISTENT_INDENTATION\",\n  \"column\": 1,\n  \"line\": 4,\n  \"msg\": \"Inconsistent indentation. Expecting either 2 or 6 spaces/tabs.\",\n}\n`;\n\nexports[`inheritance.alert-dialog.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/dialog.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Alert!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"I'm an alert!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.alert-dialog.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.defaults.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'keymaster.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'caustic.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.defaults.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.extend.include.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/layout.include.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Page\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"window-content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Awesome\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Now we can extend included blocks!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.extend.mixins.block.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 52,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/inheritance.extend.mixin.block.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Hello World!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.extend.mixins.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"title\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"args\": \"\\\\\"The meaning of life\\\\\"\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Foo bar baz!\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.extend.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Page\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.extend.recursive.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 59,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"/auxiliary/inheritance.extend.recursive-parent.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"parent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h4\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"child\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.recursive.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.extend.whitespace.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Page\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inheritance.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"auxiliary/layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Page\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inheritance.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inline-block-comment.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" Main content goes here\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"mode\": \"append\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" adding something to content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mode\": \"prepend\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 60,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" adding something to other end of content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-block-comment.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`inline-tag.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bing \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"strong\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" bong\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bing\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"strong\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"strong\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"'[foo]'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var foo = 'foo]'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bong\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bing\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"strong\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"strong\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"'[foo]'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 14,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var foo = 'foo]'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bong\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"#[strong escaped]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"#[\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"strong\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"escaped\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/inline-tag.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`intepolated-elements.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"rho\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'#'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'rho--modifier'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 42,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 60,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 44,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"with inline link\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 61,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 60,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 61,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 61,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some text \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"rho\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'#'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 52,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'rho--modifier'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 53,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 52,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 54,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 53,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 54,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 54,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some text \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"rho\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'#'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 52,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'rho--modifier'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 53,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 52,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 70,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 54,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"with inline link\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 71,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 70,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 71,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 71,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 71,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/intepolated-elements.pug\",\n      \"start\": Object {\n        \"column\": 71,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`interpolated-call.pug 1`] = `\nObject {\n  \"code\": \"PUG:BRACKET_MISMATCH\",\n  \"column\": 11,\n  \"line\": 5,\n  \"msg\": \"Mismatched Bracket: ]\",\n}\n`;\n\nexports[`interpolated-mixin.pug 1`] = `\nArray [\n  Object {\n    \"args\": \"url\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"linkit\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"url\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"url\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"This also works \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"args\": \"'http://www.bing.com'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 51,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"linkit\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 52,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 51,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 70,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 52,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" so hurrah for Pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 70,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolated-mixin.pug\",\n      \"start\": Object {\n        \"column\": 70,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`interpolation.escape.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var id = 42;\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"some\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"#{text}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"!{here}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"My ID \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"\\\\\"is {\\\\\" + id + \\\\\"}\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/interpolation.escape.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`invalid-class-name-1.pug 1`] = `\nObject {\n  \"code\": \"PUG:INVALID_CLASS_NAME\",\n  \"column\": 1,\n  \"line\": 1,\n  \"msg\": \"Class names must contain at least one letter or underscore.\",\n}\n`;\n\nexports[`invalid-class-name-2.pug 1`] = `\nObject {\n  \"code\": \"PUG:INVALID_CLASS_NAME\",\n  \"column\": 1,\n  \"line\": 1,\n  \"msg\": \"Class names must contain at least one letter or underscore.\",\n}\n`;\n\nexports[`invalid-class-name-3.pug 1`] = `\nObject {\n  \"code\": \"PUG:INVALID_CLASS_NAME\",\n  \"column\": 1,\n  \"line\": 1,\n  \"msg\": \"\\\\\"ä\\\\\" is not a valid class name.  Class names can only contain \\\\\"_\\\\\", \\\\\"-\\\\\", a-z and 0-9, and must contain at least one of \\\\\"_\\\\\", or a-z\",\n}\n`;\n\nexports[`invalid-id.pug 1`] = `\nObject {\n  \"code\": \"PUG:INVALID_ID\",\n  \"column\": 1,\n  \"line\": 1,\n  \"msg\": \"\\\\\"ä\\\\\" is not a valid ID.\",\n}\n`;\n\nexports[`layout.append.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"../fixtures/append/app-layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"append\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`layout.append.without-block.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 56,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"../fixtures/append-without-block/app-layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"append\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.append.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`layout.multi.append.prepend.block.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 60,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mode\": \"append\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 1,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"first\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"append\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Something appended to content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"mode\": \"prepend\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 1,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"first\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"prepend\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 48,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Something prepended to content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"mode\": \"append\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 1,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"last\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"append\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Last append must be most last\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"mode\": \"prepend\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 1,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"last\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"prepend\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 48,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Last prepend must appear at top\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"mode\": \"append\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 1,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 16,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"mode\": \"prepend\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 1,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 19,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`layout.prepend.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"../fixtures/prepend/app-layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"prepend\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`layout.prepend.without-block.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 57,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"../fixtures/prepend-without-block/app-layout.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"mode\": \"prepend\",\n    \"type\": \"block\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/layout.prepend.without-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`malformed-each.pug 1`] = `\nObject {\n  \"code\": \"PUG:MALFORMED_EACH\",\n  \"column\": 5,\n  \"line\": 1,\n  \"msg\": \"This \\`each\\` has a syntax error. \\`each\\` statements should be of the form: \\`each VARIABLE_NAME of JS_EXPRESSION\\`\",\n}\n`;\n\nexports[`malformed-extend.pug 1`] = `\nObject {\n  \"code\": \"PUG:MALFORMED_EXTENDS\",\n  \"column\": 7,\n  \"line\": 1,\n  \"msg\": \"malformed extends\",\n}\n`;\n\nexports[`malformed-include.pug 1`] = `\nObject {\n  \"code\": \"PUG:MALFORMED_INCLUDE\",\n  \"column\": 8,\n  \"line\": 1,\n  \"msg\": \"malformed include\",\n}\n`;\n\nexports[`mismatched-inline-tag.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_END_BRACKET\",\n  \"column\": 14,\n  \"line\": 2,\n  \"msg\": \"End of line was reached with no closing bracket for interpolation.\",\n}\n`;\n\nexports[`mismatched-tag-interpolation.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_END_BRACKET\",\n  \"column\": 1,\n  \"line\": 3,\n  \"msg\": \"The end of the string reached with no closing bracket } found.\",\n}\n`;\n\nexports[`mixin.attrs.pug 1`] = `\nArray [\n  Object {\n    \"args\": \"title\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"centered\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"centered\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"id\",\n    \"type\": \"attribute\",\n    \"val\": \"attributes.id\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"if (title)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"attributes.class\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"if (attributes.href)\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"footer\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"attributes.href\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Back\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"title\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"main\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"stretch\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": \"title\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"centered\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"highlight\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 54,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"bottom\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bottom\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"centered\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"First\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Hello World\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"'Section 1'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"centered\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"Second\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some important content.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"'Section 2'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"centered\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"Third\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 35,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 52,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 36,\n        \"line\": 23,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'menu.html'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 65,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 54,\n        \"line\": 23,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 66,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 65,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Even more important content.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"'Section 3'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"main\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 25,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'#'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Last content.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"bottom\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 27,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 27,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"name\",\n    \"type\": \"attribute\",\n    \"val\": \"'end'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 49,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 40,\n        \"line\": 27,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"id\",\n    \"type\": \"attribute\",\n    \"val\": \"'Last'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 66,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 51,\n        \"line\": 27,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-attr\",\n    \"type\": \"attribute\",\n    \"val\": \"'baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 67,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 66,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Some final words.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"bottom\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 29,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"['class1', 'class2']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"thing\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 32,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"attr1\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 32,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"attr2\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 61,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 38,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var val = '<biz>'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var classes = ['foo', 'bar']\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 36,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"attr3\",\n    \"type\": \"attribute\",\n    \"val\": \"'baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 36,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-foo\",\n    \"type\": \"attribute\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 36,\n      },\n    },\n    \"mustEscape\": false,\n    \"name\": \"data-bar\",\n    \"type\": \"attribute\",\n    \"val\": \"val\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 58,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 45,\n        \"line\": 36,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"classes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 59,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 58,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 65,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 59,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"thunk\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" Regression test for #1424\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"work\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"work_filmstrip_item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 40,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"work\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"'work'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"work_filmstrip_item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 54,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 41,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-profile\",\n    \"type\": \"attribute\",\n    \"val\": \"'profile'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 82,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 56,\n        \"line\": 41,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"data-creator-name\",\n    \"type\": \"attribute\",\n    \"val\": \"'name'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 83,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 82,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"arg1, arg2, arg3, arg4\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"my-mixin\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 44,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"arg1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 45,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 45,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 45,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"arg2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 46,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"arg3\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 47,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 47,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 47,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 47,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 47,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 47,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"arg4\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 49,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 49,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 49,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 49,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 49,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 49,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 50,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 50,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"attr3\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"qux\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 51,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 51,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"baz\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 52,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 52,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 54,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 54,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"\n'1',\n      '2',\n  '3',\n      '4'\n\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 59,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 54,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"my-mixin\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 60,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 60,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 60,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.attrs.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 60,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixin.block-tag-behaviour.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"name\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"section\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"name\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": \"'Foo'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 9,\n      },\n    },\n    \"type\": \":\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"I'm article foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"name\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"section\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"name\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": \"'Something'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 27,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"I'm a much longer\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"text-only article,\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"but you can still\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"inline html tags\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"in me if you want.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixin.blocks.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"method, action\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"form\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"form\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"method\",\n    \"type\": \"attribute\",\n    \"val\": \"method\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"action\",\n    \"type\": \"attribute\",\n    \"val\": \"action\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 36,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var csrf_token_from_somewhere = 'hey'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'hidden'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"name\",\n    \"type\": \"attribute\",\n    \"val\": \"'_csrf'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 71,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 40,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"csrf_token_from_somewhere\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 72,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 71,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": \"'GET', '/search'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"form\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"name\",\n    \"type\": \"attribute\",\n    \"val\": \"'query'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 60,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 40,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"placeholder\",\n    \"type\": \"attribute\",\n    \"val\": \"'Search'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 61,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 60,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'submit'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"'Search'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 42,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": \"'POST', '/search'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"form\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 18,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 18,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"name\",\n    \"type\": \"attribute\",\n    \"val\": \"'query'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 60,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 40,\n        \"line\": 18,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"placeholder\",\n    \"type\": \"attribute\",\n    \"val\": \"'Search'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 61,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 60,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 19,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'submit'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 19,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"'Search'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 42,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": \"'POST', '/search'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"form\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 35,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 35,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"one\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"two\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 37,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 37,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 37,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 37,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 37,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 37,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"three\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 44,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"'123'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.blocks.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixin.merge.pug 1`] = `\nArray [\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"One\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"quux\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Two\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Three\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"baz\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 43,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 49,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 45,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Four\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"hello\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"world\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"hello\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"world\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"hello\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"world\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"hello\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"hello\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"\\\\\"world\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 27,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"{class: \\\\\"hello\\\\\"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 36,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin.merge.pug\",\n      \"start\": Object {\n        \"column\": 36,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixin-at-end-of-file.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"./auxiliary/mixin-at-end-of-file.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"slide\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"some awesome content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-at-end-of-file.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixin-block-with-space.pug 1`] = `\nArray [\n  Object {\n    \"args\": \"id\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"m\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"m\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"This text should appear\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-block-with-space.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixin-hoist.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-hoist.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixin-via-include.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 65,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-via-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" regression test for https://github.com/pugjs/pug/issues/1435\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-via-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-via-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 38,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-via-include.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"../fixtures/mixin-include.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-via-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-via-include.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"bang\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixin-via-include.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixins.pug 1`] = `\nArray [\n  Object {\n    \"args\": \"title, str\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"comment\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"comment\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"str\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"title, str\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"comment\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"comment\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"str\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"user\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Tobi\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"comments\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"args\": \"'This',\n            (('is regular, javascript'))\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"comment\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"list\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"args\": \"\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"list\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"list\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"str\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"foobar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"interpolation\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 29,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"str + 'interpolated'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var suffix = \\\\\"bar\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"'This is '\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"#{'foo' + suffix}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixins.rest-args.pug 1`] = `\nArray [\n  Object {\n    \"args\": \"tag, ...items\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"list\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"tag\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"code\": \"items\",\n    \"key\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"each\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": \"'ul', 1, 2, 3, 4\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"list\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins.rest-args.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`mixins-unused.pug 1`] = `\nArray [\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins-unused.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"never-called\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins-unused.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins-unused.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"wtf\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 51,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins-unused.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"This isn't something we ever want to output\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins-unused.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins-unused.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/mixins-unused.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`multi-line-interpolation.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_END_BRACKET\",\n  \"column\": 65,\n  \"line\": 2,\n  \"msg\": \"End of line was reached with no closing bracket for interpolation.\",\n}\n`;\n\nexports[`namespaces.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"fb:user:role\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Something\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"fb:foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/namespaces.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`nesting.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"b\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"c\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"d\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"e\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/nesting.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`old-prefixed-each.pug 1`] = `\nObject {\n  \"code\": \"PUG:MALFORMED_EACH\",\n  \"column\": 3,\n  \"line\": 2,\n  \"msg\": \"Pug each and for should no longer be prefixed with a dash (\\\\\"-\\\\\"). They are pug keywords and not part of JavaScript.\",\n}\n`;\n\nexports[`open-interpolation.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_END_BRACKET\",\n  \"column\": 54,\n  \"line\": 1,\n  \"msg\": \"End of line was reached with no closing bracket for interpolation.\",\n}\n`;\n\nexports[`pipeless-comments.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"     .foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\t.bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \".hey\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-comments.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`pipeless-filters.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"filter\",\n    \"val\": \"markdown-it\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"    code sample\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"# Heading\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-filters.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`pipeless-tag.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"pre\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  what\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"is \",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"'going'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"'on'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 28,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pipeless-tag.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`pre.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"pre\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"pre\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"code\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/pre.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`quotes.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/quotes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/quotes.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\\\\\"foo\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/quotes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/quotes.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/quotes.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/quotes.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`regression.784.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.784.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var url = 'http://www.google.com'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.784.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.784.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"url\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 57,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.784.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"interpolated-code\",\n    \"val\": \"url.replace('http://', '').replace(/^www\\\\\\\\./, '')\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 57,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.784.pug\",\n      \"start\": Object {\n        \"column\": 57,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`regression.1794.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"extends\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 37,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"./auxiliary/1794-extends.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mode\": \"replace\",\n    \"type\": \"block\",\n    \"val\": \"content\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"./auxiliary/1794-include.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/regression.1794.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`script.whitespace.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"if (foo) {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  bar();\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/script.whitespace.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`scripts.non-js.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"user-template\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/template'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 42,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"user\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h1\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"<%= user.name %>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"<%= user.description %>\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"id\",\n    \"val\": \"user-template\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/template'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 42,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 43,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 44,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"if (foo) {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  bar();\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.non-js.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`scripts.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"if (foo) {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  bar();\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"'foo()'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo()\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/scripts.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`self-closing-html.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"br\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"slash\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/self-closing-html.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`single-period.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/single-period.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"span\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/single-period.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \".\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/single-period.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`source.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"audio\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"preload\",\n    \"type\": \"attribute\",\n    \"val\": \"'auto'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 35,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 25,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"autobuffer\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 37,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"controls\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 45,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"source\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"source\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/source.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`styles.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"style\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"body {\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  padding: 50px;\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 43,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"style\",\n    \"type\": \"attribute\",\n    \"val\": \"'color:red;background:green'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 43,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 50,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 9,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"style\",\n    \"type\": \"attribute\",\n    \"val\": \"{color: 'red', background: 'green'}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 51,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 50,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 58,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"{style: 'color:red;background:green'}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 65,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"{style: {color: 'red', background: 'green'}}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 44,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 14,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"style\",\n    \"type\": \"attribute\",\n    \"val\": \"'color:red;background:green'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 44,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 51,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 15,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"style\",\n    \"type\": \"attribute\",\n    \"val\": \"{color: 'red', background: 'green'}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 52,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 51,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 16,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var bg = 'green';\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 45,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"style\",\n    \"type\": \"attribute\",\n    \"val\": \"{color: 'red', background: bg}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 45,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 60,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"{style: {color: 'red', background: bg}}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 19,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"style\",\n    \"type\": \"attribute\",\n    \"val\": \"{color: 'red', background: bg}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 47,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 46,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/styles.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`tag.interpolation.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var tag = 'p'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var foo = 'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"tag\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"value\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"tag\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"foo\",\n    \"type\": \"attribute\",\n    \"val\": \"'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 19,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"value\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"foo ? 'a' : 'li'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 7,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"something\",\n    \"type\": \"attribute\",\n    \"val\": true,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"here\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": \"icon\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"mixin\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"attributes.href\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"img\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"icon\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 13,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"icon\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"else\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"span\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"&attributes\",\n    \"val\": \"attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 8,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"img\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"class\",\n    \"val\": \"icon\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 17,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"icon\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"mixin-block\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"args\": \"'contact'\",\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 20,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Contact\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"args\": null,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"call\",\n    \"val\": \"item\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 22,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"href\",\n    \"type\": \"attribute\",\n    \"val\": \"'/contact'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 25,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 24,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 22,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 22,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Contact\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag.interpolation.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`tag-blocks.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 42,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" we should not get blocks within blocks\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"div\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"We have sent an e-mail to \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 33,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"strong\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 57,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"this.props.email\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 58,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 57,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-pug-interpolation\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 96,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 58,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \".  Please click the link in the e-mail\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"'  '\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 36,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"to confirm your e-mail address.\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tag-blocks.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`tags.self-closing.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"'baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"slash\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"'baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 17,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"slash\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"/\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 8,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"'baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 19,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"/\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"slash\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 10,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"'baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"slash\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"/\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"'foo'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 12,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"bar\",\n    \"type\": \"attribute\",\n    \"val\": \"'baz'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 24,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"/\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 41,\n        \"line\": 13,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 13,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" can have a single space after them\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"img\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"comment\",\n    \"val\": \" can have lots of white space after them\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"img\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"   \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"interpolation\",\n    \"val\": \"\n    'foo'\n  \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"slash\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/tags.self-closing.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`template.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/x-template'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"h2\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"{{title}}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"{{description}}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text/x-template'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 30,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 32,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"article\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  h2 {{title}}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  p {{description}}\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/template.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`text.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"option\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"value\",\n    \"type\": \"attribute\",\n    \"val\": \"''\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 16,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 34,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 18,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"-- (selected) --\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 7,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 7,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 8,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 8,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 9,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 9,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 10,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 10,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 11,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 11,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \" \",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 12,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 12,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 14,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 15,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 15,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 16,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 17,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 18,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 18,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 19,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 19,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 20,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 21,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 21,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 23,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 23,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 24,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 24,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 25,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 26,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 27,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 27,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 28,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 28,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 29,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 30,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 30,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"pre\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 31,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 31,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 32,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 32,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 33,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 33,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"    baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 34,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 34,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \".\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"pre\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 36,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 36,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 37,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 37,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 38,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 38,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 38,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 39,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 39,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"    baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 40,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 40,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \".\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 41,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"dot\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 42,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 42,\n      },\n    },\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 43,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 43,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 44,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 44,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"  bar\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 45,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 45,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 45,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"    baz\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \".\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 4,\n        \"line\": 46,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text.pug\",\n      \"start\": Object {\n        \"column\": 4,\n        \"line\": 46,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`text-block.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"label\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Username:\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"name\",\n    \"type\": \"attribute\",\n    \"val\": \"'user[name]'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 6,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"label\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 16,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"Password:\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"input\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 8,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 20,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"type\",\n    \"type\": \"attribute\",\n    \"val\": \"'text'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 6,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"name\",\n    \"type\": \"attribute\",\n    \"val\": \"'user[pass]'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 39,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 40,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 40,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/text-block.pug\",\n      \"start\": Object {\n        \"column\": 40,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`utf8bom.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/utf8bom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/utf8bom.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"\\\\\"foo\\\\\"\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/utf8bom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/utf8bom.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`vars.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 18,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var foo = 'bar'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var list = [1,2,3]\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"a\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 2,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"class\",\n    \"type\": \"attribute\",\n    \"val\": \"list\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"id\",\n    \"type\": \"attribute\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 21,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/vars.pug\",\n      \"start\": Object {\n        \"column\": 22,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`when-with-no-expression.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_WHEN_EXPRESSION\",\n  \"column\": 5,\n  \"line\": 1,\n  \"msg\": \"missing expression for when\",\n}\n`;\n\nexports[`while.pug 1`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"var x = 1;\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 15,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"while\",\n    \"val\": \"x < 10\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"buffer\": false,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": false,\n    \"type\": \"code\",\n    \"val\": \"x++;\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"buffer\": true,\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"type\": \"code\",\n    \"val\": \"x\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/while.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`while-with-no-expression.pug 1`] = `\nObject {\n  \"code\": \"PUG:NO_WHILE_EXPRESSION\",\n  \"column\": 6,\n  \"line\": 1,\n  \"msg\": \"missing expression for while\",\n}\n`;\n\nexports[`xml.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"doctype\",\n    \"val\": \"xml\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"category\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"term\",\n    \"type\": \"attribute\",\n    \"val\": \"'some term'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 27,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"slash\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"link\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 6,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"http://google.com\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/xml.pug\",\n      \"start\": Object {\n        \"column\": 23,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`yield.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"yield-head.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/caustic.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/app.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 27,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`yield-before-conditional.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 46,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"yield-before-conditional-head.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/caustic.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 7,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 14,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/app.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 28,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 27,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`yield-before-conditional-head.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"yield\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"if\",\n    \"val\": \"false\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 11,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 11,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 31,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 12,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/jquery.ui.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 32,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 31,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-before-conditional-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`yield-head.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 2,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"yield\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/jquery.ui.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`yield-title.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 12,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"include\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 33,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 13,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"path\",\n    \"val\": \"yield-title-head.pug\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 7,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 6,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 17,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"text\",\n    \"val\": \"My Title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`yield-title-head.pug 1`] = `\nArray [\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 1,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 1,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"head\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 8,\n        \"line\": 2,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 2,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"title\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"indent\",\n    \"val\": 4,\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 3,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 5,\n        \"line\": 3,\n      },\n    },\n    \"type\": \"yield\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 26,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 4,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/jquery.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 27,\n        \"line\": 4,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 26,\n        \"line\": 4,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"newline\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 3,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"tag\",\n    \"val\": \"script\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 9,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"start-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 29,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 10,\n        \"line\": 5,\n      },\n    },\n    \"mustEscape\": true,\n    \"name\": \"src\",\n    \"type\": \"attribute\",\n    \"val\": \"'/jquery.ui.js'\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 30,\n        \"line\": 5,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 29,\n        \"line\": 5,\n      },\n    },\n    \"type\": \"end-attributes\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"loc\": Object {\n      \"end\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n      \"filename\": \"<basedir>/packages/pug-lexer/test/cases/yield-title-head.pug\",\n      \"start\": Object {\n        \"column\": 1,\n        \"line\": 6,\n      },\n    },\n    \"type\": \"eos\",\n  },\n]\n`;\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/attr-es2015.pug",
    "content": "- var avatar = '219b77f9d21de75e81851b6b886057c7'\n\ndiv.avatar-div(style=`background-image: url(https://www.gravatar.com/avatar/${avatar})`)\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/attrs-data.pug",
    "content": "- var user = { name: 'tobi' }\nfoo(data-user=user)\nfoo(data-items=[1,2,3])\nfoo(data-username='tobi')\nfoo(data-escaped={message: \"Let's rock!\"})\nfoo(data-ampersand={message: \"a quote: &quot; this & that\"})\nfoo(data-epoc=new Date(0))\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/attrs.js.pug",
    "content": "- var id = 5\n- function answer() { return 42; }\na(href='/user/' + id, class='button')\na(href  =  '/user/' + id, class  =  'button')\nmeta(key='answer', value=answer())\na(class = ['class1', 'class2'])\na.tag-class(class = ['class1', 'class2'])\n\na(href='/user/' + id class='button')\na(href  =  '/user/' + id class  =  'button')\nmeta(key='answer' value=answer())\na(class = ['class1', 'class2'])\na.tag-class(class = ['class1', 'class2'])\n\ndiv(id=id)&attributes({foo: 'bar'})\n- var bar = null\ndiv(foo=null bar=bar)&attributes({baz: 'baz'})\n\ndiv(...object)\ndiv(...object after=\"after\")\ndiv(before=\"before\" ...object)\ndiv(before=\"before\" ...object after=\"after\")\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/attrs.pug",
    "content": "a(href='/contact') contact\na(href='/save').button save\na(foo, bar, baz)\na(foo='foo, bar, baz', bar=1)\na(foo='((foo))', bar= (1) ? 1 : 0 )\nselect\n  option(value='foo', selected) Foo\n  option(selected, value='bar') Bar\na(foo=\"class:\")\ninput(pattern='\\\\S+')\n\na(href='/contact') contact\na(href='/save').button save\na(foo bar baz)\na(foo='foo, bar, baz' bar=1)\na(foo='((foo))' bar= (1) ? 1 : 0 )\nselect\n  option(value='foo' selected) Foo\n  option(selected value='bar') Bar\na(foo=\"class:\")\ninput(pattern='\\\\S+')\nfoo(terse=\"true\")\nfoo(date=new Date(0))\n\nfoo(abc\n   ,def)\nfoo(abc,\n    def)\nfoo(abc,\n\t\tdef)\nfoo(abc\n\t\t,def)\nfoo(abc\n\t\tdef)\nfoo(abc\n    def)\n\n- var attrs = {foo: 'bar', bar: '<baz>'}\n\ndiv&attributes(attrs)\n\na(foo='foo' \"bar\"=\"bar\")\na(foo='foo' 'bar'='bar')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/attrs.unescaped.pug",
    "content": "script(type='text/x-template')\n  div(id!='user-<%= user.id %>')\n    h1 <%= user.title %>"
  },
  {
    "path": "packages/pug-lexer/test/cases/basic.pug",
    "content": "html\n  body\n    h1 Title"
  },
  {
    "path": "packages/pug-lexer/test/cases/blanks.pug",
    "content": "\n\nul\n  li foo\n\n  li bar\n      \n  li baz\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/block-code.pug",
    "content": "-\n  list = [\"uno\", \"dos\", \"tres\",\n          \"cuatro\", \"cinco\", \"seis\"];\n//- Without a block, the element is accepted and no code is generated\n-\neach item in list\n  -\n    string = item.charAt(0)\n    \n      .toUpperCase() +\n    item.slice(1);\n  li= string\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/block-expansion.pug",
    "content": "ul\n  li: a(href='#') foo\n  li: a(href='#') bar\n\np baz"
  },
  {
    "path": "packages/pug-lexer/test/cases/block-expansion.shorthands.pug",
    "content": "ul\n  li.list-item: .foo: #bar baz"
  },
  {
    "path": "packages/pug-lexer/test/cases/blockquote.pug",
    "content": "figure\n  blockquote\n    | Try to define yourself by what you do, and you&#8217;ll burnout every time. You are. That is enough. I rest in that.\n  figcaption from @thefray at 1:43pm on May 10"
  },
  {
    "path": "packages/pug-lexer/test/cases/blocks-in-blocks.pug",
    "content": "extends ./auxiliary/blocks-in-blocks-layout.pug\n\nblock body\n  h1 Page 2\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/blocks-in-if.pug",
    "content": "//- see https://github.com/pugjs/pug/issues/1589\n\n-var ajax = true\n\n-if( ajax )\n    //- return only contents if ajax requests\n    block contents\n        p ajax contents\n\n-else\n    //- return all html\n    doctype html\n    html\n        head\n            meta( charset='utf8' )\n            title sample\n            body\n                block contents\n                    p all contetns\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/case-blocks.pug",
    "content": "html\n  body\n    - var friends = 1\n    case friends\n      when 0\n        p you have no friends\n      when 1\n        p you have a friend\n      default\n        p you have #{friends} friends"
  },
  {
    "path": "packages/pug-lexer/test/cases/case.pug",
    "content": "html\n  body\n    - var friends = 1\n    case friends\n      when 0: p you have no friends\n      when 1: p you have a friend\n      default: p you have #{friends} friends\n    - var friends = 0\n    case friends\n      when 0\n      when 1\n        p you have very few friends\n      default\n        p you have #{friends} friends\n\n    - var friend = 'Tim:G'\n    case friend\n      when 'Tim:G':    p Friend is a string\n      when {tim: 'g'}: p Friend is an object\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/classes-empty.pug",
    "content": "a(class='')\na(class=null)\na(class=undefined)"
  },
  {
    "path": "packages/pug-lexer/test/cases/classes.pug",
    "content": "a(class=['foo', 'bar', 'baz'])\n\n\n\na.foo(class='bar').baz\n\n\n\na.foo-bar_baz\n\na(class={foo: true, bar: false, baz: true})\n\na.-foo\na.3foo\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/code.conditionals.pug",
    "content": "\n- if (true)\n  p foo\n- else\n  p bar\n\n- if (true) {\n  p foo\n- } else {\n  p bar\n- }\n\nif true\n  p foo\n  p bar\n  p baz\nelse\n  p bar\n\nunless true\n  p foo\nelse\n  p bar\n\nif 'nested'\n  if 'works'\n    p yay\n\n//- allow empty blocks\nif false\nelse\n  .bar\nif true\n  .bar\nelse\n.bing\n\nif false\n  .bing\nelse if false\n  .bar\nelse\n  .foo"
  },
  {
    "path": "packages/pug-lexer/test/cases/code.escape.pug",
    "content": "p= '<script>'\np!= '<script>'"
  },
  {
    "path": "packages/pug-lexer/test/cases/code.iteration.pug",
    "content": "\n- var items = [1,2,3]\n\nul\n  - items.forEach(function(item){\n    li= item\n  - })\n\n- var items = [1,2,3]\n\nul\n  for item, i in items\n    li(class='item-' + i)= item\n\nul\n  each item, i in items\n    li= item\n\nul\n  each $item in items\n    li= $item\n\n- var nums = [1, 2, 3]\n- var letters = ['a', 'b', 'c']\n\nul\n  for l in letters\n    for n in nums\n      li #{n}: #{l}\n\n- var count = 1\n- var counter = function() { return [count++, count++, count++] }\nul\n  for n in counter()\n    li #{n}\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/code.pug",
    "content": "p= null\np= undefined\np= ''\np= 0\np= false\np(foo=null)\np(foo=undefined)\np(foo='')\np(foo=0)\np(foo=false)"
  },
  {
    "path": "packages/pug-lexer/test/cases/comments-in-case.pug",
    "content": "doctype html\nhtml\n  body\n   - var s = 'this'\n   case s\n     //- Comment\n     when 'this'\n       p It's this!\n     when 'that'\n       p It's that!"
  },
  {
    "path": "packages/pug-lexer/test/cases/comments.pug",
    "content": "\n// foo\nul\n  // bar\n  li one\n  // baz\n  li two\n\n//\n  ul\n    li foo\n\n// block\n  // inline follow\n  li three\n\n// block\n  // inline followed by tags\n  ul\n    li four\n\n//if IE lt 9\n  // inline\n  script(src='/lame.js')\n  // end-inline\n\np five\n\n.foo // not a comment"
  },
  {
    "path": "packages/pug-lexer/test/cases/comments.source.pug",
    "content": "//-\n  s/s.\n\n//- test/cases/comments.source.pug\n\n//-\n  test/cases/comments.source.pug\n  when\n  ()\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/doctype.custom.pug",
    "content": "doctype custom stuff"
  },
  {
    "path": "packages/pug-lexer/test/cases/doctype.default.pug",
    "content": "doctype\nhtml\n  body\n    h1 Title"
  },
  {
    "path": "packages/pug-lexer/test/cases/doctype.keyword.pug",
    "content": "doctype html"
  },
  {
    "path": "packages/pug-lexer/test/cases/each.else.pug",
    "content": "\n- var users = []\n\nul\n  for user in users\n    li= user.name\n  else\n    li no users!\n\n\n- var users = [{ name: 'tobi', friends: ['loki'] }, { name: 'loki' }]\n\nif users\n  ul\n    for user in users\n      li= user.name\n    else\n      li no users!\n\n- var user = { name: 'tobi', age: 10 }\n\nul\n  each val, key in user\n    li #{key}: #{val}\n  else\n    li user has no details!\n\n- var user = {}\n\nul\n  each prop, key in user\n    li #{key}: #{val}\n  else\n    li user has no details!\n\n- var user = Object.create(null)\n- user.name = 'tobi'\n\nul\n  each val, key in user\n    li #{key}: #{val}\n  else\n    li user has no details!\n\n- var ofKeyword = [{ name: 'tobi', friends: ['loki'] }, { name: 'loki' }]\nul\n  each val of ofKeyword\n    li= user.name\n\nul\n  each val of [\"variable with of keyword\"]\n    li= val"
  },
  {
    "path": "packages/pug-lexer/test/cases/escape-chars.pug",
    "content": "script.\n  var re = /\\d+/;"
  },
  {
    "path": "packages/pug-lexer/test/cases/escape-test.pug",
    "content": "doctype html\nhtml\n    head\n        title escape-test\n    body\n        textarea\n            - var txt = '<param name=\"flashvars\" value=\"a=&quot;value_a&quot;&b=&quot;value_b&quot;&c=3\"/>'\n            | #{txt}\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/escaping-class-attribute.pug",
    "content": "foo(attr=\"<%= bar %>\")\nfoo(class=\"<%= bar %>\")\nfoo(attr!=\"<%= bar %>\")\nfoo(class!=\"<%= bar %>\")\nfoo(class!=\"<%= bar %> lol rofl\")\nfoo(class!=\"<%= bar %> lol rofl <%= lmao %>\")\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filter-in-include.pug",
    "content": "include ./auxiliary/filter-in-include.pug\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters-empty.pug",
    "content": "- var users = [{ name: 'tobi', age: 2 }]\n\nfb:users\n  for user in users\n    fb:user(age=user.age)\n      :cdata\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.coffeescript.pug",
    "content": "script(type='text/javascript')\n  :coffee-script\n    regexp = /\\n/\n  :coffee-script(minify=true)\n    math =\n      square: (value) -> value * value\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.custom.pug",
    "content": "html\n  body\n    :custom(opt='val' num=2)\n      Line 1\n      Line 2\n\n      Line 4\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.include.custom.pug",
    "content": "html\n  body\n    pre\n      include:custom(opt='val' num=2) filters.include.custom.pug\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.include.pug",
    "content": "html\n  body\n    include:markdown-it some.md\n    script\n      include:coffee-script(minify=true) include-filter-coffee.coffee\n    script\n      include:cdata:coffee-script(minify=false) include-filter-coffee.coffee\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.inline.pug",
    "content": "p before #[:cdata inside] after"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.less.pug",
    "content": "html\n  head\n    style(type=\"text/css\")\n      :less\n        @pad: 15px;\n        body {\n          padding: @pad;\n        }\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.markdown.pug",
    "content": "html\n  body\n    :markdown-it\n      This is _some_ awesome **markdown**\n      whoop.\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.nested.pug",
    "content": "script\n  :cdata:uglify-js\n    (function() {\n      console.log('test')\n    })()\nscript\n  :cdata:uglify-js:coffee-script\n    (->\n      console.log 'test'\n    )()\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.stylus.pug",
    "content": "html\n  head\n    style(type=\"text/css\")\n      :stylus\n        body\n          padding: 50px\n  body\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/filters.verbatim.pug",
    "content": "html\n div\n  :verbatim\n    filters are applied at compile time\n    with no #[b interpolation] at #{all}\n\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/html.pug",
    "content": "- var version = 1449104952939\n\n<ul>\n  <li>foo</li>\n  <li>bar</li>\n  <li>baz</li>\n</ul>\n\n<!--build:js /js/app.min.js?v=#{version}-->\n<!--endbuild-->\n\np You can <em>embed</em> html as well.\np: <strong>Even</strong> as the body of a block expansion.\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/html5.pug",
    "content": "doctype html\ninput(type='checkbox', checked)\ninput(type='checkbox', checked=true)\ninput(type='checkbox', checked=false)"
  },
  {
    "path": "packages/pug-lexer/test/cases/include-extends-from-root.pug",
    "content": "include /auxiliary/extends-from-root.pug\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include-extends-of-common-template.pug",
    "content": "include auxiliary/extends-empty-block-1.pug\ninclude auxiliary/extends-empty-block-2.pug\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include-extends-relative.pug",
    "content": "include ../cases/auxiliary/extends-relative.pug\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include-only-text-body.pug",
    "content": "| The message is \"\nyield\n| \"\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include-only-text.pug",
    "content": "html\n  body\n    p\n      include include-only-text-body.pug\n        em hello world\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include-with-text-head.pug",
    "content": "head\n  script(type='text/javascript').\n    alert('hello world');\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include-with-text.pug",
    "content": "html\n  include include-with-text-head.pug\n    script(src='/caustic.js')\n    script(src='/app.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include.script.pug",
    "content": "script#pet-template(type='text/x-template')\n  include auxiliary/pet.pug\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/include.yield.nested.pug",
    "content": "\ninclude auxiliary/yield-nested.pug\n  p some content\n  p and some more\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/includes-with-ext-js.pug",
    "content": "pre\n  code\n    include javascript-new-lines.js\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/includes.pug",
    "content": "\ninclude auxiliary/mixins.pug\n\n+foo\n\nbody\n  include auxiliary/smile.html\n  include auxiliary/escapes.html\n  script(type=\"text/javascript\")\n    include:verbatim auxiliary/includable.js\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.alert-dialog.pug",
    "content": "\nextends auxiliary/dialog.pug\n\nblock content\n  h1 Alert!\n  p I'm an alert!\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.defaults.pug",
    "content": "html\n  head\n    block head\n      script(src='jquery.js')\n      script(src='keymaster.js')\n      script(src='caustic.js')"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.extend.include.pug",
    "content": "\nextend auxiliary/layout.include.pug\n\nblock head\n  script(src='jquery.js')\n\nblock content\n  h2 Page\n  p Some content\n\nblock window-content\n  h2 Awesome\n  p Now we can extend included blocks!\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.extend.mixins.block.pug",
    "content": "extend auxiliary/inheritance.extend.mixin.block.pug\n\nblock content\n  p Hello World!\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.extend.mixins.pug",
    "content": "\nextend auxiliary/layout.pug\n\nmixin article(title)\n  if title\n    h1= title\n  block\n\nblock content\n  +article(\"The meaning of life\")\n    p Foo bar baz!\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.extend.pug",
    "content": "\nextend auxiliary/layout.pug\n\nblock head\n  script(src='jquery.js')\n\nblock content\n  h2 Page\n  p Some content\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.extend.recursive.pug",
    "content": "extends /auxiliary/inheritance.extend.recursive-parent.pug\n\nblock parent\n    h4 child"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.extend.whitespace.pug",
    "content": "\nextend auxiliary/layout.pug\n\nblock head\n\n  script(src='jquery.js')\n\nblock content\n  \n    \n  \n  h2 Page\n  p Some content\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inheritance.pug",
    "content": "\nextends auxiliary/layout.pug\n\nblock head\n  script(src='jquery.js')\n\nblock content\n  h2 Page\n  p Some content\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inline-block-comment.pug",
    "content": "block content // Main content goes here\nappend content // adding something to content\nprepend content // adding something to other end of content\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/inline-tag.pug",
    "content": "p bing #[strong foo] bong\n\np.\n  bing\n  #[strong foo]\n  #[strong= '[foo]']\n  #[- var foo = 'foo]']\n  bong\n\np\n  | bing\n  | #[strong foo]\n  | #[strong= '[foo]']\n  | #[- var foo = 'foo]']\n  | bong\n\np.\n  \\#[strong escaped]\n  \\#[#[strong escaped]\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/intepolated-elements.pug",
    "content": "p #[a.rho(href='#', class='rho--modifier') with inline link]\np Some text #[a.rho(href='#', class='rho--modifier')]\np Some text #[a.rho(href='#', class='rho--modifier') with inline link]"
  },
  {
    "path": "packages/pug-lexer/test/cases/interpolated-mixin.pug",
    "content": "mixin linkit(url)\n  a(href=url)= url\n\np This also works #[+linkit('http://www.bing.com')] so hurrah for Pug"
  },
  {
    "path": "packages/pug-lexer/test/cases/interpolation.escape.pug",
    "content": "- var id = 42;\nfoo\n  | some\n  | \\#{text}\n  | \\!{here}\n  | My ID #{\"is {\" + id + \"}\"}\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/javascript-new-lines.js",
    "content": "var x = '\\n here is some \\n new lined text';\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/layout.append.pug",
    "content": "\nextends ../fixtures/append/app-layout.pug\n\nblock append head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/layout.append.without-block.pug",
    "content": "\nextends ../fixtures/append-without-block/app-layout.pug\n\nappend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/layout.multi.append.prepend.block.pug",
    "content": "extends ../fixtures/multi-append-prepend-block/redefine.pug\n\nappend content\n\tp.first.append Something appended to content\n\nprepend content\n\tp.first.prepend Something prepended to content\n\nappend content\n\tp.last.append Last append must be most last\n\nprepend content\n\tp.last.prepend Last prepend must appear at top\n\nappend head\n\tscript(src='jquery.js')\n\nprepend head\n\tscript(src='foo.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/layout.prepend.pug",
    "content": "\nextends ../fixtures/prepend/app-layout.pug\n\nblock prepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/layout.prepend.without-block.pug",
    "content": "\nextends ../fixtures/prepend-without-block/app-layout.pug\n\nprepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin-at-end-of-file.pug",
    "content": "include ./auxiliary/mixin-at-end-of-file.pug\n\n+slide()\n  p some awesome content\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin-block-with-space.pug",
    "content": "mixin m(id)\n  div\n    block    \n\n+m()\n  | This text should appear"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin-hoist.pug",
    "content": "\nmixin foo()\n  h1= title\n\nhtml\n  body\n    +foo\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin-via-include.pug",
    "content": "//- regression test for https://github.com/pugjs/pug/issues/1435\n\ninclude ../fixtures/mixin-include.pug\n\n+bang"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin.attrs.pug",
    "content": "mixin centered(title)\n  div.centered(id=attributes.id)\n    - if (title)\n      h1(class=attributes.class)= title\n    block\n    - if (attributes.href)\n      .footer\n        a(href=attributes.href) Back\n\nmixin main(title)\n  div.stretch\n    +centered(title).highlight&attributes(attributes)\n      block\n\nmixin bottom\n  div.bottom&attributes(attributes)\n    block\n\nbody\n  +centered#First Hello World\n  +centered('Section 1')#Second\n    p Some important content.\n  +centered('Section 2')#Third.foo(href='menu.html', class='bar')\n    p Even more important content.\n  +main('Section 3')(href='#')\n    p Last content.\n  +bottom.foo(class='bar', name='end', id='Last', data-attr='baz')\n    p Some final words.\n  +bottom(class=['class1', 'class2'])\n\nmixin foo\n  div.thing(attr1='foo', attr2='bar')&attributes(attributes)\n\n- var val = '<biz>'\n- var classes = ['foo', 'bar']\n+foo(attr3='baz' data-foo=val data-bar!=val class=classes).thunk\n\n//- Regression test for #1424\nmixin work_filmstrip_item(work)\n  div&attributes(attributes)= work\n+work_filmstrip_item('work')(\"data-profile\"='profile', \"data-creator-name\"='name')\n\nmixin my-mixin(arg1, arg2, arg3, arg4)\n  p= arg1\n  p= arg2\n  p= arg3\n  p= arg4\n\n+foo(\n  attr3=\"qux\"\n  class=\"baz\"\n)\n\n+my-mixin(\n'1',\n      '2',\n  '3',\n      '4'\n)\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin.block-tag-behaviour.pug",
    "content": "\nmixin article(name)\n  section.article\n    h1= name\n    block\n\nhtml\n  body\n    +article('Foo'): p I'm article foo\n\nmixin article(name)\n  section.article\n    h1= name\n    p\n      block\n\nhtml\n  body\n    +article('Something').\n      I'm a much longer\n      text-only article,\n      but you can still\n      inline html tags\n      in me if you want."
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin.blocks.pug",
    "content": "\n\nmixin form(method, action)\n  form(method=method, action=action)\n    - var csrf_token_from_somewhere = 'hey'\n    input(type='hidden', name='_csrf', value=csrf_token_from_somewhere)\n    block\n\nhtml\n  body\n    +form('GET', '/search')\n      input(type='text', name='query', placeholder='Search')\n      input(type='submit', value='Search')\n\nhtml\n  body\n    +form('POST', '/search')\n      input(type='text', name='query', placeholder='Search')\n      input(type='submit', value='Search')\n\nhtml\n  body\n    +form('POST', '/search')\n\nmixin bar()\n  #bar\n    block\n\nmixin foo()\n  #foo\n    +bar\n      block\n\n+foo\n  p one\n  p two\n  p three\n\n\nmixin baz\n    #baz\n        block\n\n+baz()= '123'"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixin.merge.pug",
    "content": "mixin foo\n  p.bar&attributes(attributes) One\n  p.baz.quux&attributes(attributes) Two\n  p&attributes(attributes) Three\n  p.bar&attributes(attributes)(class=\"baz\") Four\n\nbody\n  +foo.hello\n  +foo#world\n  +foo.hello#world\n  +foo.hello.world\n  +foo(class=\"hello\")\n  +foo.hello(class=\"world\")\n  +foo\n  +foo&attributes({class: \"hello\"})"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixins-unused.pug",
    "content": "mixin never-called\n  .wtf This isn't something we ever want to output\nbody"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixins.pug",
    "content": "mixin comment(title, str)\n  .comment\n    h2= title\n    p.body= str\n\n\nmixin comment (title, str)\n  .comment\n    h2= title\n    p.body= str\n\n#user\n  h1 Tobi\n  .comments\n    +comment('This',\n            (('is regular, javascript')))\n\nmixin list\n  ul\n    li foo\n    li bar\n    li baz\n\nbody\n  +list()\n  + list()\n\nmixin foobar(str)\n  div#interpolation= str + 'interpolated'\n\n- var suffix = \"bar\"\n+#{'foo' + suffix}('This is ')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/mixins.rest-args.pug",
    "content": "mixin list(tag, ...items)\n  #{tag}\n    each item in items\n      li= item\n\n+list('ul', 1, 2, 3, 4)\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/namespaces.pug",
    "content": "fb:user:role Something\nfoo(fb:foo='bar')"
  },
  {
    "path": "packages/pug-lexer/test/cases/nesting.pug",
    "content": "ul\n  li a\n  li b\n  li\n    ul\n        li c\n        li d\n  li e"
  },
  {
    "path": "packages/pug-lexer/test/cases/pipeless-comments.pug",
    "content": "//\n       .foo\n  \t.bar\n  .hey\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/pipeless-filters.pug",
    "content": ":markdown-it\n      code sample\n\n  # Heading\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/pipeless-tag.pug",
    "content": "pre.\n    what\n  is #{'going'} #[| #{'on'}]\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/pre.pug",
    "content": "pre.\n  foo\n  bar\n  baz\n\npre\n  code.\n    foo\n    bar\n    baz"
  },
  {
    "path": "packages/pug-lexer/test/cases/quotes.pug",
    "content": "p \"foo\"\np 'foo'"
  },
  {
    "path": "packages/pug-lexer/test/cases/regression.1794.pug",
    "content": "extends ./auxiliary/1794-extends.pug\n \nblock content\n  include ./auxiliary/1794-include.pug"
  },
  {
    "path": "packages/pug-lexer/test/cases/regression.784.pug",
    "content": "- var url = 'http://www.google.com'\n.url #{url.replace('http://', '').replace(/^www\\./, '')}"
  },
  {
    "path": "packages/pug-lexer/test/cases/script.whitespace.pug",
    "content": "script.\n  if (foo) {\n    \n    bar();\n  \n  }"
  },
  {
    "path": "packages/pug-lexer/test/cases/scripts.non-js.pug",
    "content": "script#user-template(type='text/template')\n  #user\n    h1 <%= user.name %>\n    p <%= user.description %>\n\nscript#user-template(type='text/template').\n  if (foo) {\n    bar();\n  }"
  },
  {
    "path": "packages/pug-lexer/test/cases/scripts.pug",
    "content": "script.\n  if (foo) {\n    bar();\n  }\nscript!= 'foo()'\nscript foo()\nscript\ndiv"
  },
  {
    "path": "packages/pug-lexer/test/cases/self-closing-html.pug",
    "content": "doctype html\nhtml\n  body\n    br/\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/single-period.pug",
    "content": "span ."
  },
  {
    "path": "packages/pug-lexer/test/cases/source.pug",
    "content": "html\n  audio(preload='auto', autobuffer, controls)\n    source(src='foo')\n    source(src='bar')"
  },
  {
    "path": "packages/pug-lexer/test/cases/styles.pug",
    "content": "html\n  head\n    style.\n      body {\n        padding: 50px;\n      }\n  body\n    div(style='color:red;background:green')\n    div(style={color: 'red', background: 'green'})\n    div&attributes({style: 'color:red;background:green'})\n    div&attributes({style: {color: 'red', background: 'green'}})\n    mixin div()\n      div&attributes(attributes)\n    +div(style='color:red;background:green')\n    +div(style={color: 'red', background: 'green'})\n    - var bg = 'green';\n    div(style={color: 'red', background: bg})\n    div&attributes({style: {color: 'red', background: bg}})\n    +div(style={color: 'red', background: bg})\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/tag-blocks.pug",
    "content": "// we should not get blocks within blocks\ndiv\n  | We have sent an e-mail to #[strong= this.props.email].  Please click the link in the e-mail\n  = '  '\n  | to confirm your e-mail address.\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/tag.interpolation.pug",
    "content": "\n- var tag = 'p'\n- var foo = 'bar'\n\n#{tag} value\n#{tag}(foo='bar') value\n#{foo ? 'a' : 'li'}(something) here\n\nmixin item(icon)\n  li\n    if attributes.href\n      a&attributes(attributes)\n        img.icon(src=icon)\n        block\n    else\n      span&attributes(attributes)\n        img.icon(src=icon)\n        block\n\nul\n  +item('contact') Contact\n  +item(href='/contact') Contact\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/tags.self-closing.pug",
    "content": "\nbody\n  foo\n  foo(bar='baz')\n  foo/\n  foo(bar='baz')/\n  foo /\n  foo(bar='baz') /\n  #{'foo'}/\n  #{'foo'}(bar='baz')/\n  #{'foo'} /\n  #{'foo'}(bar='baz') /\n  //- can have a single space after them\n  img \n  //- can have lots of white space after them\n  img    \n  #{\n    'foo'\n  }/\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/template.pug",
    "content": "script(type='text/x-template')\n  article\n    h2 {{title}}\n    p {{description}}\n\nscript(type='text/x-template').\n  article\n    h2 {{title}}\n    p {{description}}\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/text-block.pug",
    "content": "\nlabel Username:\n  input(type='text', name='user[name]')\n\nlabel Password:\n  input(type='text', name='user[pass]')"
  },
  {
    "path": "packages/pug-lexer/test/cases/text.pug",
    "content": "option(value='') -- (selected) --\n\np\n\np.\n\np\n  | foo\n  | bar\n  |\n  | \n  | baz\n\np.\n  foo\n\n\n  bar\n  baz\n\n.\n\n.\n  foo\n\n\n  bar\n  baz\n\npre\n  | foo\n  |   bar\n  |     baz\n  | .\n\npre.\n  foo\n    bar\n      baz\n  .\n\n.\n  foo\n    bar\n      baz\n  .\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/utf8bom.pug",
    "content": "﻿p \"foo\"\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/vars.pug",
    "content": "- var foo = 'bar'\n- var list = [1,2,3]\na(class=list, id=foo)"
  },
  {
    "path": "packages/pug-lexer/test/cases/while.pug",
    "content": "- var x = 1;\nul\n  while x < 10\n    - x++;\n    li= x\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/xml.pug",
    "content": "doctype xml\ncategory(term='some term')/\nlink http://google.com"
  },
  {
    "path": "packages/pug-lexer/test/cases/yield-before-conditional-head.pug",
    "content": "head\n  script(src='/jquery.js')\n  yield\n  if false\n    script(src='/jquery.ui.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/yield-before-conditional.pug",
    "content": "html\n  body\n    include yield-before-conditional-head.pug\n      script(src='/caustic.js')\n      script(src='/app.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/yield-head.pug",
    "content": "head\n  script(src='/jquery.js')\n  yield\n  script(src='/jquery.ui.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/yield-title-head.pug",
    "content": "head\n  title\n    yield\n  script(src='/jquery.js')\n  script(src='/jquery.ui.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/yield-title.pug",
    "content": "html\n  body\n    include yield-title-head.pug\n      | My Title\n"
  },
  {
    "path": "packages/pug-lexer/test/cases/yield.pug",
    "content": "html\n  body\n    include yield-head.pug\n      script(src='/caustic.js')\n      script(src='/app.js')\n"
  },
  {
    "path": "packages/pug-lexer/test/check-lexer-functions.test.js",
    "content": "var fs = require('fs');\nvar acorn = require('acorn');\nvar walk = require('acorn-walk');\n\nvar hadErrors = false;\n\nvar lexerFunctions = {\n  advance: true,\n  append: true,\n  attributesBlock: true,\n  attrs: true,\n  blank: true,\n  block: true,\n  blockCode: true,\n  call: true,\n  case: true,\n  className: true,\n  code: true,\n  colon: true,\n  comment: true,\n  conditional: true,\n  default: true,\n  doctype: true,\n  dot: true,\n  each: true,\n  eachOf: true,\n  eos: true,\n  endInterpolation: true,\n  extends: true,\n  filter: true,\n  id: true,\n  include: true,\n  indent: true,\n  interpolation: true,\n  isExpression: true,\n  mixin: true,\n  mixinBlock: true,\n  path: true,\n  pipelessText: true,\n  prepend: true,\n  slash: true,\n  tag: true,\n  text: true,\n  textHtml: true,\n  when: true,\n  while: true,\n  yield: true,\n};\n\nfunction checkDirectCalls(node) {\n  var callee = node.callee;\n  if (callee.type !== 'MemberExpression') return;\n  if (callee.object.type !== 'ThisExpression') return;\n  var property = callee.property;\n  var func;\n  if (callee.computed) {\n    if (property.type !== 'Literal') return;\n    func = property.value;\n  } else {\n    func = property.name;\n  }\n  if (!lexerFunctions[func]) return;\n  console.log(\n    'index.js:' +\n      node.loc.start.line +\n      ':' +\n      node.loc.start.column +\n      ': Lexer function ' +\n      func +\n      ' called directly'\n  );\n  hadErrors = true;\n}\n\nfunction checkMissingLexerFunction(node) {\n  var callee = node.callee;\n  if (callee.type !== 'MemberExpression') return;\n  if (callee.object.type !== 'ThisExpression') return;\n  var property = callee.property;\n  var func;\n  if (callee.computed) {\n    if (property.type !== 'Literal') return;\n    func = property.value;\n  } else {\n    func = property.name;\n  }\n  if (func !== 'callLexerFunction') return;\n  if (!node.arguments.length) return;\n  if (node.arguments[0].type !== 'Literal') return;\n  func = node.arguments[0].value;\n  if (lexerFunctions[func]) return;\n  console.log(\n    'index.js:' +\n      node.loc.start.line +\n      ':' +\n      node.loc.start.column +\n      ': Lexer function ' +\n      func +\n      ' not in lexerFunctions list'\n  );\n  hadErrors = true;\n}\ntest('lexer functions', () => {\n  var str = fs.readFileSync(__dirname + '/../index.js', 'utf8');\n  var ast = acorn.parse(str, {locations: true});\n  walk.simple(ast, {\n    CallExpression: function(node) {\n      checkDirectCalls(node);\n      checkMissingLexerFunction(node);\n    },\n  });\n  if (hadErrors) {\n    throw new Error('Problem with lexer functions detected');\n  }\n});\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/attribute-invalid-expression.pug",
    "content": "a(href=\n    'asfd\n   asfd')\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/case-with-invalid-expression.pug",
    "content": "case thisWillNotWork(\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/case-with-no-expression.pug",
    "content": "case"
  },
  {
    "path": "packages/pug-lexer/test/errors/default-with-expression.pug",
    "content": "default foo"
  },
  {
    "path": "packages/pug-lexer/test/errors/else-with-condition.pug",
    "content": "if true\n  .foo\nelse false\n  .bar"
  },
  {
    "path": "packages/pug-lexer/test/errors/extends-no-path.pug",
    "content": "extends\r"
  },
  {
    "path": "packages/pug-lexer/test/errors/include-filter-no-path-2.pug",
    "content": "include:foo"
  },
  {
    "path": "packages/pug-lexer/test/errors/include-filter-no-path.pug",
    "content": "include:foo "
  },
  {
    "path": "packages/pug-lexer/test/errors/include-filter-no-space.pug",
    "content": "include:foo()foo.£"
  },
  {
    "path": "packages/pug-lexer/test/errors/include-no-path.pug",
    "content": "include"
  },
  {
    "path": "packages/pug-lexer/test/errors/inconsistent-indentation.pug",
    "content": "html\n  body\n      p Hey\n    p Is this in <body> or in <p>?\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/interpolated-call.pug",
    "content": "mixin a\n  p hey\n\n- var myMixin = 'a'\n+#{myMixin]}\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/invalid-class-name-1.pug",
    "content": ".95"
  },
  {
    "path": "packages/pug-lexer/test/errors/invalid-class-name-2.pug",
    "content": ".-"
  },
  {
    "path": "packages/pug-lexer/test/errors/invalid-class-name-3.pug",
    "content": ".ä"
  },
  {
    "path": "packages/pug-lexer/test/errors/invalid-id.pug",
    "content": "#ä"
  },
  {
    "path": "packages/pug-lexer/test/errors/malformed-each.pug",
    "content": "each foo bar"
  },
  {
    "path": "packages/pug-lexer/test/errors/malformed-extend.pug",
    "content": "extend(data-foo='bar') I'm pretending to be a tag"
  },
  {
    "path": "packages/pug-lexer/test/errors/malformed-include.pug",
    "content": "include(data-foo='bar') I'm pretending to be a tag"
  },
  {
    "path": "packages/pug-lexer/test/errors/mismatched-inline-tag.pug",
    "content": "//- #1871\np #[strong a}\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/mismatched-tag-interpolation.pug",
    "content": "#{\n  'abc'\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/multi-line-interpolation.pug",
    "content": "p.\n    #[strong This strong text is really really long. This strong\n    text is really really long. This strong text is really really\n    long.]"
  },
  {
    "path": "packages/pug-lexer/test/errors/old-prefixed-each.pug",
    "content": "ul\n  - each foo in bar\n    li= foo\n"
  },
  {
    "path": "packages/pug-lexer/test/errors/open-interpolation.pug",
    "content": "p #[strong this is some terrible brackets mismatching"
  },
  {
    "path": "packages/pug-lexer/test/errors/when-with-no-expression.pug",
    "content": "when"
  },
  {
    "path": "packages/pug-lexer/test/errors/while-with-no-expression.pug",
    "content": "while"
  },
  {
    "path": "packages/pug-lexer/test/index.test.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar assert = require('assert');\nvar lex = require('../');\n\nvar dir = __dirname + '/cases/';\nfs.readdirSync(dir).forEach(function(testCase) {\n  if (/\\.pug$/.test(testCase)) {\n    test(testCase, () => {\n      var result = lex(fs.readFileSync(dir + testCase, 'utf8'), {\n        filename: dir + testCase,\n      });\n      expect(result).toMatchSnapshot();\n    });\n  }\n});\n\nvar edir = __dirname + '/errors/';\nfs.readdirSync(edir).forEach(function(testCase) {\n  if (/\\.pug$/.test(testCase)) {\n    test(testCase, () => {\n      var actual;\n      try {\n        lex(fs.readFileSync(edir + testCase, 'utf8'), {\n          filename: edir + testCase,\n        });\n        throw new Error('Expected ' + testCase + ' to throw an exception.');\n      } catch (ex) {\n        if (!ex || !ex.code || ex.code.indexOf('PUG:') !== 0) throw ex;\n        actual = {\n          msg: ex.msg,\n          code: ex.code,\n          line: ex.line,\n          column: ex.column,\n        };\n      }\n      expect(actual).toMatchSnapshot();\n    });\n  }\n});\n"
  },
  {
    "path": "packages/pug-linker/HISTORY.md",
    "content": "1.0.1 / 2016-08-26\n==================\n\n  * Update to `pug-walk@^1.0.0`\n\n1.0.0 / 2016-06-02\n==================\n\n  * Mark as stable\n  * Make unexpected blocks errors\n"
  },
  {
    "path": "packages/pug-linker/LICENSE",
    "content": "Copyright (c) 2015 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-linker/README.md",
    "content": "# pug-linker\n\nLink multiple pug ASTs together using include/extends\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-linker/master.svg)](https://travis-ci.org/pugjs/pug-linker)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-linker)](https://david-dm.org/pugjs/pug?path=packages/pug-linker)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-linker)](https://david-dm.org/pugjs/pug?path=packages/pug-linker&type=dev)\n[![NPM version](https://img.shields.io/npm/v/pug-linker.svg)](https://www.npmjs.org/package/pug-linker)\n\n## Installation\n\n    npm install pug-linker\n\n## Usage\n\n```js\nvar link = require('pug-linker');\n```\n\n### `link(ast)`\n\nFlatten the Pug AST of inclusion and inheritance.\n\nThis function merely links the AST together; it doesn't read the file system to resolve and parse included and extended files. Thus, the main AST must already have the ASTs of the included and extended files embedded in the `FileReference` nodes. `pug-load` is designed to do that.\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-linker/index.js",
    "content": "'use strict';\n\nvar assert = require('assert');\nvar walk = require('pug-walk');\n\nfunction error() {\n  throw require('pug-error').apply(null, arguments);\n}\n\nmodule.exports = link;\nfunction link(ast) {\n  assert(\n    ast.type === 'Block',\n    'The top level element should always be a block'\n  );\n  var extendsNode = null;\n  if (ast.nodes.length) {\n    var hasExtends = ast.nodes[0].type === 'Extends';\n    checkExtendPosition(ast, hasExtends);\n    if (hasExtends) {\n      extendsNode = ast.nodes.shift();\n    }\n  }\n  ast = applyIncludes(ast);\n  ast.declaredBlocks = findDeclaredBlocks(ast);\n  if (extendsNode) {\n    var mixins = [];\n    var expectedBlocks = [];\n    ast.nodes.forEach(function addNode(node) {\n      if (node.type === 'NamedBlock') {\n        expectedBlocks.push(node);\n      } else if (node.type === 'Block') {\n        node.nodes.forEach(addNode);\n      } else if (node.type === 'Mixin' && node.call === false) {\n        mixins.push(node);\n      } else {\n        error(\n          'UNEXPECTED_NODES_IN_EXTENDING_ROOT',\n          'Only named blocks and mixins can appear at the top level of an extending template',\n          node\n        );\n      }\n    });\n    var parent = link(extendsNode.file.ast);\n    extend(parent.declaredBlocks, ast);\n    var foundBlockNames = [];\n    walk(parent, function(node) {\n      if (node.type === 'NamedBlock') {\n        foundBlockNames.push(node.name);\n      }\n    });\n    expectedBlocks.forEach(function(expectedBlock) {\n      if (foundBlockNames.indexOf(expectedBlock.name) === -1) {\n        error(\n          'UNEXPECTED_BLOCK',\n          'Unexpected block ' + expectedBlock.name,\n          expectedBlock\n        );\n      }\n    });\n    Object.keys(ast.declaredBlocks).forEach(function(name) {\n      parent.declaredBlocks[name] = ast.declaredBlocks[name];\n    });\n    parent.nodes = mixins.concat(parent.nodes);\n    parent.hasExtends = true;\n    return parent;\n  }\n  return ast;\n}\n\nfunction findDeclaredBlocks(ast) /*: {[name: string]: Array<BlockNode>}*/ {\n  var definitions = {};\n  walk(ast, function before(node) {\n    if (node.type === 'NamedBlock' && node.mode === 'replace') {\n      definitions[node.name] = definitions[node.name] || [];\n      definitions[node.name].push(node);\n    }\n  });\n  return definitions;\n}\n\nfunction flattenParentBlocks(parentBlocks, accumulator) {\n  accumulator = accumulator || [];\n  parentBlocks.forEach(function(parentBlock) {\n    if (parentBlock.parents) {\n      flattenParentBlocks(parentBlock.parents, accumulator);\n    }\n    accumulator.push(parentBlock);\n  });\n  return accumulator;\n}\n\nfunction extend(parentBlocks, ast) {\n  var stack = {};\n  walk(\n    ast,\n    function before(node) {\n      if (node.type === 'NamedBlock') {\n        if (stack[node.name] === node.name) {\n          return (node.ignore = true);\n        }\n        stack[node.name] = node.name;\n        var parentBlockList = parentBlocks[node.name]\n          ? flattenParentBlocks(parentBlocks[node.name])\n          : [];\n        if (parentBlockList.length) {\n          node.parents = parentBlockList;\n          parentBlockList.forEach(function(parentBlock) {\n            switch (node.mode) {\n              case 'append':\n                parentBlock.nodes = parentBlock.nodes.concat(node.nodes);\n                break;\n              case 'prepend':\n                parentBlock.nodes = node.nodes.concat(parentBlock.nodes);\n                break;\n              case 'replace':\n                parentBlock.nodes = node.nodes;\n                break;\n            }\n          });\n        }\n      }\n    },\n    function after(node) {\n      if (node.type === 'NamedBlock' && !node.ignore) {\n        delete stack[node.name];\n      }\n    }\n  );\n}\n\nfunction applyIncludes(ast, child) {\n  return walk(\n    ast,\n    function before(node, replace) {\n      if (node.type === 'RawInclude') {\n        replace({type: 'Text', val: node.file.str.replace(/\\r/g, '')});\n      }\n    },\n    function after(node, replace) {\n      if (node.type === 'Include') {\n        var childAST = link(node.file.ast);\n        if (childAST.hasExtends) {\n          childAST = removeBlocks(childAST);\n        }\n        replace(applyYield(childAST, node.block));\n      }\n    }\n  );\n}\nfunction removeBlocks(ast) {\n  return walk(ast, function(node, replace) {\n    if (node.type === 'NamedBlock') {\n      replace({\n        type: 'Block',\n        nodes: node.nodes,\n      });\n    }\n  });\n}\n\nfunction applyYield(ast, block) {\n  if (!block || !block.nodes.length) return ast;\n  var replaced = false;\n  ast = walk(ast, null, function(node, replace) {\n    if (node.type === 'YieldBlock') {\n      replaced = true;\n      node.type = 'Block';\n      node.nodes = [block];\n    }\n  });\n  function defaultYieldLocation(node) {\n    var res = node;\n    for (var i = 0; i < node.nodes.length; i++) {\n      if (node.nodes[i].textOnly) continue;\n      if (node.nodes[i].type === 'Block') {\n        res = defaultYieldLocation(node.nodes[i]);\n      } else if (node.nodes[i].block && node.nodes[i].block.nodes.length) {\n        res = defaultYieldLocation(node.nodes[i].block);\n      }\n    }\n    return res;\n  }\n  if (!replaced) {\n    // todo: probably should deprecate this with a warning\n    defaultYieldLocation(ast).nodes.push(block);\n  }\n  return ast;\n}\n\nfunction checkExtendPosition(ast, hasExtends) {\n  var legitExtendsReached = false;\n  walk(ast, function(node) {\n    if (node.type === 'Extends') {\n      if (hasExtends && !legitExtendsReached) {\n        legitExtendsReached = true;\n      } else {\n        error(\n          'EXTENDS_NOT_FIRST',\n          'Declaration of template inheritance (\"extends\") should be the first thing in the file. There can only be one extends statement per file.',\n          node\n        );\n      }\n    }\n  });\n}\n"
  },
  {
    "path": "packages/pug-linker/package.json",
    "content": "{\n  \"name\": \"pug-linker\",\n  \"version\": \"3.0.6\",\n  \"description\": \"Link multiple pug ASTs together using include/extends\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"pug-error\": \"^1.3.3\",\n    \"pug-walk\": \"^1.1.8\"\n  },\n  \"devDependencies\": {\n    \"pug-lexer\": \"^4.1.0\",\n    \"pug-load\": \"^2.0.12\",\n    \"pug-parser\": \"^5.0.1\"\n  },\n  \"files\": [\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-linker\"\n  },\n  \"author\": \"Forbes Lindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-linker/test/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`cases from pug include.script.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include.script.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"mustEscape\": false,\n          \"name\": \"id\",\n          \"val\": \"'pet-template'\",\n        },\n        Object {\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/x-template'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"include.script.pug\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"declaredBlocks\": Object {},\n            \"filename\": \"auxiliary/pet.pug\",\n            \"line\": 0,\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'pet'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/pet.pug\",\n                  \"line\": 1,\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"auxiliary/pet.pug\",\n                        \"line\": 2,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"auxiliary/pet.pug\",\n                            \"line\": 2,\n                            \"type\": \"Text\",\n                            \"val\": \"{{name}}\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"auxiliary/pet.pug\",\n                      \"isInline\": false,\n                      \"line\": 2,\n                      \"name\": \"h1\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"auxiliary/pet.pug\",\n                        \"line\": 3,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"auxiliary/pet.pug\",\n                            \"line\": 3,\n                            \"type\": \"Text\",\n                            \"val\": \"{{name}} is a {{species}} that is {{age}} old\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"auxiliary/pet.pug\",\n                      \"isInline\": false,\n                      \"line\": 3,\n                      \"name\": \"p\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/pet.pug\",\n                \"isInline\": false,\n                \"line\": 1,\n                \"name\": \"div\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"include.script.pug\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include.yield.nested.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include.yield.nested.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"declaredBlocks\": Object {},\n      \"filename\": \"auxiliary/yield-nested.pug\",\n      \"line\": 0,\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"auxiliary/yield-nested.pug\",\n            \"line\": 1,\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/yield-nested.pug\",\n                  \"line\": 2,\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"auxiliary/yield-nested.pug\",\n                        \"line\": 3,\n                        \"nodes\": Array [],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"auxiliary/yield-nested.pug\",\n                      \"isInline\": false,\n                      \"line\": 3,\n                      \"name\": \"title\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/yield-nested.pug\",\n                \"isInline\": false,\n                \"line\": 2,\n                \"name\": \"head\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/yield-nested.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"auxiliary/yield-nested.pug\",\n                        \"line\": 5,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"auxiliary/yield-nested.pug\",\n                            \"line\": 5,\n                            \"type\": \"Text\",\n                            \"val\": \"Page\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"auxiliary/yield-nested.pug\",\n                      \"isInline\": false,\n                      \"line\": 5,\n                      \"name\": \"h1\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [\n                        Object {\n                          \"mustEscape\": false,\n                          \"name\": \"id\",\n                          \"val\": \"'content'\",\n                        },\n                      ],\n                      \"block\": Object {\n                        \"filename\": \"auxiliary/yield-nested.pug\",\n                        \"line\": 6,\n                        \"nodes\": Array [\n                          Object {\n                            \"attributeBlocks\": Array [],\n                            \"attrs\": Array [\n                              Object {\n                                \"mustEscape\": false,\n                                \"name\": \"id\",\n                                \"val\": \"'content-wrapper'\",\n                              },\n                            ],\n                            \"block\": Object {\n                              \"filename\": \"auxiliary/yield-nested.pug\",\n                              \"line\": 7,\n                              \"nodes\": Array [\n                                Object {\n                                  \"filename\": \"auxiliary/yield-nested.pug\",\n                                  \"line\": 8,\n                                  \"nodes\": Array [\n                                    Object {\n                                      \"filename\": \"include.yield.nested.pug\",\n                                      \"line\": 3,\n                                      \"nodes\": Array [\n                                        Object {\n                                          \"attributeBlocks\": Array [],\n                                          \"attrs\": Array [],\n                                          \"block\": Object {\n                                            \"filename\": \"include.yield.nested.pug\",\n                                            \"line\": 3,\n                                            \"nodes\": Array [\n                                              Object {\n                                                \"filename\": \"include.yield.nested.pug\",\n                                                \"line\": 3,\n                                                \"type\": \"Text\",\n                                                \"val\": \"some content\",\n                                              },\n                                            ],\n                                            \"type\": \"Block\",\n                                          },\n                                          \"filename\": \"include.yield.nested.pug\",\n                                          \"isInline\": false,\n                                          \"line\": 3,\n                                          \"name\": \"p\",\n                                          \"selfClosing\": false,\n                                          \"type\": \"Tag\",\n                                        },\n                                        Object {\n                                          \"attributeBlocks\": Array [],\n                                          \"attrs\": Array [],\n                                          \"block\": Object {\n                                            \"filename\": \"include.yield.nested.pug\",\n                                            \"line\": 4,\n                                            \"nodes\": Array [\n                                              Object {\n                                                \"filename\": \"include.yield.nested.pug\",\n                                                \"line\": 4,\n                                                \"type\": \"Text\",\n                                                \"val\": \"and some more\",\n                                              },\n                                            ],\n                                            \"type\": \"Block\",\n                                          },\n                                          \"filename\": \"include.yield.nested.pug\",\n                                          \"isInline\": false,\n                                          \"line\": 4,\n                                          \"name\": \"p\",\n                                          \"selfClosing\": false,\n                                          \"type\": \"Tag\",\n                                        },\n                                      ],\n                                      \"type\": \"Block\",\n                                    },\n                                  ],\n                                  \"type\": \"Block\",\n                                },\n                              ],\n                              \"type\": \"Block\",\n                            },\n                            \"filename\": \"auxiliary/yield-nested.pug\",\n                            \"isInline\": false,\n                            \"line\": 7,\n                            \"name\": \"div\",\n                            \"selfClosing\": false,\n                            \"type\": \"Tag\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"auxiliary/yield-nested.pug\",\n                      \"isInline\": false,\n                      \"line\": 6,\n                      \"name\": \"div\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [\n                        Object {\n                          \"mustEscape\": false,\n                          \"name\": \"id\",\n                          \"val\": \"'footer'\",\n                        },\n                      ],\n                      \"block\": Object {\n                        \"filename\": \"auxiliary/yield-nested.pug\",\n                        \"line\": 9,\n                        \"nodes\": Array [\n                          Object {\n                            \"attributeBlocks\": Array [],\n                            \"attrs\": Array [],\n                            \"block\": Object {\n                              \"filename\": \"auxiliary/yield-nested.pug\",\n                              \"line\": 10,\n                              \"nodes\": Array [],\n                              \"type\": \"Block\",\n                            },\n                            \"filename\": \"auxiliary/yield-nested.pug\",\n                            \"isInline\": false,\n                            \"line\": 10,\n                            \"name\": \"stuff\",\n                            \"selfClosing\": false,\n                            \"type\": \"Tag\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"auxiliary/yield-nested.pug\",\n                      \"isInline\": false,\n                      \"line\": 9,\n                      \"name\": \"div\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/yield-nested.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"body\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"auxiliary/yield-nested.pug\",\n          \"isInline\": false,\n          \"line\": 1,\n          \"name\": \"html\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"Block\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-extends-from-root.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-extends-from-root.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"declaredBlocks\": Object {\n        \"content\": Array [\n          Object {\n            \"filename\": \"auxiliary/extends-from-root.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"content\",\n            \"nodes\": Array [\n              Object {\n                \"declaredBlocks\": Object {},\n                \"filename\": \"auxiliary/include-from-root.pug\",\n                \"line\": 0,\n                \"nodes\": Array [\n                  Object {\n                    \"attributeBlocks\": Array [],\n                    \"attrs\": Array [],\n                    \"block\": Object {\n                      \"filename\": \"auxiliary/include-from-root.pug\",\n                      \"line\": 1,\n                      \"nodes\": Array [\n                        Object {\n                          \"filename\": \"auxiliary/include-from-root.pug\",\n                          \"line\": 1,\n                          \"type\": \"Text\",\n                          \"val\": \"hello\",\n                        },\n                      ],\n                      \"type\": \"Block\",\n                    },\n                    \"filename\": \"auxiliary/include-from-root.pug\",\n                    \"isInline\": false,\n                    \"line\": 1,\n                    \"name\": \"h1\",\n                    \"selfClosing\": false,\n                    \"type\": \"Tag\",\n                  },\n                ],\n                \"type\": \"Block\",\n              },\n            ],\n            \"parents\": Array [\n              Object {\n                \"filename\": \"auxiliary/layout.pug\",\n                \"line\": 6,\n                \"mode\": \"replace\",\n                \"name\": \"content\",\n                \"nodes\": Array [\n                  Object {\n                    \"declaredBlocks\": Object {},\n                    \"filename\": \"auxiliary/include-from-root.pug\",\n                    \"line\": 0,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"auxiliary/include-from-root.pug\",\n                          \"line\": 1,\n                          \"nodes\": Array [\n                            Object {\n                              \"filename\": \"auxiliary/include-from-root.pug\",\n                              \"line\": 1,\n                              \"type\": \"Text\",\n                              \"val\": \"hello\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"filename\": \"auxiliary/include-from-root.pug\",\n                        \"isInline\": false,\n                        \"line\": 1,\n                        \"name\": \"h1\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                ],\n                \"type\": \"NamedBlock\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n        \"head\": Array [\n          Object {\n            \"filename\": \"auxiliary/layout.pug\",\n            \"line\": 4,\n            \"mode\": \"replace\",\n            \"name\": \"head\",\n            \"nodes\": Array [],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n      },\n      \"filename\": \"auxiliary/layout.pug\",\n      \"hasExtends\": true,\n      \"line\": 0,\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"auxiliary/layout.pug\",\n            \"line\": 1,\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/layout.pug\",\n                  \"line\": 2,\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"auxiliary/layout.pug\",\n                        \"line\": 3,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"auxiliary/layout.pug\",\n                            \"line\": 3,\n                            \"type\": \"Text\",\n                            \"val\": \"My Application\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"auxiliary/layout.pug\",\n                      \"isInline\": false,\n                      \"line\": 3,\n                      \"name\": \"title\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"nodes\": Array [],\n                      \"type\": \"Block\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/layout.pug\",\n                \"isInline\": false,\n                \"line\": 2,\n                \"name\": \"head\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [\n                    Object {\n                      \"nodes\": Array [\n                        Object {\n                          \"declaredBlocks\": Object {},\n                          \"filename\": \"auxiliary/include-from-root.pug\",\n                          \"line\": 0,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"auxiliary/include-from-root.pug\",\n                                \"line\": 1,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"filename\": \"auxiliary/include-from-root.pug\",\n                                    \"line\": 1,\n                                    \"type\": \"Text\",\n                                    \"val\": \"hello\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"filename\": \"auxiliary/include-from-root.pug\",\n                              \"isInline\": false,\n                              \"line\": 1,\n                              \"name\": \"h1\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                      ],\n                      \"type\": \"Block\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"body\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"auxiliary/layout.pug\",\n          \"isInline\": false,\n          \"line\": 1,\n          \"name\": \"html\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"Block\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-extends-of-common-template.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-extends-of-common-template.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"declaredBlocks\": Object {\n        \"test\": Array [\n          Object {\n            \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"test\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                      \"line\": 4,\n                      \"type\": \"Text\",\n                      \"val\": \"test1\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"div\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"parents\": Array [\n              Object {\n                \"filename\": \"auxiliary/empty-block.pug\",\n                \"line\": 1,\n                \"mode\": \"replace\",\n                \"name\": \"test\",\n                \"nodes\": Array [\n                  Object {\n                    \"attributeBlocks\": Array [],\n                    \"attrs\": Array [],\n                    \"block\": Object {\n                      \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                      \"line\": 4,\n                      \"nodes\": Array [\n                        Object {\n                          \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                          \"line\": 4,\n                          \"type\": \"Text\",\n                          \"val\": \"test1\",\n                        },\n                      ],\n                      \"type\": \"Block\",\n                    },\n                    \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                    \"isInline\": false,\n                    \"line\": 4,\n                    \"name\": \"div\",\n                    \"selfClosing\": false,\n                    \"type\": \"Tag\",\n                  },\n                ],\n                \"type\": \"NamedBlock\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n      },\n      \"filename\": \"auxiliary/empty-block.pug\",\n      \"hasExtends\": true,\n      \"line\": 0,\n      \"nodes\": Array [\n        Object {\n          \"nodes\": Array [\n            Object {\n              \"attributeBlocks\": Array [],\n              \"attrs\": Array [],\n              \"block\": Object {\n                \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                \"line\": 4,\n                \"nodes\": Array [\n                  Object {\n                    \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                    \"line\": 4,\n                    \"type\": \"Text\",\n                    \"val\": \"test1\",\n                  },\n                ],\n                \"type\": \"Block\",\n              },\n              \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n              \"isInline\": false,\n              \"line\": 4,\n              \"name\": \"div\",\n              \"selfClosing\": false,\n              \"type\": \"Tag\",\n            },\n          ],\n          \"type\": \"Block\",\n        },\n      ],\n      \"type\": \"Block\",\n    },\n    Object {\n      \"declaredBlocks\": Object {\n        \"test\": Array [\n          Object {\n            \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"test\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                      \"line\": 4,\n                      \"type\": \"Text\",\n                      \"val\": \"test2\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"div\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"parents\": Array [\n              Object {\n                \"filename\": \"auxiliary/empty-block.pug\",\n                \"line\": 1,\n                \"mode\": \"replace\",\n                \"name\": \"test\",\n                \"nodes\": Array [\n                  Object {\n                    \"attributeBlocks\": Array [],\n                    \"attrs\": Array [],\n                    \"block\": Object {\n                      \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                      \"line\": 4,\n                      \"nodes\": Array [\n                        Object {\n                          \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                          \"line\": 4,\n                          \"type\": \"Text\",\n                          \"val\": \"test2\",\n                        },\n                      ],\n                      \"type\": \"Block\",\n                    },\n                    \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                    \"isInline\": false,\n                    \"line\": 4,\n                    \"name\": \"div\",\n                    \"selfClosing\": false,\n                    \"type\": \"Tag\",\n                  },\n                ],\n                \"type\": \"NamedBlock\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n      },\n      \"filename\": \"auxiliary/empty-block.pug\",\n      \"hasExtends\": true,\n      \"line\": 0,\n      \"nodes\": Array [\n        Object {\n          \"nodes\": Array [\n            Object {\n              \"attributeBlocks\": Array [],\n              \"attrs\": Array [],\n              \"block\": Object {\n                \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                \"line\": 4,\n                \"nodes\": Array [\n                  Object {\n                    \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                    \"line\": 4,\n                    \"type\": \"Text\",\n                    \"val\": \"test2\",\n                  },\n                ],\n                \"type\": \"Block\",\n              },\n              \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n              \"isInline\": false,\n              \"line\": 4,\n              \"name\": \"div\",\n              \"selfClosing\": false,\n              \"type\": \"Tag\",\n            },\n          ],\n          \"type\": \"Block\",\n        },\n      ],\n      \"type\": \"Block\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-extends-relative.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-extends-relative.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"declaredBlocks\": Object {\n        \"content\": Array [\n          Object {\n            \"filename\": \"../cases-src/auxiliary/extends-relative.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"content\",\n            \"nodes\": Array [\n              Object {\n                \"type\": \"Text\",\n                \"val\": \"h1 hello\",\n              },\n            ],\n            \"parents\": Array [\n              Object {\n                \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                \"line\": 6,\n                \"mode\": \"replace\",\n                \"name\": \"content\",\n                \"nodes\": Array [\n                  Object {\n                    \"type\": \"Text\",\n                    \"val\": \"h1 hello\",\n                  },\n                ],\n                \"type\": \"NamedBlock\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n        \"head\": Array [\n          Object {\n            \"filename\": \"../cases-src/auxiliary/layout.pug\",\n            \"line\": 4,\n            \"mode\": \"replace\",\n            \"name\": \"head\",\n            \"nodes\": Array [],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n      },\n      \"filename\": \"../cases-src/auxiliary/layout.pug\",\n      \"hasExtends\": true,\n      \"line\": 0,\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"../cases-src/auxiliary/layout.pug\",\n            \"line\": 1,\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                  \"line\": 2,\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                        \"line\": 3,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                            \"line\": 3,\n                            \"type\": \"Text\",\n                            \"val\": \"My Application\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                      \"isInline\": false,\n                      \"line\": 3,\n                      \"name\": \"title\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"nodes\": Array [],\n                      \"type\": \"Block\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                \"isInline\": false,\n                \"line\": 2,\n                \"name\": \"head\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [\n                    Object {\n                      \"nodes\": Array [\n                        Object {\n                          \"type\": \"Text\",\n                          \"val\": \"h1 hello\",\n                        },\n                      ],\n                      \"type\": \"Block\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"body\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"../cases-src/auxiliary/layout.pug\",\n          \"isInline\": false,\n          \"line\": 1,\n          \"name\": \"html\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"Block\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-filter.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-filter.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"include-filter.pug\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"include-filter.pug\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"type\": \"Text\",\n                  \"val\": \"Just _some_ markdown **tests**.\n\nWith new line.\n\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"include-filter.pug\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"type\": \"Text\",\n                        \"val\": \"math =\n  square: (value) -> value * value\n\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"filename\": \"include-filter.pug\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"include-filter.pug\",\n                    \"line\": 6,\n                    \"nodes\": Array [\n                      Object {\n                        \"type\": \"Text\",\n                        \"val\": \"math =\n  square: (value) -> value * value\n\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"filename\": \"include-filter.pug\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"include-filter.pug\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"include-filter.pug\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-filter-stylus.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-filter-stylus.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"\\\\\"text/css\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"include-filter-stylus.pug\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"type\": \"Text\",\n            \"val\": \"@import \\\\\"some-included\\\\\"\n\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"include-filter-stylus.pug\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"style\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-only-text.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-only-text.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"include-only-text.pug\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"include-only-text.pug\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"include-only-text.pug\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"declaredBlocks\": Object {},\n                        \"filename\": \"include-only-text-body.pug\",\n                        \"line\": 0,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"include-only-text-body.pug\",\n                            \"line\": 1,\n                            \"type\": \"Text\",\n                            \"val\": \"The message is \\\\\"\",\n                          },\n                          Object {\n                            \"filename\": \"include-only-text-body.pug\",\n                            \"line\": 2,\n                            \"nodes\": Array [\n                              Object {\n                                \"filename\": \"include-only-text.pug\",\n                                \"line\": 5,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"attributeBlocks\": Array [],\n                                    \"attrs\": Array [],\n                                    \"block\": Object {\n                                      \"filename\": \"include-only-text.pug\",\n                                      \"line\": 5,\n                                      \"nodes\": Array [\n                                        Object {\n                                          \"filename\": \"include-only-text.pug\",\n                                          \"line\": 5,\n                                          \"type\": \"Text\",\n                                          \"val\": \"hello world\",\n                                        },\n                                      ],\n                                      \"type\": \"Block\",\n                                    },\n                                    \"filename\": \"include-only-text.pug\",\n                                    \"isInline\": true,\n                                    \"line\": 5,\n                                    \"name\": \"em\",\n                                    \"selfClosing\": false,\n                                    \"type\": \"Tag\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                            ],\n                            \"type\": \"Block\",\n                          },\n                          Object {\n                            \"filename\": \"include-only-text-body.pug\",\n                            \"line\": 3,\n                            \"type\": \"Text\",\n                            \"val\": \"\\\\\"\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"filename\": \"include-only-text.pug\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"include-only-text.pug\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"include-only-text.pug\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-only-text-body.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-only-text-body.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"filename\": \"include-only-text-body.pug\",\n      \"line\": 1,\n      \"type\": \"Text\",\n      \"val\": \"The message is \\\\\"\",\n    },\n    Object {\n      \"filename\": \"include-only-text-body.pug\",\n      \"line\": 2,\n      \"type\": \"YieldBlock\",\n    },\n    Object {\n      \"filename\": \"include-only-text-body.pug\",\n      \"line\": 3,\n      \"type\": \"Text\",\n      \"val\": \"\\\\\"\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-with-text.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-with-text.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"include-with-text.pug\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"declaredBlocks\": Object {},\n            \"filename\": \"include-with-text-head.pug\",\n            \"line\": 0,\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"include-with-text-head.pug\",\n                  \"line\": 1,\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [\n                        Object {\n                          \"mustEscape\": true,\n                          \"name\": \"type\",\n                          \"val\": \"'text/javascript'\",\n                        },\n                      ],\n                      \"block\": Object {\n                        \"filename\": \"include-with-text-head.pug\",\n                        \"line\": 2,\n                        \"nodes\": Array [\n                          Object {\n                            \"line\": 3,\n                            \"type\": \"Text\",\n                            \"val\": \"alert('hello world');\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"include-with-text-head.pug\",\n                      \"isInline\": false,\n                      \"line\": 2,\n                      \"name\": \"script\",\n                      \"selfClosing\": false,\n                      \"textOnly\": true,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"filename\": \"include-with-text.pug\",\n                      \"line\": 3,\n                      \"nodes\": Array [\n                        Object {\n                          \"attributeBlocks\": Array [],\n                          \"attrs\": Array [\n                            Object {\n                              \"mustEscape\": true,\n                              \"name\": \"src\",\n                              \"val\": \"'/caustic.js'\",\n                            },\n                          ],\n                          \"block\": Object {\n                            \"filename\": \"include-with-text.pug\",\n                            \"line\": 3,\n                            \"nodes\": Array [],\n                            \"type\": \"Block\",\n                          },\n                          \"filename\": \"include-with-text.pug\",\n                          \"isInline\": false,\n                          \"line\": 3,\n                          \"name\": \"script\",\n                          \"selfClosing\": false,\n                          \"type\": \"Tag\",\n                        },\n                        Object {\n                          \"attributeBlocks\": Array [],\n                          \"attrs\": Array [\n                            Object {\n                              \"mustEscape\": true,\n                              \"name\": \"src\",\n                              \"val\": \"'/app.js'\",\n                            },\n                          ],\n                          \"block\": Object {\n                            \"filename\": \"include-with-text.pug\",\n                            \"line\": 4,\n                            \"nodes\": Array [],\n                            \"type\": \"Block\",\n                          },\n                          \"filename\": \"include-with-text.pug\",\n                          \"isInline\": false,\n                          \"line\": 4,\n                          \"name\": \"script\",\n                          \"selfClosing\": false,\n                          \"type\": \"Tag\",\n                        },\n                      ],\n                      \"type\": \"Block\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"include-with-text-head.pug\",\n                \"isInline\": false,\n                \"line\": 1,\n                \"name\": \"head\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"include-with-text.pug\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug include-with-text-head.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"include-with-text-head.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"include-with-text-head.pug\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"type\",\n                \"val\": \"'text/javascript'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"include-with-text-head.pug\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"alert('hello world');\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"include-with-text-head.pug\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"textOnly\": true,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"include-with-text-head.pug\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"head\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug includes.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"includes.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"declaredBlocks\": Object {},\n      \"filename\": \"auxiliary/mixins.pug\",\n      \"line\": 0,\n      \"nodes\": Array [\n        Object {\n          \"args\": null,\n          \"block\": Object {\n            \"filename\": \"auxiliary/mixins.pug\",\n            \"line\": 3,\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"auxiliary/mixins.pug\",\n                  \"line\": 3,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"auxiliary/mixins.pug\",\n                      \"line\": 3,\n                      \"type\": \"Text\",\n                      \"val\": \"bar\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"auxiliary/mixins.pug\",\n                \"isInline\": false,\n                \"line\": 3,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"call\": false,\n          \"filename\": \"auxiliary/mixins.pug\",\n          \"line\": 2,\n          \"name\": \"foo\",\n          \"type\": \"Mixin\",\n        },\n      ],\n      \"type\": \"Block\",\n    },\n    Object {\n      \"args\": null,\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": null,\n      \"call\": true,\n      \"filename\": \"includes.pug\",\n      \"line\": 4,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"includes.pug\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"type\": \"Text\",\n            \"val\": \"<p>:)</p>\n\",\n          },\n          Object {\n            \"type\": \"Text\",\n            \"val\": \"<script>\n  console.log(\\\\\"foo\\\\\\\\nbar\\\\\")\n</script>\n\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"type\",\n                \"val\": \"\\\\\"text/javascript\\\\\"\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"includes.pug\",\n              \"line\": 9,\n              \"nodes\": Array [\n                Object {\n                  \"type\": \"Text\",\n                  \"val\": \"var STRING_SUBSTITUTIONS = {    // table of character substitutions\n  '\\\\\\\\t': '\\\\\\\\\\\\\\\\t',\n  '\\\\\\\\r': '\\\\\\\\\\\\\\\\r',\n  '\\\\\\\\n': '\\\\\\\\\\\\\\\\n',\n  '\\\\\"' : '\\\\\\\\\\\\\\\\\\\\\"',\n  '\\\\\\\\\\\\\\\\': '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'\n};\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"includes.pug\",\n            \"isInline\": false,\n            \"line\": 9,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"includes.pug\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug includes-with-ext-js.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"includes-with-ext-js.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"includes-with-ext-js.pug\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"includes-with-ext-js.pug\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"type\": \"Text\",\n                  \"val\": \"var x = \\\\\"\\\\\\\\n here is some \\\\\\\\n new lined text\\\\\";\n\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"includes-with-ext-js.pug\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"name\": \"code\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"includes-with-ext-js.pug\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug layout.append.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {\n    \"body\": Array [\n      Object {\n        \"filename\": \"../fixtures/append/layout.pug\",\n        \"line\": 7,\n        \"mode\": \"replace\",\n        \"name\": \"body\",\n        \"nodes\": Array [],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n    \"head\": Array [\n      Object {\n        \"filename\": \"../fixtures/append/layout.pug\",\n        \"line\": 3,\n        \"mode\": \"replace\",\n        \"name\": \"head\",\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append/layout.pug\",\n              \"line\": 4,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append/layout.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/caustic.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append/layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append/layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'app.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append/app-layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append/app-layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'foo.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.append.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.append.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'bar.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.append.pug\",\n              \"line\": 6,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.append.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n  },\n  \"filename\": \"../fixtures/append/layout.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"../fixtures/append/layout.pug\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"filename\": \"../fixtures/append/layout.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"head\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/jquery.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/append/layout.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/append/layout.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/caustic.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/append/layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/append/layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'app.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/append/app-layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/append/app-layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'foo.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.append.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.append.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'bar.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.append.pug\",\n                  \"line\": 6,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.append.pug\",\n                \"isInline\": false,\n                \"line\": 6,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append/layout.pug\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/append/layout.pug\",\n                  \"line\": 7,\n                  \"mode\": \"replace\",\n                  \"name\": \"body\",\n                  \"nodes\": Array [],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append/layout.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"../fixtures/append/layout.pug\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug layout.append.without-block.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {\n    \"body\": Array [\n      Object {\n        \"filename\": \"../fixtures/append-without-block/layout.pug\",\n        \"line\": 7,\n        \"mode\": \"replace\",\n        \"name\": \"body\",\n        \"nodes\": Array [],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n    \"head\": Array [\n      Object {\n        \"filename\": \"../fixtures/append-without-block/layout.pug\",\n        \"line\": 3,\n        \"mode\": \"replace\",\n        \"name\": \"head\",\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append-without-block/layout.pug\",\n              \"line\": 4,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append-without-block/layout.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/caustic.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append-without-block/layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append-without-block/layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'app.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append-without-block/app-layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append-without-block/app-layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'foo.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.append.without-block.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.append.without-block.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'bar.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.append.without-block.pug\",\n              \"line\": 6,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.append.without-block.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n  },\n  \"filename\": \"../fixtures/append-without-block/layout.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"../fixtures/append-without-block/layout.pug\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"filename\": \"../fixtures/append-without-block/layout.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"head\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/jquery.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/append-without-block/layout.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/append-without-block/layout.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/caustic.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/append-without-block/layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/append-without-block/layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'app.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/append-without-block/app-layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/append-without-block/app-layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'foo.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.append.without-block.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.append.without-block.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'bar.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.append.without-block.pug\",\n                  \"line\": 6,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.append.without-block.pug\",\n                \"isInline\": false,\n                \"line\": 6,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/append-without-block/layout.pug\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/append-without-block/layout.pug\",\n                  \"line\": 7,\n                  \"mode\": \"replace\",\n                  \"name\": \"body\",\n                  \"nodes\": Array [],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/append-without-block/layout.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"../fixtures/append-without-block/layout.pug\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug layout.multi.append.prepend.block.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {\n    \"content\": Array [\n      Object {\n        \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n        \"line\": 3,\n        \"mode\": \"replace\",\n        \"name\": \"content\",\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'last'\",\n              },\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'prepend'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.multi.append.prepend.block.pug\",\n              \"line\": 13,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 13,\n                  \"type\": \"Text\",\n                  \"val\": \"Last prepend must appear at top\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"isInline\": false,\n            \"line\": 13,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'first'\",\n              },\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'prepend'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.multi.append.prepend.block.pug\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 7,\n                  \"type\": \"Text\",\n                  \"val\": \"Something prepended to content\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'content'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n                  \"line\": 5,\n                  \"type\": \"Text\",\n                  \"val\": \"Defined content\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'first'\",\n              },\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'append'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.multi.append.prepend.block.pug\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 4,\n                  \"type\": \"Text\",\n                  \"val\": \"Something appended to content\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'last'\",\n              },\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'append'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.multi.append.prepend.block.pug\",\n              \"line\": 10,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 10,\n                  \"type\": \"Text\",\n                  \"val\": \"Last append must be most last\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"isInline\": false,\n            \"line\": 10,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"parents\": Array [\n          Object {\n            \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n            \"line\": 1,\n            \"mode\": \"replace\",\n            \"name\": \"content\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'last'\",\n                  },\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'prepend'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 13,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"layout.multi.append.prepend.block.pug\",\n                      \"line\": 13,\n                      \"type\": \"Text\",\n                      \"val\": \"Last prepend must appear at top\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"isInline\": false,\n                \"line\": 13,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'first'\",\n                  },\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'prepend'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 7,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"layout.multi.append.prepend.block.pug\",\n                      \"line\": 7,\n                      \"type\": \"Text\",\n                      \"val\": \"Something prepended to content\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"isInline\": false,\n                \"line\": 7,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'content'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n                      \"line\": 5,\n                      \"type\": \"Text\",\n                      \"val\": \"Defined content\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"div\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'first'\",\n                  },\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'append'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"layout.multi.append.prepend.block.pug\",\n                      \"line\": 4,\n                      \"type\": \"Text\",\n                      \"val\": \"Something appended to content\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'last'\",\n                  },\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'append'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.multi.append.prepend.block.pug\",\n                  \"line\": 10,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"layout.multi.append.prepend.block.pug\",\n                      \"line\": 10,\n                      \"type\": \"Text\",\n                      \"val\": \"Last append must be most last\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"isInline\": false,\n                \"line\": 10,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n    \"head\": Array [\n      Object {\n        \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n        \"line\": 4,\n        \"mode\": \"replace\",\n        \"name\": \"head\",\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'foo.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.multi.append.prepend.block.pug\",\n              \"line\": 19,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"isInline\": false,\n            \"line\": 19,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'/app.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.multi.append.prepend.block.pug\",\n              \"line\": 16,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"isInline\": false,\n            \"line\": 16,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n  },\n  \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n      \"line\": 1,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'last'\",\n            },\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'prepend'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"line\": 13,\n            \"nodes\": Array [\n              Object {\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"line\": 13,\n                \"type\": \"Text\",\n                \"val\": \"Last prepend must appear at top\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"layout.multi.append.prepend.block.pug\",\n          \"isInline\": false,\n          \"line\": 13,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'first'\",\n            },\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'prepend'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"line\": 7,\n            \"nodes\": Array [\n              Object {\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"line\": 7,\n                \"type\": \"Text\",\n                \"val\": \"Something prepended to content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"layout.multi.append.prepend.block.pug\",\n          \"isInline\": false,\n          \"line\": 7,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'content'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n            \"line\": 4,\n            \"nodes\": Array [\n              Object {\n                \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n                \"line\": 5,\n                \"type\": \"Text\",\n                \"val\": \"Defined content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n          \"isInline\": false,\n          \"line\": 4,\n          \"name\": \"div\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'first'\",\n            },\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'append'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"line\": 4,\n            \"nodes\": Array [\n              Object {\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"line\": 4,\n                \"type\": \"Text\",\n                \"val\": \"Something appended to content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"layout.multi.append.prepend.block.pug\",\n          \"isInline\": false,\n          \"line\": 4,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'last'\",\n            },\n            Object {\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'append'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"line\": 10,\n            \"nodes\": Array [\n              Object {\n                \"filename\": \"layout.multi.append.prepend.block.pug\",\n                \"line\": 10,\n                \"type\": \"Text\",\n                \"val\": \"Last append must be most last\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"layout.multi.append.prepend.block.pug\",\n          \"isInline\": false,\n          \"line\": 10,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n      \"line\": 4,\n      \"mode\": \"replace\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"line\": 19,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"layout.multi.append.prepend.block.pug\",\n          \"isInline\": false,\n          \"line\": 19,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'/app.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'jquery.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.pug\",\n            \"line\": 16,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"filename\": \"layout.multi.append.prepend.block.pug\",\n          \"isInline\": false,\n          \"line\": 16,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug layout.prepend.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {\n    \"body\": Array [\n      Object {\n        \"filename\": \"../fixtures/prepend/layout.pug\",\n        \"line\": 7,\n        \"mode\": \"replace\",\n        \"name\": \"body\",\n        \"nodes\": Array [],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n    \"head\": Array [\n      Object {\n        \"filename\": \"../fixtures/prepend/layout.pug\",\n        \"line\": 3,\n        \"mode\": \"replace\",\n        \"name\": \"head\",\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'foo.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.prepend.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.prepend.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'bar.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.prepend.pug\",\n              \"line\": 6,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.prepend.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'app.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend/app-layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend/app-layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend/layout.pug\",\n              \"line\": 4,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend/layout.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/caustic.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend/layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend/layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n  },\n  \"filename\": \"../fixtures/prepend/layout.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"../fixtures/prepend/layout.pug\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"filename\": \"../fixtures/prepend/layout.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"head\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'foo.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.prepend.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.prepend.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'bar.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.prepend.pug\",\n                  \"line\": 6,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.prepend.pug\",\n                \"isInline\": false,\n                \"line\": 6,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'app.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/prepend/app-layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/prepend/app-layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/jquery.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/prepend/layout.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/prepend/layout.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/caustic.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/prepend/layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/prepend/layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend/layout.pug\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/prepend/layout.pug\",\n                  \"line\": 7,\n                  \"mode\": \"replace\",\n                  \"name\": \"body\",\n                  \"nodes\": Array [],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend/layout.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"../fixtures/prepend/layout.pug\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`cases from pug layout.prepend.without-block.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {\n    \"body\": Array [\n      Object {\n        \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n        \"line\": 7,\n        \"mode\": \"replace\",\n        \"name\": \"body\",\n        \"nodes\": Array [],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n    \"head\": Array [\n      Object {\n        \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n        \"line\": 3,\n        \"mode\": \"replace\",\n        \"name\": \"head\",\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'foo.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.prepend.without-block.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.prepend.without-block.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'bar.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"layout.prepend.without-block.pug\",\n              \"line\": 6,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"layout.prepend.without-block.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'app.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n              \"line\": 4,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'vendor/caustic.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n  },\n  \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n            \"line\": 3,\n            \"mode\": \"replace\",\n            \"name\": \"head\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'foo.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.prepend.without-block.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.prepend.without-block.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'bar.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"layout.prepend.without-block.pug\",\n                  \"line\": 6,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"layout.prepend.without-block.pug\",\n                \"isInline\": false,\n                \"line\": 6,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'app.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/jquery.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n                  \"line\": 4,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n                \"isInline\": false,\n                \"line\": 4,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"src\",\n                    \"val\": \"'vendor/caustic.js'\",\n                  },\n                ],\n                \"block\": Object {\n                  \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n                  \"line\": 5,\n                  \"nodes\": Array [],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n                \"isInline\": false,\n                \"line\": 5,\n                \"name\": \"script\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n                  \"line\": 7,\n                  \"mode\": \"replace\",\n                  \"name\": \"body\",\n                  \"nodes\": Array [],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`error handling child-with-tags.input.json 1`] = `\nObject {\n  \"code\": \"PUG:UNEXPECTED_NODES_IN_EXTENDING_ROOT\",\n  \"line\": 6,\n  \"msg\": \"Only named blocks and mixins can appear at the top level of an extending template\",\n}\n`;\n\nexports[`error handling extends-not-first.input.json 1`] = `\nObject {\n  \"code\": \"PUG:EXTENDS_NOT_FIRST\",\n  \"line\": 4,\n  \"msg\": \"Declaration of template inheritance (\\\\\"extends\\\\\") should be the first thing in the file. There can only be one extends statement per file.\",\n}\n`;\n\nexports[`error handling unexpected-block.input.json 1`] = `\nObject {\n  \"code\": \"PUG:UNEXPECTED_BLOCK\",\n  \"line\": 3,\n  \"msg\": \"Unexpected block foo\",\n}\n`;\n\nexports[`special cases extending-empty.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {},\n  \"filename\": \"../fixtures/empty.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`special cases extending-include.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {\n    \"body\": Array [\n      Object {\n        \"filename\": \"extending-include.pug\",\n        \"line\": 4,\n        \"mode\": \"replace\",\n        \"name\": \"body\",\n        \"nodes\": Array [\n          Object {\n            \"args\": \"'myimg.png'\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'with-border'\",\n              },\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"alt\",\n                \"val\": \"\\\\\"My image\\\\\"\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"filename\": \"extending-include.pug\",\n            \"line\": 5,\n            \"name\": \"image\",\n            \"type\": \"Mixin\",\n          },\n        ],\n        \"parents\": Array [\n          Object {\n            \"filename\": \"../fixtures/layout.pug\",\n            \"line\": 8,\n            \"mode\": \"replace\",\n            \"name\": \"body\",\n            \"nodes\": Array [\n              Object {\n                \"args\": \"'myimg.png'\",\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [\n                  Object {\n                    \"mustEscape\": false,\n                    \"name\": \"class\",\n                    \"val\": \"'with-border'\",\n                  },\n                  Object {\n                    \"mustEscape\": true,\n                    \"name\": \"alt\",\n                    \"val\": \"\\\\\"My image\\\\\"\",\n                  },\n                ],\n                \"block\": null,\n                \"call\": true,\n                \"filename\": \"extending-include.pug\",\n                \"line\": 5,\n                \"name\": \"image\",\n                \"type\": \"Mixin\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n    \"head\": Array [\n      Object {\n        \"filename\": \"../fixtures/layout.pug\",\n        \"line\": 5,\n        \"mode\": \"replace\",\n        \"name\": \"head\",\n        \"nodes\": Array [\n          Object {\n            \"filename\": \"../fixtures/layout.pug\",\n            \"isHtml\": true,\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"<title>Hello world!</title>\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n  },\n  \"filename\": \"../fixtures/layout.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"src\",\n      \"block\": Object {\n        \"filename\": \"../fixtures/mixins.pug\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [\n              \"attributes\",\n            ],\n            \"attrs\": Array [\n              Object {\n                \"mustEscape\": true,\n                \"name\": \"cl-src\",\n                \"val\": \"src\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"../fixtures/mixins.pug\",\n              \"line\": 2,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/mixins.pug\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"name\": \"img\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"filename\": \"../fixtures/mixins.pug\",\n      \"line\": 1,\n      \"name\": \"image\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"filename\": \"../fixtures/layout.pug\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"../fixtures/layout.pug\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/layout.pug\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/layout.pug\",\n                  \"line\": 5,\n                  \"mode\": \"replace\",\n                  \"name\": \"head\",\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"../fixtures/layout.pug\",\n                      \"isHtml\": true,\n                      \"line\": 6,\n                      \"type\": \"Text\",\n                      \"val\": \"<title>Hello world!</title>\",\n                    },\n                  ],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/layout.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/layout.pug\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/layout.pug\",\n                  \"line\": 8,\n                  \"mode\": \"replace\",\n                  \"name\": \"body\",\n                  \"nodes\": Array [\n                    Object {\n                      \"args\": \"'myimg.png'\",\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [\n                        Object {\n                          \"mustEscape\": false,\n                          \"name\": \"class\",\n                          \"val\": \"'with-border'\",\n                        },\n                        Object {\n                          \"mustEscape\": true,\n                          \"name\": \"alt\",\n                          \"val\": \"\\\\\"My image\\\\\"\",\n                        },\n                      ],\n                      \"block\": null,\n                      \"call\": true,\n                      \"filename\": \"extending-include.pug\",\n                      \"line\": 5,\n                      \"name\": \"image\",\n                      \"type\": \"Mixin\",\n                    },\n                  ],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/layout.pug\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"../fixtures/layout.pug\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`special cases root-mixin.input.json 1`] = `\nObject {\n  \"declaredBlocks\": Object {\n    \"body\": Array [\n      Object {\n        \"filename\": \"root-mixin.pug\",\n        \"line\": 6,\n        \"mode\": \"replace\",\n        \"name\": \"body\",\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"root-mixin.pug\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"root-mixin.pug\",\n                  \"line\": 7,\n                  \"type\": \"Text\",\n                  \"val\": \"Before\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"root-mixin.pug\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": null,\n            \"call\": true,\n            \"filename\": \"root-mixin.pug\",\n            \"line\": 8,\n            \"name\": \"myMixin\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"root-mixin.pug\",\n              \"line\": 9,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"root-mixin.pug\",\n                  \"line\": 9,\n                  \"type\": \"Text\",\n                  \"val\": \"After\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"root-mixin.pug\",\n            \"isInline\": false,\n            \"line\": 9,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"parents\": Array [\n          Object {\n            \"filename\": \"../fixtures/layout.pug\",\n            \"line\": 8,\n            \"mode\": \"replace\",\n            \"name\": \"body\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"root-mixin.pug\",\n                  \"line\": 7,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"root-mixin.pug\",\n                      \"line\": 7,\n                      \"type\": \"Text\",\n                      \"val\": \"Before\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"root-mixin.pug\",\n                \"isInline\": false,\n                \"line\": 7,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n              Object {\n                \"args\": null,\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": null,\n                \"call\": true,\n                \"filename\": \"root-mixin.pug\",\n                \"line\": 8,\n                \"name\": \"myMixin\",\n                \"type\": \"Mixin\",\n              },\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"root-mixin.pug\",\n                  \"line\": 9,\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"root-mixin.pug\",\n                      \"line\": 9,\n                      \"type\": \"Text\",\n                      \"val\": \"After\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"filename\": \"root-mixin.pug\",\n                \"isInline\": false,\n                \"line\": 9,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n    \"head\": Array [\n      Object {\n        \"filename\": \"../fixtures/layout.pug\",\n        \"line\": 5,\n        \"mode\": \"replace\",\n        \"name\": \"head\",\n        \"nodes\": Array [\n          Object {\n            \"filename\": \"../fixtures/layout.pug\",\n            \"isHtml\": true,\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"<title>Hello world!</title>\",\n          },\n        ],\n        \"type\": \"NamedBlock\",\n      },\n    ],\n  },\n  \"filename\": \"../fixtures/layout.pug\",\n  \"hasExtends\": true,\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"root-mixin.pug\",\n        \"line\": 4,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"root-mixin.pug\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"root-mixin.pug\",\n                  \"line\": 4,\n                  \"type\": \"Text\",\n                  \"val\": \"Hello world\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"root-mixin.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"filename\": \"root-mixin.pug\",\n      \"line\": 3,\n      \"name\": \"myMixin\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"filename\": \"../fixtures/layout.pug\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"../fixtures/layout.pug\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/layout.pug\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/layout.pug\",\n                  \"line\": 5,\n                  \"mode\": \"replace\",\n                  \"name\": \"head\",\n                  \"nodes\": Array [\n                    Object {\n                      \"filename\": \"../fixtures/layout.pug\",\n                      \"isHtml\": true,\n                      \"line\": 6,\n                      \"type\": \"Text\",\n                      \"val\": \"<title>Hello world!</title>\",\n                    },\n                  ],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/layout.pug\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"../fixtures/layout.pug\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"filename\": \"../fixtures/layout.pug\",\n                  \"line\": 8,\n                  \"mode\": \"replace\",\n                  \"name\": \"body\",\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"root-mixin.pug\",\n                        \"line\": 7,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"root-mixin.pug\",\n                            \"line\": 7,\n                            \"type\": \"Text\",\n                            \"val\": \"Before\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"root-mixin.pug\",\n                      \"isInline\": false,\n                      \"line\": 7,\n                      \"name\": \"p\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"args\": null,\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": null,\n                      \"call\": true,\n                      \"filename\": \"root-mixin.pug\",\n                      \"line\": 8,\n                      \"name\": \"myMixin\",\n                      \"type\": \"Mixin\",\n                    },\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [],\n                      \"block\": Object {\n                        \"filename\": \"root-mixin.pug\",\n                        \"line\": 9,\n                        \"nodes\": Array [\n                          Object {\n                            \"filename\": \"root-mixin.pug\",\n                            \"line\": 9,\n                            \"type\": \"Text\",\n                            \"val\": \"After\",\n                          },\n                        ],\n                        \"type\": \"Block\",\n                      },\n                      \"filename\": \"root-mixin.pug\",\n                      \"isInline\": false,\n                      \"line\": 9,\n                      \"name\": \"p\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                  ],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"../fixtures/layout.pug\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"../fixtures/layout.pug\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-linker/test/cases/include-extends-from-root.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Include\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"line\": 1,\n        \"filename\": \"include-extends-from-root.pug\",\n        \"path\": \"/auxiliary/extends-from-root.pug\",\n        \"fullPath\": \"auxiliary/extends-from-root.pug\",\n        \"str\": \"extends /auxiliary/layout.pug\\n\\nblock content\\n    include /auxiliary/include-from-root.pug\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"/auxiliary/layout.pug\",\n                \"line\": 1,\n                \"filename\": \"auxiliary/extends-from-root.pug\",\n                \"fullPath\": \"auxiliary/layout.pug\",\n                \"str\": \"html\\n  head\\n    title My Application\\n    block head\\n  body\\n    block content\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"Tag\",\n                      \"name\": \"html\",\n                      \"selfClosing\": false,\n                      \"block\": {\n                        \"type\": \"Block\",\n                        \"nodes\": [\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"head\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"Tag\",\n                                  \"name\": \"title\",\n                                  \"selfClosing\": false,\n                                  \"block\": {\n                                    \"type\": \"Block\",\n                                    \"nodes\": [\n                                      {\n                                        \"type\": \"Text\",\n                                        \"val\": \"My Application\",\n                                        \"line\": 3,\n                                        \"filename\": \"auxiliary/layout.pug\"\n                                      }\n                                    ],\n                                    \"line\": 3,\n                                    \"filename\": \"auxiliary/layout.pug\"\n                                  },\n                                  \"attrs\": [],\n                                  \"attributeBlocks\": [],\n                                  \"isInline\": false,\n                                  \"line\": 3,\n                                  \"filename\": \"auxiliary/layout.pug\"\n                                },\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 4,\n                                  \"filename\": \"auxiliary/layout.pug\",\n                                  \"name\": \"head\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 2,\n                              \"filename\": \"auxiliary/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 2,\n                            \"filename\": \"auxiliary/layout.pug\"\n                          },\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"body\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 6,\n                                  \"filename\": \"auxiliary/layout.pug\",\n                                  \"name\": \"content\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 5,\n                              \"filename\": \"auxiliary/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 5,\n                            \"filename\": \"auxiliary/layout.pug\"\n                          }\n                        ],\n                        \"line\": 1,\n                        \"filename\": \"auxiliary/layout.pug\"\n                      },\n                      \"attrs\": [],\n                      \"attributeBlocks\": [],\n                      \"isInline\": false,\n                      \"line\": 1,\n                      \"filename\": \"auxiliary/layout.pug\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"auxiliary/layout.pug\"\n                }\n              },\n              \"line\": 1,\n              \"filename\": \"auxiliary/extends-from-root.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Include\",\n                  \"file\": {\n                    \"type\": \"FileReference\",\n                    \"line\": 4,\n                    \"filename\": \"auxiliary/extends-from-root.pug\",\n                    \"path\": \"/auxiliary/include-from-root.pug\",\n                    \"fullPath\": \"auxiliary/include-from-root.pug\",\n                    \"str\": \"h1 hello\",\n                    \"ast\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"h1\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Text\",\n                                \"val\": \"hello\",\n                                \"line\": 1,\n                                \"filename\": \"auxiliary/include-from-root.pug\"\n                              }\n                            ],\n                            \"line\": 1,\n                            \"filename\": \"auxiliary/include-from-root.pug\"\n                          },\n                          \"attrs\": [],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 1,\n                          \"filename\": \"auxiliary/include-from-root.pug\"\n                        }\n                      ],\n                      \"line\": 0,\n                      \"filename\": \"auxiliary/include-from-root.pug\"\n                    }\n                  },\n                  \"line\": 4,\n                  \"filename\": \"auxiliary/extends-from-root.pug\",\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [],\n                    \"line\": 4,\n                    \"filename\": \"auxiliary/extends-from-root.pug\"\n                  }\n                }\n              ],\n              \"line\": 3,\n              \"filename\": \"auxiliary/extends-from-root.pug\",\n              \"name\": \"content\",\n              \"mode\": \"replace\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"auxiliary/extends-from-root.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"include-extends-from-root.pug\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [],\n        \"line\": 1,\n        \"filename\": \"include-extends-from-root.pug\"\n      }\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-extends-from-root.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-extends-of-common-template.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Include\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"line\": 1,\n        \"filename\": \"include-extends-of-common-template.pug\",\n        \"path\": \"auxiliary/extends-empty-block-1.pug\",\n        \"fullPath\": \"auxiliary/extends-empty-block-1.pug\",\n        \"str\": \"extends empty-block.pug\\n\\nblock test\\n    div test1\\n\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"empty-block.pug\",\n                \"line\": 1,\n                \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n                \"fullPath\": \"auxiliary/empty-block.pug\",\n                \"str\": \"block test\\n\\n\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"NamedBlock\",\n                      \"nodes\": [],\n                      \"line\": 1,\n                      \"filename\": \"auxiliary/empty-block.pug\",\n                      \"name\": \"test\",\n                      \"mode\": \"replace\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"auxiliary/empty-block.pug\"\n                }\n              },\n              \"line\": 1,\n              \"filename\": \"auxiliary/extends-empty-block-1.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"test1\",\n                        \"line\": 4,\n                        \"filename\": \"auxiliary/extends-empty-block-1.pug\"\n                      }\n                    ],\n                    \"line\": 4,\n                    \"filename\": \"auxiliary/extends-empty-block-1.pug\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"filename\": \"auxiliary/extends-empty-block-1.pug\"\n                }\n              ],\n              \"line\": 3,\n              \"filename\": \"auxiliary/extends-empty-block-1.pug\",\n              \"name\": \"test\",\n              \"mode\": \"replace\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"auxiliary/extends-empty-block-1.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"include-extends-of-common-template.pug\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [],\n        \"line\": 1,\n        \"filename\": \"include-extends-of-common-template.pug\"\n      }\n    },\n    {\n      \"type\": \"Include\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"line\": 2,\n        \"filename\": \"include-extends-of-common-template.pug\",\n        \"path\": \"auxiliary/extends-empty-block-2.pug\",\n        \"fullPath\": \"auxiliary/extends-empty-block-2.pug\",\n        \"str\": \"extends empty-block.pug\\n\\nblock test\\n    div test2\\n\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"empty-block.pug\",\n                \"line\": 1,\n                \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n                \"fullPath\": \"auxiliary/empty-block.pug\",\n                \"str\": \"block test\\n\\n\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"NamedBlock\",\n                      \"nodes\": [],\n                      \"line\": 1,\n                      \"filename\": \"auxiliary/empty-block.pug\",\n                      \"name\": \"test\",\n                      \"mode\": \"replace\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"auxiliary/empty-block.pug\"\n                }\n              },\n              \"line\": 1,\n              \"filename\": \"auxiliary/extends-empty-block-2.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"test2\",\n                        \"line\": 4,\n                        \"filename\": \"auxiliary/extends-empty-block-2.pug\"\n                      }\n                    ],\n                    \"line\": 4,\n                    \"filename\": \"auxiliary/extends-empty-block-2.pug\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"filename\": \"auxiliary/extends-empty-block-2.pug\"\n                }\n              ],\n              \"line\": 3,\n              \"filename\": \"auxiliary/extends-empty-block-2.pug\",\n              \"name\": \"test\",\n              \"mode\": \"replace\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"auxiliary/extends-empty-block-2.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"include-extends-of-common-template.pug\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [],\n        \"line\": 2,\n        \"filename\": \"include-extends-of-common-template.pug\"\n      }\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-extends-of-common-template.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-extends-relative.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Include\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"line\": 1,\n        \"filename\": \"include-extends-relative.pug\",\n        \"path\": \"../cases-src/auxiliary/extends-relative.pug\",\n        \"fullPath\": \"../cases-src/auxiliary/extends-relative.pug\",\n        \"str\": \"extends ../../cases-src/auxiliary/layout\\n\\nblock content\\n    include ../../cases-src/auxiliary/include-from-root\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"../../cases-src/auxiliary/layout\",\n                \"line\": 1,\n                \"filename\": \"../cases-src/auxiliary/extends-relative.pug\",\n                \"fullPath\": \"../cases-src/auxiliary/layout.pug\",\n                \"str\": \"html\\n  head\\n    title My Application\\n    block head\\n  body\\n    block content\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"Tag\",\n                      \"name\": \"html\",\n                      \"selfClosing\": false,\n                      \"block\": {\n                        \"type\": \"Block\",\n                        \"nodes\": [\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"head\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"Tag\",\n                                  \"name\": \"title\",\n                                  \"selfClosing\": false,\n                                  \"block\": {\n                                    \"type\": \"Block\",\n                                    \"nodes\": [\n                                      {\n                                        \"type\": \"Text\",\n                                        \"val\": \"My Application\",\n                                        \"line\": 3,\n                                        \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                                      }\n                                    ],\n                                    \"line\": 3,\n                                    \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                                  },\n                                  \"attrs\": [],\n                                  \"attributeBlocks\": [],\n                                  \"isInline\": false,\n                                  \"line\": 3,\n                                  \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                                },\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 4,\n                                  \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                                  \"name\": \"head\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 2,\n                              \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 2,\n                            \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                          },\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"body\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 6,\n                                  \"filename\": \"../cases-src/auxiliary/layout.pug\",\n                                  \"name\": \"content\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 5,\n                              \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 5,\n                            \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                          }\n                        ],\n                        \"line\": 1,\n                        \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                      },\n                      \"attrs\": [],\n                      \"attributeBlocks\": [],\n                      \"isInline\": false,\n                      \"line\": 1,\n                      \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"../cases-src/auxiliary/layout.pug\"\n                }\n              },\n              \"line\": 1,\n              \"filename\": \"../cases-src/auxiliary/extends-relative.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"RawInclude\",\n                  \"file\": {\n                    \"type\": \"FileReference\",\n                    \"line\": 4,\n                    \"filename\": \"../cases-src/auxiliary/extends-relative.pug\",\n                    \"path\": \"../../cases-src/auxiliary/include-from-root\",\n                    \"fullPath\": \"../cases-src/auxiliary/include-from-root.pug\",\n                    \"str\": \"h1 hello\"\n                  },\n                  \"line\": 4,\n                  \"filename\": \"../cases-src/auxiliary/extends-relative.pug\",\n                  \"filters\": []\n                }\n              ],\n              \"line\": 3,\n              \"filename\": \"../cases-src/auxiliary/extends-relative.pug\",\n              \"name\": \"content\",\n              \"mode\": \"replace\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../cases-src/auxiliary/extends-relative.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"include-extends-relative.pug\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [],\n        \"line\": 1,\n        \"filename\": \"include-extends-relative.pug\"\n      }\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-extends-relative.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-filter-stylus.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"style\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"RawInclude\",\n            \"file\": {\n              \"type\": \"FileReference\",\n              \"line\": 2,\n              \"filename\": \"include-filter-stylus.pug\",\n              \"path\": \"some.styl\",\n              \"fullPath\": \"some.styl\",\n              \"str\": \"@import \\\"some-included\\\"\\n\"\n            },\n            \"line\": 2,\n            \"filename\": \"include-filter-stylus.pug\",\n            \"filters\": [\n              {\n                \"type\": \"IncludeFilter\",\n                \"name\": \"stylus\",\n                \"attrs\": [],\n                \"line\": 2,\n                \"filename\": \"include-filter-stylus.pug\"\n              }\n            ]\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"include-filter-stylus.pug\"\n      },\n      \"attrs\": [\n        {\n          \"name\": \"type\",\n          \"val\": \"\\\"text/css\\\"\",\n          \"mustEscape\": true\n        }\n      ],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"include-filter-stylus.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-filter-stylus.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-filter.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"RawInclude\",\n                  \"file\": {\n                    \"type\": \"FileReference\",\n                    \"line\": 3,\n                    \"filename\": \"include-filter.pug\",\n                    \"path\": \"some.md\",\n                    \"fullPath\": \"some.md\",\n                    \"str\": \"Just _some_ markdown **tests**.\\n\\nWith new line.\\n\"\n                  },\n                  \"line\": 3,\n                  \"filename\": \"include-filter.pug\",\n                  \"filters\": [\n                    {\n                      \"type\": \"IncludeFilter\",\n                      \"name\": \"markdown-it\",\n                      \"attrs\": [],\n                      \"line\": 3,\n                      \"filename\": \"include-filter.pug\"\n                    }\n                  ]\n                },\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"RawInclude\",\n                        \"file\": {\n                          \"type\": \"FileReference\",\n                          \"line\": 5,\n                          \"filename\": \"include-filter.pug\",\n                          \"path\": \"include-filter-coffee.coffee\",\n                          \"fullPath\": \"include-filter-coffee.coffee\",\n                          \"str\": \"math =\\n  square: (value) -> value * value\\n\"\n                        },\n                        \"line\": 5,\n                        \"filename\": \"include-filter.pug\",\n                        \"filters\": [\n                          {\n                            \"type\": \"IncludeFilter\",\n                            \"name\": \"coffee-script\",\n                            \"attrs\": [\n                              {\n                                \"name\": \"minify\",\n                                \"val\": \"true\",\n                                \"mustEscape\": true\n                              }\n                            ],\n                            \"line\": 5,\n                            \"filename\": \"include-filter.pug\"\n                          }\n                        ]\n                      }\n                    ],\n                    \"line\": 4,\n                    \"filename\": \"include-filter.pug\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"filename\": \"include-filter.pug\"\n                },\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"RawInclude\",\n                        \"file\": {\n                          \"type\": \"FileReference\",\n                          \"line\": 7,\n                          \"filename\": \"include-filter.pug\",\n                          \"path\": \"include-filter-coffee.coffee\",\n                          \"fullPath\": \"include-filter-coffee.coffee\",\n                          \"str\": \"math =\\n  square: (value) -> value * value\\n\"\n                        },\n                        \"line\": 7,\n                        \"filename\": \"include-filter.pug\",\n                        \"filters\": [\n                          {\n                            \"type\": \"IncludeFilter\",\n                            \"name\": \"coffee-script\",\n                            \"attrs\": [\n                              {\n                                \"name\": \"minify\",\n                                \"val\": \"false\",\n                                \"mustEscape\": true\n                              }\n                            ],\n                            \"line\": 7,\n                            \"filename\": \"include-filter.pug\"\n                          }\n                        ]\n                      }\n                    ],\n                    \"line\": 6,\n                    \"filename\": \"include-filter.pug\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"filename\": \"include-filter.pug\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"include-filter.pug\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"include-filter.pug\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"include-filter.pug\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"include-filter.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-filter.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-only-text-body.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Text\",\n      \"val\": \"The message is \\\"\",\n      \"line\": 1,\n      \"filename\": \"include-only-text-body.pug\"\n    },\n    {\n      \"type\": \"YieldBlock\",\n      \"line\": 2,\n      \"filename\": \"include-only-text-body.pug\"\n    },\n    {\n      \"type\": \"Text\",\n      \"val\": \"\\\"\",\n      \"line\": 3,\n      \"filename\": \"include-only-text-body.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-only-text-body.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-only-text.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Include\",\n                        \"file\": {\n                          \"type\": \"FileReference\",\n                          \"line\": 4,\n                          \"filename\": \"include-only-text.pug\",\n                          \"path\": \"include-only-text-body.pug\",\n                          \"fullPath\": \"include-only-text-body.pug\",\n                          \"str\": \"| The message is \\\"\\nyield\\n| \\\"\\n\",\n                          \"ast\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Text\",\n                                \"val\": \"The message is \\\"\",\n                                \"line\": 1,\n                                \"filename\": \"include-only-text-body.pug\"\n                              },\n                              {\n                                \"type\": \"YieldBlock\",\n                                \"line\": 2,\n                                \"filename\": \"include-only-text-body.pug\"\n                              },\n                              {\n                                \"type\": \"Text\",\n                                \"val\": \"\\\"\",\n                                \"line\": 3,\n                                \"filename\": \"include-only-text-body.pug\"\n                              }\n                            ],\n                            \"line\": 0,\n                            \"filename\": \"include-only-text-body.pug\"\n                          }\n                        },\n                        \"line\": 4,\n                        \"filename\": \"include-only-text.pug\",\n                        \"block\": {\n                          \"type\": \"Block\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Tag\",\n                              \"name\": \"em\",\n                              \"selfClosing\": false,\n                              \"block\": {\n                                \"type\": \"Block\",\n                                \"nodes\": [\n                                  {\n                                    \"type\": \"Text\",\n                                    \"val\": \"hello world\",\n                                    \"line\": 5,\n                                    \"filename\": \"include-only-text.pug\"\n                                  }\n                                ],\n                                \"line\": 5,\n                                \"filename\": \"include-only-text.pug\"\n                              },\n                              \"attrs\": [],\n                              \"attributeBlocks\": [],\n                              \"isInline\": true,\n                              \"line\": 5,\n                              \"filename\": \"include-only-text.pug\"\n                            }\n                          ],\n                          \"line\": 5,\n                          \"filename\": \"include-only-text.pug\"\n                        }\n                      }\n                    ],\n                    \"line\": 3,\n                    \"filename\": \"include-only-text.pug\"\n                  },\n                  \"attrs\": [],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"filename\": \"include-only-text.pug\"\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"include-only-text.pug\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"include-only-text.pug\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"include-only-text.pug\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"include-only-text.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-only-text.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-with-text-head.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"head\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"alert('hello world');\",\n                  \"line\": 3\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"include-with-text-head.pug\"\n            },\n            \"attrs\": [\n              {\n                \"name\": \"type\",\n                \"val\": \"'text/javascript'\",\n                \"mustEscape\": true\n              }\n            ],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 2,\n            \"filename\": \"include-with-text-head.pug\",\n            \"textOnly\": true\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"include-with-text-head.pug\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"include-with-text-head.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-with-text-head.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include-with-text.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Include\",\n            \"file\": {\n              \"type\": \"FileReference\",\n              \"line\": 2,\n              \"filename\": \"include-with-text.pug\",\n              \"path\": \"include-with-text-head.pug\",\n              \"fullPath\": \"include-with-text-head.pug\",\n              \"str\": \"head\\n  script(type='text/javascript').\\n    alert('hello world');\\n\",\n              \"ast\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"head\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"script\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Text\",\n                                \"val\": \"alert('hello world');\",\n                                \"line\": 3\n                              }\n                            ],\n                            \"line\": 2,\n                            \"filename\": \"include-with-text-head.pug\"\n                          },\n                          \"attrs\": [\n                            {\n                              \"name\": \"type\",\n                              \"val\": \"'text/javascript'\",\n                              \"mustEscape\": true\n                            }\n                          ],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 2,\n                          \"filename\": \"include-with-text-head.pug\",\n                          \"textOnly\": true\n                        }\n                      ],\n                      \"line\": 1,\n                      \"filename\": \"include-with-text-head.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 1,\n                    \"filename\": \"include-with-text-head.pug\"\n                  }\n                ],\n                \"line\": 0,\n                \"filename\": \"include-with-text-head.pug\"\n              }\n            },\n            \"line\": 2,\n            \"filename\": \"include-with-text.pug\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [],\n                    \"line\": 3,\n                    \"filename\": \"include-with-text.pug\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"src\",\n                      \"val\": \"'/caustic.js'\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"filename\": \"include-with-text.pug\"\n                },\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [],\n                    \"line\": 4,\n                    \"filename\": \"include-with-text.pug\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"src\",\n                      \"val\": \"'/app.js'\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"filename\": \"include-with-text.pug\"\n                }\n              ],\n              \"line\": 3,\n              \"filename\": \"include-with-text.pug\"\n            }\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"include-with-text.pug\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"include-with-text.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include-with-text.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include.script.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Include\",\n            \"file\": {\n              \"type\": \"FileReference\",\n              \"line\": 2,\n              \"filename\": \"include.script.pug\",\n              \"path\": \"auxiliary/pet.pug\",\n              \"fullPath\": \"auxiliary/pet.pug\",\n              \"str\": \".pet\\n  h1 {{name}}\\n  p {{name}} is a {{species}} that is {{age}} old\",\n              \"ast\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"div\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"h1\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Text\",\n                                \"val\": \"{{name}}\",\n                                \"line\": 2,\n                                \"filename\": \"auxiliary/pet.pug\"\n                              }\n                            ],\n                            \"line\": 2,\n                            \"filename\": \"auxiliary/pet.pug\"\n                          },\n                          \"attrs\": [],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 2,\n                          \"filename\": \"auxiliary/pet.pug\"\n                        },\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"p\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Text\",\n                                \"val\": \"{{name}} is a {{species}} that is {{age}} old\",\n                                \"line\": 3,\n                                \"filename\": \"auxiliary/pet.pug\"\n                              }\n                            ],\n                            \"line\": 3,\n                            \"filename\": \"auxiliary/pet.pug\"\n                          },\n                          \"attrs\": [],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 3,\n                          \"filename\": \"auxiliary/pet.pug\"\n                        }\n                      ],\n                      \"line\": 1,\n                      \"filename\": \"auxiliary/pet.pug\"\n                    },\n                    \"attrs\": [\n                      {\n                        \"name\": \"class\",\n                        \"val\": \"'pet'\",\n                        \"mustEscape\": false\n                      }\n                    ],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 1,\n                    \"filename\": \"auxiliary/pet.pug\"\n                  }\n                ],\n                \"line\": 0,\n                \"filename\": \"auxiliary/pet.pug\"\n              }\n            },\n            \"line\": 2,\n            \"filename\": \"include.script.pug\",\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [],\n              \"line\": 2,\n              \"filename\": \"include.script.pug\"\n            }\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"include.script.pug\"\n      },\n      \"attrs\": [\n        {\n          \"name\": \"id\",\n          \"val\": \"'pet-template'\",\n          \"mustEscape\": false\n        },\n        {\n          \"name\": \"type\",\n          \"val\": \"'text/x-template'\",\n          \"mustEscape\": true\n        }\n      ],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"include.script.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include.script.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/include.yield.nested.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Include\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"line\": 2,\n        \"filename\": \"include.yield.nested.pug\",\n        \"path\": \"auxiliary/yield-nested.pug\",\n        \"fullPath\": \"auxiliary/yield-nested.pug\",\n        \"str\": \"html\\n  head\\n    title\\n  body\\n    h1 Page\\n    #content\\n      #content-wrapper\\n        yield\\n    #footer\\n      stuff\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Tag\",\n              \"name\": \"html\",\n              \"selfClosing\": false,\n              \"block\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"head\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"title\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [],\n                            \"line\": 3,\n                            \"filename\": \"auxiliary/yield-nested.pug\"\n                          },\n                          \"attrs\": [],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 3,\n                          \"filename\": \"auxiliary/yield-nested.pug\"\n                        }\n                      ],\n                      \"line\": 2,\n                      \"filename\": \"auxiliary/yield-nested.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 2,\n                    \"filename\": \"auxiliary/yield-nested.pug\"\n                  },\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"body\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"h1\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Text\",\n                                \"val\": \"Page\",\n                                \"line\": 5,\n                                \"filename\": \"auxiliary/yield-nested.pug\"\n                              }\n                            ],\n                            \"line\": 5,\n                            \"filename\": \"auxiliary/yield-nested.pug\"\n                          },\n                          \"attrs\": [],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 5,\n                          \"filename\": \"auxiliary/yield-nested.pug\"\n                        },\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"div\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"div\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [\n                                    {\n                                      \"type\": \"YieldBlock\",\n                                      \"line\": 8,\n                                      \"filename\": \"auxiliary/yield-nested.pug\"\n                                    }\n                                  ],\n                                  \"line\": 7,\n                                  \"filename\": \"auxiliary/yield-nested.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"id\",\n                                    \"val\": \"'content-wrapper'\",\n                                    \"mustEscape\": false\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 7,\n                                \"filename\": \"auxiliary/yield-nested.pug\"\n                              }\n                            ],\n                            \"line\": 6,\n                            \"filename\": \"auxiliary/yield-nested.pug\"\n                          },\n                          \"attrs\": [\n                            {\n                              \"name\": \"id\",\n                              \"val\": \"'content'\",\n                              \"mustEscape\": false\n                            }\n                          ],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 6,\n                          \"filename\": \"auxiliary/yield-nested.pug\"\n                        },\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"div\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"stuff\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 10,\n                                  \"filename\": \"auxiliary/yield-nested.pug\"\n                                },\n                                \"attrs\": [],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 10,\n                                \"filename\": \"auxiliary/yield-nested.pug\"\n                              }\n                            ],\n                            \"line\": 9,\n                            \"filename\": \"auxiliary/yield-nested.pug\"\n                          },\n                          \"attrs\": [\n                            {\n                              \"name\": \"id\",\n                              \"val\": \"'footer'\",\n                              \"mustEscape\": false\n                            }\n                          ],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 9,\n                          \"filename\": \"auxiliary/yield-nested.pug\"\n                        }\n                      ],\n                      \"line\": 4,\n                      \"filename\": \"auxiliary/yield-nested.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 4,\n                    \"filename\": \"auxiliary/yield-nested.pug\"\n                  }\n                ],\n                \"line\": 1,\n                \"filename\": \"auxiliary/yield-nested.pug\"\n              },\n              \"attrs\": [],\n              \"attributeBlocks\": [],\n              \"isInline\": false,\n              \"line\": 1,\n              \"filename\": \"auxiliary/yield-nested.pug\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"auxiliary/yield-nested.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"include.yield.nested.pug\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"some content\",\n                  \"line\": 3,\n                  \"filename\": \"include.yield.nested.pug\"\n                }\n              ],\n              \"line\": 3,\n              \"filename\": \"include.yield.nested.pug\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 3,\n            \"filename\": \"include.yield.nested.pug\"\n          },\n          {\n            \"type\": \"Tag\",\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"and some more\",\n                  \"line\": 4,\n                  \"filename\": \"include.yield.nested.pug\"\n                }\n              ],\n              \"line\": 4,\n              \"filename\": \"include.yield.nested.pug\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 4,\n            \"filename\": \"include.yield.nested.pug\"\n          }\n        ],\n        \"line\": 3,\n        \"filename\": \"include.yield.nested.pug\"\n      }\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"include.yield.nested.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/includes-with-ext-js.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"code\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"RawInclude\",\n                  \"file\": {\n                    \"type\": \"FileReference\",\n                    \"line\": 3,\n                    \"filename\": \"includes-with-ext-js.pug\",\n                    \"path\": \"javascript-new-lines.js\",\n                    \"fullPath\": \"javascript-new-lines.js\",\n                    \"str\": \"var x = \\\"\\\\n here is some \\\\n new lined text\\\";\\n\"\n                  },\n                  \"line\": 3,\n                  \"filename\": \"includes-with-ext-js.pug\",\n                  \"filters\": []\n                }\n              ],\n              \"line\": 2,\n              \"filename\": \"includes-with-ext-js.pug\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": true,\n            \"line\": 2,\n            \"filename\": \"includes-with-ext-js.pug\"\n          }\n        ],\n        \"line\": 1,\n        \"filename\": \"includes-with-ext-js.pug\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"filename\": \"includes-with-ext-js.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"includes-with-ext-js.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/includes.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Include\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"line\": 2,\n        \"filename\": \"includes.pug\",\n        \"path\": \"auxiliary/mixins.pug\",\n        \"fullPath\": \"auxiliary/mixins.pug\",\n        \"str\": \"\\nmixin foo()\\n  p bar\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Mixin\",\n              \"name\": \"foo\",\n              \"args\": null,\n              \"block\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"p\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Text\",\n                          \"val\": \"bar\",\n                          \"line\": 3,\n                          \"filename\": \"auxiliary/mixins.pug\"\n                        }\n                      ],\n                      \"line\": 3,\n                      \"filename\": \"auxiliary/mixins.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 3,\n                    \"filename\": \"auxiliary/mixins.pug\"\n                  }\n                ],\n                \"line\": 3,\n                \"filename\": \"auxiliary/mixins.pug\"\n              },\n              \"call\": false,\n              \"line\": 2,\n              \"filename\": \"auxiliary/mixins.pug\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"auxiliary/mixins.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"includes.pug\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [],\n        \"line\": 2,\n        \"filename\": \"includes.pug\"\n      }\n    },\n    {\n      \"type\": \"Mixin\",\n      \"name\": \"foo\",\n      \"args\": null,\n      \"block\": null,\n      \"call\": true,\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"line\": 4,\n      \"filename\": \"includes.pug\"\n    },\n    {\n      \"type\": \"Tag\",\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"RawInclude\",\n            \"file\": {\n              \"type\": \"FileReference\",\n              \"line\": 7,\n              \"filename\": \"includes.pug\",\n              \"path\": \"auxiliary/smile.html\",\n              \"fullPath\": \"auxiliary/smile.html\",\n              \"str\": \"<p>:)</p>\\n\"\n            },\n            \"line\": 7,\n            \"filename\": \"includes.pug\",\n            \"filters\": []\n          },\n          {\n            \"type\": \"RawInclude\",\n            \"file\": {\n              \"type\": \"FileReference\",\n              \"line\": 8,\n              \"filename\": \"includes.pug\",\n              \"path\": \"auxiliary/escapes.html\",\n              \"fullPath\": \"auxiliary/escapes.html\",\n              \"str\": \"<script>\\n  console.log(\\\"foo\\\\nbar\\\")\\n</script>\\n\"\n            },\n            \"line\": 8,\n            \"filename\": \"includes.pug\",\n            \"filters\": []\n          },\n          {\n            \"type\": \"Tag\",\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"RawInclude\",\n                  \"file\": {\n                    \"type\": \"FileReference\",\n                    \"line\": 10,\n                    \"filename\": \"includes.pug\",\n                    \"path\": \"auxiliary/includable.js\",\n                    \"fullPath\": \"auxiliary/includable.js\",\n                    \"str\": \"var STRING_SUBSTITUTIONS = {    // table of character substitutions\\n  '\\\\t': '\\\\\\\\t',\\n  '\\\\r': '\\\\\\\\r',\\n  '\\\\n': '\\\\\\\\n',\\n  '\\\"' : '\\\\\\\\\\\"',\\n  '\\\\\\\\': '\\\\\\\\\\\\\\\\'\\n};\"\n                  },\n                  \"line\": 10,\n                  \"filename\": \"includes.pug\",\n                  \"filters\": [\n                    {\n                      \"type\": \"IncludeFilter\",\n                      \"name\": \"verbatim\",\n                      \"attrs\": [],\n                      \"line\": 10,\n                      \"filename\": \"includes.pug\"\n                    }\n                  ]\n                }\n              ],\n              \"line\": 9,\n              \"filename\": \"includes.pug\"\n            },\n            \"attrs\": [\n              {\n                \"name\": \"type\",\n                \"val\": \"\\\"text/javascript\\\"\",\n                \"mustEscape\": true\n              }\n            ],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 9,\n            \"filename\": \"includes.pug\"\n          }\n        ],\n        \"line\": 6,\n        \"filename\": \"includes.pug\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 6,\n      \"filename\": \"includes.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"includes.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/layout.append.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/append/app-layout.pug\",\n        \"line\": 2,\n        \"filename\": \"layout.append.pug\",\n        \"fullPath\": \"../fixtures/append/app-layout.pug\",\n        \"str\": \"\\nextends layout\\n\\nblock append head\\n  script(src='app.js')\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"layout\",\n                \"line\": 2,\n                \"filename\": \"../fixtures/append/app-layout.pug\",\n                \"fullPath\": \"../fixtures/append/layout.pug\",\n                \"str\": \"\\nhtml\\n  block head\\n    script(src='vendor/jquery.js')\\n    script(src='vendor/caustic.js')\\n  body\\n    block body\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"Tag\",\n                      \"name\": \"html\",\n                      \"selfClosing\": false,\n                      \"block\": {\n                        \"type\": \"Block\",\n                        \"nodes\": [\n                          {\n                            \"type\": \"NamedBlock\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 4,\n                                  \"filename\": \"../fixtures/append/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/jquery.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 4,\n                                \"filename\": \"../fixtures/append/layout.pug\"\n                              },\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 5,\n                                  \"filename\": \"../fixtures/append/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/caustic.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 5,\n                                \"filename\": \"../fixtures/append/layout.pug\"\n                              }\n                            ],\n                            \"line\": 3,\n                            \"filename\": \"../fixtures/append/layout.pug\",\n                            \"name\": \"head\",\n                            \"mode\": \"replace\"\n                          },\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"body\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 7,\n                                  \"filename\": \"../fixtures/append/layout.pug\",\n                                  \"name\": \"body\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 6,\n                              \"filename\": \"../fixtures/append/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 6,\n                            \"filename\": \"../fixtures/append/layout.pug\"\n                          }\n                        ],\n                        \"line\": 2,\n                        \"filename\": \"../fixtures/append/layout.pug\"\n                      },\n                      \"attrs\": [],\n                      \"attributeBlocks\": [],\n                      \"isInline\": false,\n                      \"line\": 2,\n                      \"filename\": \"../fixtures/append/layout.pug\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"../fixtures/append/layout.pug\"\n                }\n              },\n              \"line\": 2,\n              \"filename\": \"../fixtures/append/app-layout.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [],\n                    \"line\": 5,\n                    \"filename\": \"../fixtures/append/app-layout.pug\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"src\",\n                      \"val\": \"'app.js'\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"filename\": \"../fixtures/append/app-layout.pug\"\n                }\n              ],\n              \"line\": 4,\n              \"filename\": \"../fixtures/append/app-layout.pug\",\n              \"name\": \"head\",\n              \"mode\": \"append\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/append/app-layout.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"layout.append.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 5,\n            \"filename\": \"layout.append.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 5,\n          \"filename\": \"layout.append.pug\"\n        },\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 6,\n            \"filename\": \"layout.append.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 6,\n          \"filename\": \"layout.append.pug\"\n        }\n      ],\n      \"line\": 4,\n      \"filename\": \"layout.append.pug\",\n      \"name\": \"head\",\n      \"mode\": \"append\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"layout.append.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/layout.append.without-block.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/append-without-block/app-layout.pug\",\n        \"line\": 2,\n        \"filename\": \"layout.append.without-block.pug\",\n        \"fullPath\": \"../fixtures/append-without-block/app-layout.pug\",\n        \"str\": \"\\nextends layout.pug\\n\\nappend head\\n  script(src='app.js')\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"layout.pug\",\n                \"line\": 2,\n                \"filename\": \"../fixtures/append-without-block/app-layout.pug\",\n                \"fullPath\": \"../fixtures/append-without-block/layout.pug\",\n                \"str\": \"\\nhtml\\n  block head\\n    script(src='vendor/jquery.js')\\n    script(src='vendor/caustic.js')\\n  body\\n    block body\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"Tag\",\n                      \"name\": \"html\",\n                      \"selfClosing\": false,\n                      \"block\": {\n                        \"type\": \"Block\",\n                        \"nodes\": [\n                          {\n                            \"type\": \"NamedBlock\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 4,\n                                  \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/jquery.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 4,\n                                \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                              },\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 5,\n                                  \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/caustic.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 5,\n                                \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                              }\n                            ],\n                            \"line\": 3,\n                            \"filename\": \"../fixtures/append-without-block/layout.pug\",\n                            \"name\": \"head\",\n                            \"mode\": \"replace\"\n                          },\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"body\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 7,\n                                  \"filename\": \"../fixtures/append-without-block/layout.pug\",\n                                  \"name\": \"body\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 6,\n                              \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 6,\n                            \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                          }\n                        ],\n                        \"line\": 2,\n                        \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                      },\n                      \"attrs\": [],\n                      \"attributeBlocks\": [],\n                      \"isInline\": false,\n                      \"line\": 2,\n                      \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"../fixtures/append-without-block/layout.pug\"\n                }\n              },\n              \"line\": 2,\n              \"filename\": \"../fixtures/append-without-block/app-layout.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [],\n                    \"line\": 5,\n                    \"filename\": \"../fixtures/append-without-block/app-layout.pug\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"src\",\n                      \"val\": \"'app.js'\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"filename\": \"../fixtures/append-without-block/app-layout.pug\"\n                }\n              ],\n              \"line\": 4,\n              \"filename\": \"../fixtures/append-without-block/app-layout.pug\",\n              \"name\": \"head\",\n              \"mode\": \"append\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/append-without-block/app-layout.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"layout.append.without-block.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 5,\n            \"filename\": \"layout.append.without-block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 5,\n          \"filename\": \"layout.append.without-block.pug\"\n        },\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 6,\n            \"filename\": \"layout.append.without-block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 6,\n          \"filename\": \"layout.append.without-block.pug\"\n        }\n      ],\n      \"line\": 4,\n      \"filename\": \"layout.append.without-block.pug\",\n      \"name\": \"head\",\n      \"mode\": \"append\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"layout.append.without-block.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/layout.multi.append.prepend.block.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n        \"line\": 1,\n        \"filename\": \"layout.multi.append.prepend.block.pug\",\n        \"fullPath\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n        \"str\": \"extends root.pug\\n\\nblock content\\n\\t.content\\n\\t\\t| Defined content\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"root.pug\",\n                \"line\": 1,\n                \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n                \"fullPath\": \"../fixtures/multi-append-prepend-block/root.pug\",\n                \"str\": \"block content\\n\\t| default content\\n\\nblock head\\n\\tscript(src='/app.js')\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"NamedBlock\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Text\",\n                          \"val\": \"default content\",\n                          \"line\": 2,\n                          \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\"\n                        }\n                      ],\n                      \"line\": 1,\n                      \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n                      \"name\": \"content\",\n                      \"mode\": \"replace\"\n                    },\n                    {\n                      \"type\": \"NamedBlock\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"Tag\",\n                          \"name\": \"script\",\n                          \"selfClosing\": false,\n                          \"block\": {\n                            \"type\": \"Block\",\n                            \"nodes\": [],\n                            \"line\": 5,\n                            \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\"\n                          },\n                          \"attrs\": [\n                            {\n                              \"name\": \"src\",\n                              \"val\": \"'/app.js'\",\n                              \"mustEscape\": true\n                            }\n                          ],\n                          \"attributeBlocks\": [],\n                          \"isInline\": false,\n                          \"line\": 5,\n                          \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\"\n                        }\n                      ],\n                      \"line\": 4,\n                      \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\",\n                      \"name\": \"head\",\n                      \"mode\": \"replace\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"../fixtures/multi-append-prepend-block/root.pug\"\n                }\n              },\n              \"line\": 1,\n              \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [\n                      {\n                        \"type\": \"Text\",\n                        \"val\": \"Defined content\",\n                        \"line\": 5,\n                        \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\"\n                      }\n                    ],\n                    \"line\": 4,\n                    \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"class\",\n                      \"val\": \"'content'\",\n                      \"mustEscape\": false\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\"\n                }\n              ],\n              \"line\": 3,\n              \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n              \"name\": \"content\",\n              \"mode\": \"replace\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/multi-append-prepend-block/redefine.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"layout.multi.append.prepend.block.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Something appended to content\",\n                \"line\": 4,\n                \"filename\": \"layout.multi.append.prepend.block.pug\"\n              }\n            ],\n            \"line\": 4,\n            \"filename\": \"layout.multi.append.prepend.block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"class\",\n              \"val\": \"'first'\",\n              \"mustEscape\": false\n            },\n            {\n              \"name\": \"class\",\n              \"val\": \"'append'\",\n              \"mustEscape\": false\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 4,\n          \"filename\": \"layout.multi.append.prepend.block.pug\"\n        }\n      ],\n      \"line\": 3,\n      \"filename\": \"layout.multi.append.prepend.block.pug\",\n      \"name\": \"content\",\n      \"mode\": \"append\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Something prepended to content\",\n                \"line\": 7,\n                \"filename\": \"layout.multi.append.prepend.block.pug\"\n              }\n            ],\n            \"line\": 7,\n            \"filename\": \"layout.multi.append.prepend.block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"class\",\n              \"val\": \"'first'\",\n              \"mustEscape\": false\n            },\n            {\n              \"name\": \"class\",\n              \"val\": \"'prepend'\",\n              \"mustEscape\": false\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 7,\n          \"filename\": \"layout.multi.append.prepend.block.pug\"\n        }\n      ],\n      \"line\": 6,\n      \"filename\": \"layout.multi.append.prepend.block.pug\",\n      \"name\": \"content\",\n      \"mode\": \"prepend\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Last append must be most last\",\n                \"line\": 10,\n                \"filename\": \"layout.multi.append.prepend.block.pug\"\n              }\n            ],\n            \"line\": 10,\n            \"filename\": \"layout.multi.append.prepend.block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"class\",\n              \"val\": \"'last'\",\n              \"mustEscape\": false\n            },\n            {\n              \"name\": \"class\",\n              \"val\": \"'append'\",\n              \"mustEscape\": false\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 10,\n          \"filename\": \"layout.multi.append.prepend.block.pug\"\n        }\n      ],\n      \"line\": 9,\n      \"filename\": \"layout.multi.append.prepend.block.pug\",\n      \"name\": \"content\",\n      \"mode\": \"append\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Last prepend must appear at top\",\n                \"line\": 13,\n                \"filename\": \"layout.multi.append.prepend.block.pug\"\n              }\n            ],\n            \"line\": 13,\n            \"filename\": \"layout.multi.append.prepend.block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"class\",\n              \"val\": \"'last'\",\n              \"mustEscape\": false\n            },\n            {\n              \"name\": \"class\",\n              \"val\": \"'prepend'\",\n              \"mustEscape\": false\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 13,\n          \"filename\": \"layout.multi.append.prepend.block.pug\"\n        }\n      ],\n      \"line\": 12,\n      \"filename\": \"layout.multi.append.prepend.block.pug\",\n      \"name\": \"content\",\n      \"mode\": \"prepend\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 16,\n            \"filename\": \"layout.multi.append.prepend.block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'jquery.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 16,\n          \"filename\": \"layout.multi.append.prepend.block.pug\"\n        }\n      ],\n      \"line\": 15,\n      \"filename\": \"layout.multi.append.prepend.block.pug\",\n      \"name\": \"head\",\n      \"mode\": \"append\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 19,\n            \"filename\": \"layout.multi.append.prepend.block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 19,\n          \"filename\": \"layout.multi.append.prepend.block.pug\"\n        }\n      ],\n      \"line\": 18,\n      \"filename\": \"layout.multi.append.prepend.block.pug\",\n      \"name\": \"head\",\n      \"mode\": \"prepend\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"layout.multi.append.prepend.block.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/layout.prepend.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/prepend/app-layout.pug\",\n        \"line\": 2,\n        \"filename\": \"layout.prepend.pug\",\n        \"fullPath\": \"../fixtures/prepend/app-layout.pug\",\n        \"str\": \"\\nextends layout.pug\\n\\nblock prepend head\\n  script(src='app.js')\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"layout.pug\",\n                \"line\": 2,\n                \"filename\": \"../fixtures/prepend/app-layout.pug\",\n                \"fullPath\": \"../fixtures/prepend/layout.pug\",\n                \"str\": \"\\nhtml\\n  block head\\n    script(src='vendor/jquery.js')\\n    script(src='vendor/caustic.js')\\n  body\\n    block body\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"Tag\",\n                      \"name\": \"html\",\n                      \"selfClosing\": false,\n                      \"block\": {\n                        \"type\": \"Block\",\n                        \"nodes\": [\n                          {\n                            \"type\": \"NamedBlock\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 4,\n                                  \"filename\": \"../fixtures/prepend/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/jquery.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 4,\n                                \"filename\": \"../fixtures/prepend/layout.pug\"\n                              },\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 5,\n                                  \"filename\": \"../fixtures/prepend/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/caustic.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 5,\n                                \"filename\": \"../fixtures/prepend/layout.pug\"\n                              }\n                            ],\n                            \"line\": 3,\n                            \"filename\": \"../fixtures/prepend/layout.pug\",\n                            \"name\": \"head\",\n                            \"mode\": \"replace\"\n                          },\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"body\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 7,\n                                  \"filename\": \"../fixtures/prepend/layout.pug\",\n                                  \"name\": \"body\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 6,\n                              \"filename\": \"../fixtures/prepend/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 6,\n                            \"filename\": \"../fixtures/prepend/layout.pug\"\n                          }\n                        ],\n                        \"line\": 2,\n                        \"filename\": \"../fixtures/prepend/layout.pug\"\n                      },\n                      \"attrs\": [],\n                      \"attributeBlocks\": [],\n                      \"isInline\": false,\n                      \"line\": 2,\n                      \"filename\": \"../fixtures/prepend/layout.pug\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"../fixtures/prepend/layout.pug\"\n                }\n              },\n              \"line\": 2,\n              \"filename\": \"../fixtures/prepend/app-layout.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [],\n                    \"line\": 5,\n                    \"filename\": \"../fixtures/prepend/app-layout.pug\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"src\",\n                      \"val\": \"'app.js'\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"filename\": \"../fixtures/prepend/app-layout.pug\"\n                }\n              ],\n              \"line\": 4,\n              \"filename\": \"../fixtures/prepend/app-layout.pug\",\n              \"name\": \"head\",\n              \"mode\": \"prepend\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/prepend/app-layout.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"layout.prepend.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 5,\n            \"filename\": \"layout.prepend.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 5,\n          \"filename\": \"layout.prepend.pug\"\n        },\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 6,\n            \"filename\": \"layout.prepend.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 6,\n          \"filename\": \"layout.prepend.pug\"\n        }\n      ],\n      \"line\": 4,\n      \"filename\": \"layout.prepend.pug\",\n      \"name\": \"head\",\n      \"mode\": \"prepend\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"layout.prepend.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases/layout.prepend.without-block.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/prepend-without-block/app-layout.pug\",\n        \"line\": 2,\n        \"filename\": \"layout.prepend.without-block.pug\",\n        \"fullPath\": \"../fixtures/prepend-without-block/app-layout.pug\",\n        \"str\": \"\\nextends layout.pug\\n\\nprepend head\\n  script(src='app.js')\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Extends\",\n              \"file\": {\n                \"type\": \"FileReference\",\n                \"path\": \"layout.pug\",\n                \"line\": 2,\n                \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\",\n                \"fullPath\": \"../fixtures/prepend-without-block/layout.pug\",\n                \"str\": \"\\nhtml\\n  block head\\n    script(src='vendor/jquery.js')\\n    script(src='vendor/caustic.js')\\n  body\\n    block body\",\n                \"ast\": {\n                  \"type\": \"Block\",\n                  \"nodes\": [\n                    {\n                      \"type\": \"Tag\",\n                      \"name\": \"html\",\n                      \"selfClosing\": false,\n                      \"block\": {\n                        \"type\": \"Block\",\n                        \"nodes\": [\n                          {\n                            \"type\": \"NamedBlock\",\n                            \"nodes\": [\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 4,\n                                  \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/jquery.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 4,\n                                \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                              },\n                              {\n                                \"type\": \"Tag\",\n                                \"name\": \"script\",\n                                \"selfClosing\": false,\n                                \"block\": {\n                                  \"type\": \"Block\",\n                                  \"nodes\": [],\n                                  \"line\": 5,\n                                  \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                                },\n                                \"attrs\": [\n                                  {\n                                    \"name\": \"src\",\n                                    \"val\": \"'vendor/caustic.js'\",\n                                    \"mustEscape\": true\n                                  }\n                                ],\n                                \"attributeBlocks\": [],\n                                \"isInline\": false,\n                                \"line\": 5,\n                                \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                              }\n                            ],\n                            \"line\": 3,\n                            \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n                            \"name\": \"head\",\n                            \"mode\": \"replace\"\n                          },\n                          {\n                            \"type\": \"Tag\",\n                            \"name\": \"body\",\n                            \"selfClosing\": false,\n                            \"block\": {\n                              \"type\": \"Block\",\n                              \"nodes\": [\n                                {\n                                  \"type\": \"NamedBlock\",\n                                  \"nodes\": [],\n                                  \"line\": 7,\n                                  \"filename\": \"../fixtures/prepend-without-block/layout.pug\",\n                                  \"name\": \"body\",\n                                  \"mode\": \"replace\"\n                                }\n                              ],\n                              \"line\": 6,\n                              \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                            },\n                            \"attrs\": [],\n                            \"attributeBlocks\": [],\n                            \"isInline\": false,\n                            \"line\": 6,\n                            \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                          }\n                        ],\n                        \"line\": 2,\n                        \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                      },\n                      \"attrs\": [],\n                      \"attributeBlocks\": [],\n                      \"isInline\": false,\n                      \"line\": 2,\n                      \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                    }\n                  ],\n                  \"line\": 0,\n                  \"filename\": \"../fixtures/prepend-without-block/layout.pug\"\n                }\n              },\n              \"line\": 2,\n              \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\"\n            },\n            {\n              \"type\": \"NamedBlock\",\n              \"nodes\": [\n                {\n                  \"type\": \"Tag\",\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"block\": {\n                    \"type\": \"Block\",\n                    \"nodes\": [],\n                    \"line\": 5,\n                    \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\"\n                  },\n                  \"attrs\": [\n                    {\n                      \"name\": \"src\",\n                      \"val\": \"'app.js'\",\n                      \"mustEscape\": true\n                    }\n                  ],\n                  \"attributeBlocks\": [],\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\"\n                }\n              ],\n              \"line\": 4,\n              \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\",\n              \"name\": \"head\",\n              \"mode\": \"prepend\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/prepend-without-block/app-layout.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"layout.prepend.without-block.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 5,\n            \"filename\": \"layout.prepend.without-block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 5,\n          \"filename\": \"layout.prepend.without-block.pug\"\n        },\n        {\n          \"type\": \"Tag\",\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [],\n            \"line\": 6,\n            \"filename\": \"layout.prepend.without-block.pug\"\n          },\n          \"attrs\": [\n            {\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 6,\n          \"filename\": \"layout.prepend.without-block.pug\"\n        }\n      ],\n      \"line\": 4,\n      \"filename\": \"layout.prepend.without-block.pug\",\n      \"name\": \"head\",\n      \"mode\": \"prepend\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"layout.prepend.without-block.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/1794-extends.pug",
    "content": "block content"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/1794-include.pug",
    "content": "mixin test()\n  .test&attributes(attributes)\n \n+test()"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/blocks-in-blocks-layout.pug",
    "content": "doctype html\nhtml\n  head\n    title Default title\n  body\n    block body\n      .container\n        block content\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/dialog.pug",
    "content": "\nextends window.pug\n\nblock window-content\n  .dialog\n    block content\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/empty-block.pug",
    "content": "block test\n\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/escapes.html",
    "content": "<script>\n  console.log(\"foo\\nbar\")\n</script>\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/extends-empty-block-1.pug",
    "content": "extends empty-block.pug\n\nblock test\n    div test1\n\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/extends-empty-block-2.pug",
    "content": "extends empty-block.pug\n\nblock test\n    div test2\n\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/extends-from-root.pug",
    "content": "extends /auxiliary/layout.pug\n\nblock content\n    include /auxiliary/include-from-root.pug\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/extends-relative.pug",
    "content": "extends ../../cases-src/auxiliary/layout\n\nblock content\n    include ../../cases-src/auxiliary/include-from-root\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/filter-in-include.pug",
    "content": "html\n  head\n    style(type=\"text/css\")\n      :less\n        @pad: 15px;\n        body {\n          padding: @pad;\n        }\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/includable.js",
    "content": "var STRING_SUBSTITUTIONS = {\n  // table of character substitutions\n  '\\t': '\\\\t',\n  '\\r': '\\\\r',\n  '\\n': '\\\\n',\n  '\"': '\\\\\"',\n  '\\\\': '\\\\\\\\',\n};\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/include-from-root.pug",
    "content": "h1 hello"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/inheritance.extend.mixin.block.pug",
    "content": "mixin article()\n  article\n    block\n\nhtml\n  head\n    title My Application\n    block head\n  body\n    +article\n      block content\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/inheritance.extend.recursive-grand-grandparent.pug",
    "content": "h1 grand-grandparent\nblock grand-grandparent"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/inheritance.extend.recursive-grandparent.pug",
    "content": "extends inheritance.extend.recursive-grand-grandparent.pug\n\nblock grand-grandparent\n    h2 grandparent\n    block grandparent\n\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/inheritance.extend.recursive-parent.pug",
    "content": "extends inheritance.extend.recursive-grandparent.pug\n\nblock grandparent\n    h3 parent\n    block parent"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/layout.include.pug",
    "content": "html\n  head\n    title My Application\n    block head\n  body\n    block content\n    include window.pug\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/layout.pug",
    "content": "html\n  head\n    title My Application\n    block head\n  body\n    block content"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/mixin-at-end-of-file.pug",
    "content": "mixin slide\n  section.slide\n    block"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/mixins.pug",
    "content": "\nmixin foo()\n  p bar"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/pet.pug",
    "content": ".pet\n  h1 {{name}}\n  p {{name}} is a {{species}} that is {{age}} old"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/smile.html",
    "content": "<p>:)</p>\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/window.pug",
    "content": "\n.window\n  a(href='#').close Close\n  block window-content"
  },
  {
    "path": "packages/pug-linker/test/cases-src/auxiliary/yield-nested.pug",
    "content": "html\n  head\n    title\n  body\n    h1 Page\n    #content\n      #content-wrapper\n        yield\n    #footer\n      stuff"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-extends-from-root.pug",
    "content": "include /auxiliary/extends-from-root.pug\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-extends-of-common-template.pug",
    "content": "include auxiliary/extends-empty-block-1.pug\ninclude auxiliary/extends-empty-block-2.pug\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-extends-relative.pug",
    "content": "include ../cases-src/auxiliary/extends-relative.pug\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-filter-coffee.coffee",
    "content": "math =\n  square: (value) -> value * value\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-filter-stylus.pug",
    "content": "style(type=\"text/css\")\n  include:stylus some.styl\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-filter.pug",
    "content": "html\n  body\n    include:markdown-it some.md\n    script\n      include:coffee-script(minify=true) include-filter-coffee.coffee\n    script\n      include:coffee-script(minify=false) include-filter-coffee.coffee\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-only-text-body.pug",
    "content": "| The message is \"\nyield\n| \"\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-only-text.pug",
    "content": "html\n  body\n    p\n      include include-only-text-body.pug\n        em hello world\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-with-text-head.pug",
    "content": "head\n  script(type='text/javascript').\n    alert('hello world');\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include-with-text.pug",
    "content": "html\n  include include-with-text-head.pug\n    script(src='/caustic.js')\n    script(src='/app.js')\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include.script.pug",
    "content": "script#pet-template(type='text/x-template')\n  include auxiliary/pet.pug\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/include.yield.nested.pug",
    "content": "\ninclude auxiliary/yield-nested.pug\n  p some content\n  p and some more\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/includes-with-ext-js.pug",
    "content": "pre\n  code\n    include javascript-new-lines.js\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/includes.pug",
    "content": "\ninclude auxiliary/mixins.pug\n\n+foo\n\nbody\n  include auxiliary/smile.html\n  include auxiliary/escapes.html\n  script(type=\"text/javascript\")\n    include:verbatim auxiliary/includable.js\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/javascript-new-lines.js",
    "content": "var x = '\\n here is some \\n new lined text';\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/layout.append.pug",
    "content": "\nextends ../fixtures/append/app-layout.pug\n\nblock append head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/layout.append.without-block.pug",
    "content": "\nextends ../fixtures/append-without-block/app-layout.pug\n\nappend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/layout.multi.append.prepend.block.pug",
    "content": "extends ../fixtures/multi-append-prepend-block/redefine.pug\n\nappend content\n\tp.first.append Something appended to content\n\nprepend content\n\tp.first.prepend Something prepended to content\n\nappend content\n\tp.last.append Last append must be most last\n\nprepend content\n\tp.last.prepend Last prepend must appear at top\n\nappend head\n\tscript(src='jquery.js')\n\nprepend head\n\tscript(src='foo.js')\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/layout.prepend.pug",
    "content": "\nextends ../fixtures/prepend/app-layout.pug\n\nblock prepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/layout.prepend.without-block.pug",
    "content": "\nextends ../fixtures/prepend-without-block/app-layout.pug\n\nprepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/some-included.styl",
    "content": "body\n  padding 10px\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/some.md",
    "content": "Just _some_ markdown **tests**.\n\nWith new line.\n"
  },
  {
    "path": "packages/pug-linker/test/cases-src/some.styl",
    "content": "@import \"some-included\"\n"
  },
  {
    "path": "packages/pug-linker/test/errors/child-with-tags.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/layout\",\n        \"line\": 1,\n        \"filename\": \"child-with-tags.pug\",\n        \"fullPath\": \"../fixtures/layout.pug\",\n        \"str\": \"doctype\\n\\nhtml\\n  head\\n    block head\\n      <title>Hello world!</title>\\n  body\\n    block body\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Doctype\",\n              \"val\": \"\",\n              \"line\": 1,\n              \"filename\": \"../fixtures/layout.pug\"\n            },\n            {\n              \"type\": \"Tag\",\n              \"name\": \"html\",\n              \"selfClosing\": false,\n              \"block\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"head\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"<title>Hello world!</title>\",\n                              \"filename\": \"../fixtures/layout.pug\",\n                              \"line\": 6,\n                              \"isHtml\": true\n                            }\n                          ],\n                          \"line\": 5,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"head\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 4,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 4,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  },\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"body\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [],\n                          \"line\": 8,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"body\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 7,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 7,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  }\n                ],\n                \"line\": 3,\n                \"filename\": \"../fixtures/layout.pug\"\n              },\n              \"attrs\": [],\n              \"attributeBlocks\": [],\n              \"isInline\": false,\n              \"line\": 3,\n              \"filename\": \"../fixtures/layout.pug\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/layout.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"child-with-tags.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Hello world!\",\n                \"line\": 4,\n                \"filename\": \"child-with-tags.pug\"\n              }\n            ],\n            \"line\": 4,\n            \"filename\": \"child-with-tags.pug\"\n          },\n          \"attrs\": [],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 4,\n          \"filename\": \"child-with-tags.pug\"\n        }\n      ],\n      \"line\": 3,\n      \"filename\": \"child-with-tags.pug\",\n      \"name\": \"body\",\n      \"mode\": \"replace\"\n    },\n    {\n      \"type\": \"Tag\",\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Text\",\n            \"val\": \"BAD!!!\",\n            \"line\": 6,\n            \"filename\": \"child-with-tags.pug\"\n          }\n        ],\n        \"line\": 6,\n        \"filename\": \"child-with-tags.pug\"\n      },\n      \"attrs\": [],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 6,\n      \"filename\": \"child-with-tags.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"child-with-tags.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/errors/extends-not-first.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Hey\",\n                \"line\": 2,\n                \"filename\": \"extends-not-first.pug\"\n              }\n            ],\n            \"line\": 2,\n            \"filename\": \"extends-not-first.pug\"\n          },\n          \"attrs\": [],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 2,\n          \"filename\": \"extends-not-first.pug\"\n        }\n      ],\n      \"line\": 1,\n      \"filename\": \"extends-not-first.pug\",\n      \"name\": \"body\",\n      \"mode\": \"replace\"\n    },\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/layout\",\n        \"line\": 4,\n        \"filename\": \"extends-not-first.pug\",\n        \"fullPath\": \"../fixtures/layout.pug\",\n        \"str\": \"doctype\\n\\nhtml\\n  head\\n    block head\\n      <title>Hello world!</title>\\n  body\\n    block body\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Doctype\",\n              \"val\": \"\",\n              \"line\": 1,\n              \"filename\": \"../fixtures/layout.pug\"\n            },\n            {\n              \"type\": \"Tag\",\n              \"name\": \"html\",\n              \"selfClosing\": false,\n              \"block\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"head\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"<title>Hello world!</title>\",\n                              \"filename\": \"../fixtures/layout.pug\",\n                              \"line\": 6,\n                              \"isHtml\": true\n                            }\n                          ],\n                          \"line\": 5,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"head\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 4,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 4,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  },\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"body\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [],\n                          \"line\": 8,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"body\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 7,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 7,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  }\n                ],\n                \"line\": 3,\n                \"filename\": \"../fixtures/layout.pug\"\n              },\n              \"attrs\": [],\n              \"attributeBlocks\": [],\n              \"isInline\": false,\n              \"line\": 3,\n              \"filename\": \"../fixtures/layout.pug\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/layout.pug\"\n        }\n      },\n      \"line\": 4,\n      \"filename\": \"extends-not-first.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"extends-not-first.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/errors/unexpected-block.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/empty.pug\",\n        \"line\": 1,\n        \"filename\": \"unexpected-block.pug\",\n        \"fullPath\": \"../fixtures/empty.pug\",\n        \"str\": \"\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [],\n          \"line\": 0,\n          \"filename\": \"../fixtures/empty.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"unexpected-block.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"div\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Hello World\",\n                \"line\": 4,\n                \"filename\": \"unexpected-block.pug\"\n              }\n            ],\n            \"line\": 4,\n            \"filename\": \"unexpected-block.pug\"\n          },\n          \"attrs\": [],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 4,\n          \"filename\": \"unexpected-block.pug\"\n        }\n      ],\n      \"line\": 3,\n      \"filename\": \"unexpected-block.pug\",\n      \"name\": \"foo\",\n      \"mode\": \"replace\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"unexpected-block.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/errors-src/child-with-tags.pug",
    "content": "extend ../fixtures/layout\n\nblock body\n  p Hello world!\n\np BAD!!!\n"
  },
  {
    "path": "packages/pug-linker/test/errors-src/extends-not-first.pug",
    "content": "block body\n  p Hey\n\nextends ../fixtures/layout\n"
  },
  {
    "path": "packages/pug-linker/test/errors-src/unexpected-block.pug",
    "content": "extends ../fixtures/empty.pug\n\nblock foo\n  div Hello World\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/append/app-layout.pug",
    "content": "\nextends layout\n\nblock append head\n  script(src='app.js')"
  },
  {
    "path": "packages/pug-linker/test/fixtures/append/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug-linker/test/fixtures/append/page.html",
    "content": "<html>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/append/page.pug",
    "content": "\nextends app-layout\n\nblock append head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/append-without-block/app-layout.pug",
    "content": "\nextends layout.pug\n\nappend head\n  script(src='app.js')\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/append-without-block/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug-linker/test/fixtures/append-without-block/page.pug",
    "content": "\nextends app-layout.pug\n\nappend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/empty.pug",
    "content": ""
  },
  {
    "path": "packages/pug-linker/test/fixtures/layout.pug",
    "content": "doctype\n\nhtml\n  head\n    block head\n      <title>Hello world!</title>\n  body\n    block body\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/mixins.pug",
    "content": "mixin image(src)\n  img(cl-src=src)&attributes(attributes)\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/multi-append-prepend-block/redefine.pug",
    "content": "extends root.pug\n\nblock content\n\t.content\n\t\t| Defined content\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/multi-append-prepend-block/root.pug",
    "content": "block content\n\t| default content\n\nblock head\n\tscript(src='/app.js')"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend/app-layout.pug",
    "content": "\nextends layout.pug\n\nblock prepend head\n  script(src='app.js')\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend/page.html",
    "content": "<html>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend/page.pug",
    "content": "\nextends app-layout.pug\n\nblock prepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend-without-block/app-layout.pug",
    "content": "\nextends layout.pug\n\nprepend head\n  script(src='app.js')\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend-without-block/layout.pug",
    "content": "\nhtml\n  block head\n    script(src='vendor/jquery.js')\n    script(src='vendor/caustic.js')\n  body\n    block body"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend-without-block/page.html",
    "content": "<html>\n  <script src=\"foo.js\"></script>\n  <script src=\"bar.js\"></script>\n  <script src=\"app.js\"></script>\n  <script src=\"vendor/jquery.js\"></script>\n  <script src=\"vendor/caustic.js\"></script>\n  <body>\n  </body>\n</html>\n"
  },
  {
    "path": "packages/pug-linker/test/fixtures/prepend-without-block/page.pug",
    "content": "\nextends app-layout.pug\n\nprepend head\n  script(src='foo.js')\n  script(src='bar.js')\n"
  },
  {
    "path": "packages/pug-linker/test/index.test.js",
    "content": "var assert = require('assert');\nvar fs = require('fs');\nvar link = require('../');\n\nfunction testDir(dir) {\n  fs.readdirSync(dir).forEach(function(name) {\n    if (!/\\.input\\.json$/.test(name)) return;\n    test(name, function() {\n      var actual = link(JSON.parse(fs.readFileSync(dir + '/' + name, 'utf8')));\n      expect(actual).toMatchSnapshot();\n    });\n  });\n}\n\nfunction testDirError(dir) {\n  fs.readdirSync(dir).forEach(function(name) {\n    if (!/\\.input\\.json$/.test(name)) return;\n    test(name, function() {\n      var input = JSON.parse(fs.readFileSync(dir + '/' + name, 'utf8'));\n      var err;\n      try {\n        link(input);\n      } catch (ex) {\n        err = {\n          msg: ex.msg,\n          code: ex.code,\n          line: ex.line,\n        };\n      }\n      if (!err) throw new Error('Expected error');\n      expect(err).toMatchSnapshot();\n    });\n  });\n}\n\ndescribe('cases from pug', function() {\n  testDir(__dirname + '/cases');\n});\n\ndescribe('special cases', function() {\n  testDir(__dirname + '/special-cases');\n});\n\ndescribe('error handling', function() {\n  testDirError(__dirname + '/errors');\n});\n"
  },
  {
    "path": "packages/pug-linker/test/special-cases/extending-empty.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/empty.pug\",\n        \"line\": 1,\n        \"filename\": \"extending-empty.pug\",\n        \"fullPath\": \"../fixtures/empty.pug\",\n        \"str\": \"\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [],\n          \"line\": 0,\n          \"filename\": \"../fixtures/empty.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"extending-empty.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"extending-empty.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/special-cases/extending-include.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/layout.pug\",\n        \"line\": 1,\n        \"filename\": \"extending-include.pug\",\n        \"fullPath\": \"../fixtures/layout.pug\",\n        \"str\": \"doctype\\n\\nhtml\\n  head\\n    block head\\n      <title>Hello world!</title>\\n  body\\n    block body\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Doctype\",\n              \"val\": \"\",\n              \"line\": 1,\n              \"filename\": \"../fixtures/layout.pug\"\n            },\n            {\n              \"type\": \"Tag\",\n              \"name\": \"html\",\n              \"selfClosing\": false,\n              \"block\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"head\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"<title>Hello world!</title>\",\n                              \"filename\": \"../fixtures/layout.pug\",\n                              \"line\": 6,\n                              \"isHtml\": true\n                            }\n                          ],\n                          \"line\": 5,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"head\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 4,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 4,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  },\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"body\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [],\n                          \"line\": 8,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"body\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 7,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 7,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  }\n                ],\n                \"line\": 3,\n                \"filename\": \"../fixtures/layout.pug\"\n              },\n              \"attrs\": [],\n              \"attributeBlocks\": [],\n              \"isInline\": false,\n              \"line\": 3,\n              \"filename\": \"../fixtures/layout.pug\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/layout.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"extending-include.pug\"\n    },\n    {\n      \"type\": \"Include\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"line\": 2,\n        \"filename\": \"extending-include.pug\",\n        \"path\": \"../fixtures/mixins.pug\",\n        \"fullPath\": \"../fixtures/mixins.pug\",\n        \"str\": \"mixin image(src)\\n  img(cl-src=src)&attributes(attributes)\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Mixin\",\n              \"name\": \"image\",\n              \"args\": \"src\",\n              \"block\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"img\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [],\n                      \"line\": 2,\n                      \"filename\": \"../fixtures/mixins.pug\"\n                    },\n                    \"attrs\": [\n                      {\n                        \"name\": \"cl-src\",\n                        \"val\": \"src\",\n                        \"mustEscape\": true\n                      }\n                    ],\n                    \"attributeBlocks\": [\n                      \"attributes\"\n                    ],\n                    \"isInline\": true,\n                    \"line\": 2,\n                    \"filename\": \"../fixtures/mixins.pug\"\n                  }\n                ],\n                \"line\": 2,\n                \"filename\": \"../fixtures/mixins.pug\"\n              },\n              \"call\": false,\n              \"line\": 1,\n              \"filename\": \"../fixtures/mixins.pug\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/mixins.pug\"\n        }\n      },\n      \"line\": 2,\n      \"filename\": \"extending-include.pug\",\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [],\n        \"line\": 2,\n        \"filename\": \"extending-include.pug\"\n      }\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Mixin\",\n          \"name\": \"image\",\n          \"args\": \"'myimg.png'\",\n          \"block\": null,\n          \"call\": true,\n          \"attrs\": [\n            {\n              \"name\": \"class\",\n              \"val\": \"'with-border'\",\n              \"mustEscape\": false\n            },\n            {\n              \"name\": \"alt\",\n              \"val\": \"\\\"My image\\\"\",\n              \"mustEscape\": true\n            }\n          ],\n          \"attributeBlocks\": [],\n          \"line\": 5,\n          \"filename\": \"extending-include.pug\"\n        }\n      ],\n      \"line\": 4,\n      \"filename\": \"extending-include.pug\",\n      \"name\": \"body\",\n      \"mode\": \"replace\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"extending-include.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/special-cases/root-mixin.input.json",
    "content": "{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Extends\",\n      \"file\": {\n        \"type\": \"FileReference\",\n        \"path\": \"../fixtures/layout.pug\",\n        \"line\": 1,\n        \"filename\": \"root-mixin.pug\",\n        \"fullPath\": \"../fixtures/layout.pug\",\n        \"str\": \"doctype\\n\\nhtml\\n  head\\n    block head\\n      <title>Hello world!</title>\\n  body\\n    block body\\n\",\n        \"ast\": {\n          \"type\": \"Block\",\n          \"nodes\": [\n            {\n              \"type\": \"Doctype\",\n              \"val\": \"\",\n              \"line\": 1,\n              \"filename\": \"../fixtures/layout.pug\"\n            },\n            {\n              \"type\": \"Tag\",\n              \"name\": \"html\",\n              \"selfClosing\": false,\n              \"block\": {\n                \"type\": \"Block\",\n                \"nodes\": [\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"head\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [\n                            {\n                              \"type\": \"Text\",\n                              \"val\": \"<title>Hello world!</title>\",\n                              \"filename\": \"../fixtures/layout.pug\",\n                              \"line\": 6,\n                              \"isHtml\": true\n                            }\n                          ],\n                          \"line\": 5,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"head\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 4,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 4,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  },\n                  {\n                    \"type\": \"Tag\",\n                    \"name\": \"body\",\n                    \"selfClosing\": false,\n                    \"block\": {\n                      \"type\": \"Block\",\n                      \"nodes\": [\n                        {\n                          \"type\": \"NamedBlock\",\n                          \"nodes\": [],\n                          \"line\": 8,\n                          \"filename\": \"../fixtures/layout.pug\",\n                          \"name\": \"body\",\n                          \"mode\": \"replace\"\n                        }\n                      ],\n                      \"line\": 7,\n                      \"filename\": \"../fixtures/layout.pug\"\n                    },\n                    \"attrs\": [],\n                    \"attributeBlocks\": [],\n                    \"isInline\": false,\n                    \"line\": 7,\n                    \"filename\": \"../fixtures/layout.pug\"\n                  }\n                ],\n                \"line\": 3,\n                \"filename\": \"../fixtures/layout.pug\"\n              },\n              \"attrs\": [],\n              \"attributeBlocks\": [],\n              \"isInline\": false,\n              \"line\": 3,\n              \"filename\": \"../fixtures/layout.pug\"\n            }\n          ],\n          \"line\": 0,\n          \"filename\": \"../fixtures/layout.pug\"\n        }\n      },\n      \"line\": 1,\n      \"filename\": \"root-mixin.pug\"\n    },\n    {\n      \"type\": \"Mixin\",\n      \"name\": \"myMixin\",\n      \"args\": null,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [\n          {\n            \"type\": \"Tag\",\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"block\": {\n              \"type\": \"Block\",\n              \"nodes\": [\n                {\n                  \"type\": \"Text\",\n                  \"val\": \"Hello world\",\n                  \"line\": 4,\n                  \"filename\": \"root-mixin.pug\"\n                }\n              ],\n              \"line\": 4,\n              \"filename\": \"root-mixin.pug\"\n            },\n            \"attrs\": [],\n            \"attributeBlocks\": [],\n            \"isInline\": false,\n            \"line\": 4,\n            \"filename\": \"root-mixin.pug\"\n          }\n        ],\n        \"line\": 4,\n        \"filename\": \"root-mixin.pug\"\n      },\n      \"call\": false,\n      \"line\": 3,\n      \"filename\": \"root-mixin.pug\"\n    },\n    {\n      \"type\": \"NamedBlock\",\n      \"nodes\": [\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"Before\",\n                \"line\": 7,\n                \"filename\": \"root-mixin.pug\"\n              }\n            ],\n            \"line\": 7,\n            \"filename\": \"root-mixin.pug\"\n          },\n          \"attrs\": [],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 7,\n          \"filename\": \"root-mixin.pug\"\n        },\n        {\n          \"type\": \"Mixin\",\n          \"name\": \"myMixin\",\n          \"args\": null,\n          \"block\": null,\n          \"call\": true,\n          \"attrs\": [],\n          \"attributeBlocks\": [],\n          \"line\": 8,\n          \"filename\": \"root-mixin.pug\"\n        },\n        {\n          \"type\": \"Tag\",\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"block\": {\n            \"type\": \"Block\",\n            \"nodes\": [\n              {\n                \"type\": \"Text\",\n                \"val\": \"After\",\n                \"line\": 9,\n                \"filename\": \"root-mixin.pug\"\n              }\n            ],\n            \"line\": 9,\n            \"filename\": \"root-mixin.pug\"\n          },\n          \"attrs\": [],\n          \"attributeBlocks\": [],\n          \"isInline\": false,\n          \"line\": 9,\n          \"filename\": \"root-mixin.pug\"\n        }\n      ],\n      \"line\": 6,\n      \"filename\": \"root-mixin.pug\",\n      \"name\": \"body\",\n      \"mode\": \"replace\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"root-mixin.pug\"\n}"
  },
  {
    "path": "packages/pug-linker/test/special-cases-src/extending-empty.pug",
    "content": "extend ../fixtures/empty.pug\n"
  },
  {
    "path": "packages/pug-linker/test/special-cases-src/extending-include.pug",
    "content": "extend ../fixtures/layout.pug\ninclude ../fixtures/mixins.pug\n\nblock body\n  +image('myimg.png').with-border(alt=\"My image\")\n"
  },
  {
    "path": "packages/pug-linker/test/special-cases-src/root-mixin.pug",
    "content": "extend ../fixtures/layout.pug\n\nmixin myMixin\n  p Hello world\n\nblock body\n  p Before\n  +myMixin\n  p After\n"
  },
  {
    "path": "packages/pug-load/HISTORY.md",
    "content": "2.0.3 / 2016-08-24\n==================\n\n  * Do not pollute the user's `options` object\n\n2.0.2 / 2016-08-23\n==================\n\n  * Only publish the module itself\n\n2.0.1 / 2016-08-23\n==================\n\n  * Update to pug-walk@^1.0.0\n\n2.0.0 / 2016-05-14\n==================\n\n  * Make filename part of the options - updates to the 2.x.y APIs for lexer and parser\n"
  },
  {
    "path": "packages/pug-load/LICENSE",
    "content": "Copyright (c) 2015 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-load/README.md",
    "content": "# pug-load\n\nThe pug loader is responsible for loading the depenendencies of a given pug file.  It adds `fullPath` and `str` properties to every `Include` and `Extends` node.  It also adds an `ast` property to any `Include` nodes that are loading pug and any `Extends` nodes.  It then recursively loads the dependencies of any of those included files.\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-load/master.svg)](https://travis-ci.org/pugjs/pug-load)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-load)](https://david-dm.org/pugjs/pug?path=packages/pug-load)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-load)](https://david-dm.org/pugjs/pug?path=packages/pug-load&type=dev)\n[![NPM version](https://img.shields.io/npm/v/pug-load.svg)](https://www.npmjs.org/package/pug-load)\n[![Coverage Status](https://img.shields.io/codecov/c/github/pugjs/pug-load.svg)](https://codecov.io/gh/pugjs/pug-load)\n\n## Installation\n\n    npm install pug-load\n\n## Usage\n\n```js\nvar load = require('pug-load');\n```\n\n### `load(ast, options)`\n### `load.string(str, filename, options)`\n### `load.file(filename, options)`\n\nLoads all dependencies of the Pug AST. `load.string` and `load.file` are syntactic sugar that parses the string or file instead of you doing it yourself.\n\n`options` may contain the following properties:\n\n- `lex` (function): **(required)** the lexer used\n- `parse` (function): **(required)** the parser used\n- `resolve` (function): a function used to override `load.resolve`. Defaults to `load.resolve`.\n- `read` (function): a function used to override `load.read`. Defaults to `load.read`.\n- `basedir` (string): the base directory of absolute inclusion. This is **required** when absolute inclusion (file name starts with `'/'`) is used. Defaults to undefined.\n\nThe `options` object is passed to `load.resolve` and `load.read`, or equivalently `options.resolve` and `options.read`.\n\n### `load.resolve(filename, source, options)`\n\nCallback used by `pug-load` to resolve the full path of an included or extended file given the path of the source file.\n\n`filename` is the included file. `source` is the name of the parent file that includes `filename`.\n\nThis function is not meant to be called from outside of `pug-load`, but rather for you to override.\n\n### `load.read(filename, options)`\n\nCallback used by `pug-load` to return the contents of a file.\n\n`filename` is the file to read.\n\nThis function is not meant to be called from outside of `pug-load`, but rather for you to override.\n\n### `load.validateOptions(options)`\n\nCallback used `pug-load` to ensure the options object is valid. If your overridden `load.resolve` or `load.read` uses a different `options` scheme, you will need to override this function as well.\n\nThis function is not meant to be called from outside of `pug-load`, but rather for you to override.\n\n### Example\n\n```js\nvar fs = require('fs');\nvar lex = require('pug-lexer');\nvar parse = require('pug-parser');\nvar load = require('pug-load');\n\n// you can do everything very manually\n\nvar str = fs.readFileSync('bar.pug', 'utf8');\nvar ast = load(parse(lex(str, 'bar.pug'), 'bar.pug'), {\n  lex: lex,\n  parse: parse,\n  resolve: function (filename, source, options) {\n    console.log('\"' + filename + '\" file requested from \"' + source + '\".');\n    return load.resolve(filename, source, options);\n  }\n});\n\n// or you can do all that in just two steps\n\nvar str = fs.readFileSync('bar.pug', 'utf8');\nvar ast = load.string(str, 'bar.pug', {\n  lex: lex,\n  parse: parse,\n  resolve: function (filename, source, options) {\n    console.log('\"' + filename + '\" file requested from \"' + source + '\".');\n    return load.resolve(filename, source, options);\n  }\n});\n\n// or you can do all that in only one step\n\nvar ast = load.file('bar.pug', {\n  lex: lex,\n  parse: parse,\n  resolve: function (filename, source, options) {\n    console.log('\"' + filename + '\" file requested from \"' + source + '\".');\n    return load.resolve(filename, source, options);\n  }\n});\n```\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-load/index.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar path = require('path');\nvar walk = require('pug-walk');\nvar assign = require('object-assign');\n\nmodule.exports = load;\nfunction load(ast, options) {\n  options = getOptions(options);\n  // clone the ast\n  ast = JSON.parse(JSON.stringify(ast));\n  return walk(ast, function(node) {\n    if (node.str === undefined) {\n      if (\n        node.type === 'Include' ||\n        node.type === 'RawInclude' ||\n        node.type === 'Extends'\n      ) {\n        var file = node.file;\n        if (file.type !== 'FileReference') {\n          throw new Error('Expected file.type to be \"FileReference\"');\n        }\n        var path, str, raw;\n        try {\n          path = options.resolve(file.path, file.filename, options);\n          file.fullPath = path;\n          raw = options.read(path, options);\n          str = raw.toString('utf8');\n        } catch (ex) {\n          ex.message += '\\n    at ' + node.filename + ' line ' + node.line;\n          throw ex;\n        }\n        file.str = str;\n        file.raw = raw;\n        if (node.type === 'Extends' || node.type === 'Include') {\n          file.ast = load.string(\n            str,\n            assign({}, options, {\n              filename: path,\n            })\n          );\n        }\n      }\n    }\n  });\n}\n\nload.string = function loadString(src, options) {\n  options = assign(getOptions(options), {\n    src: src,\n  });\n  var tokens = options.lex(src, options);\n  var ast = options.parse(tokens, options);\n  return load(ast, options);\n};\nload.file = function loadFile(filename, options) {\n  options = assign(getOptions(options), {\n    filename: filename,\n  });\n  var str = options.read(filename).toString('utf8');\n  return load.string(str, options);\n};\n\nload.resolve = function resolve(filename, source, options) {\n  filename = filename.trim();\n  if (filename[0] !== '/' && !source)\n    throw new Error(\n      'the \"filename\" option is required to use includes and extends with \"relative\" paths'\n    );\n\n  if (filename[0] === '/' && !options.basedir)\n    throw new Error(\n      'the \"basedir\" option is required to use includes and extends with \"absolute\" paths'\n    );\n\n  filename = path.join(\n    filename[0] === '/' ? options.basedir : path.dirname(source.trim()),\n    filename\n  );\n\n  return filename;\n};\nload.read = function read(filename, options) {\n  return fs.readFileSync(filename);\n};\n\nload.validateOptions = function validateOptions(options) {\n  /* istanbul ignore if */\n  if (typeof options !== 'object') {\n    throw new TypeError('options must be an object');\n  }\n  /* istanbul ignore if */\n  if (typeof options.lex !== 'function') {\n    throw new TypeError('options.lex must be a function');\n  }\n  /* istanbul ignore if */\n  if (typeof options.parse !== 'function') {\n    throw new TypeError('options.parse must be a function');\n  }\n  /* istanbul ignore if */\n  if (options.resolve && typeof options.resolve !== 'function') {\n    throw new TypeError('options.resolve must be a function');\n  }\n  /* istanbul ignore if */\n  if (options.read && typeof options.read !== 'function') {\n    throw new TypeError('options.read must be a function');\n  }\n};\n\nfunction getOptions(options) {\n  load.validateOptions(options);\n  return assign(\n    {\n      resolve: load.resolve,\n      read: load.read,\n    },\n    options\n  );\n}\n"
  },
  {
    "path": "packages/pug-load/package.json",
    "content": "{\n  \"name\": \"pug-load\",\n  \"version\": \"2.0.12\",\n  \"description\": \"The Pug loader is responsible for loading the depenendencies of a given Pug file.\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"object-assign\": \"^4.1.1\",\n    \"pug-walk\": \"^1.1.8\"\n  },\n  \"devDependencies\": {\n    \"pug-lexer\": \"^4.1.0\",\n    \"pug-parser\": \"^5.0.1\"\n  },\n  \"files\": [\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-load\"\n  },\n  \"author\": \"ForbesLindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-load/test/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`pug-load 1`] = `\nObject {\n  \"filename\": \"<dirname>/foo.pug\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"ast\": Object {\n          \"filename\": \"<dirname>/bar.pug\",\n          \"line\": 0,\n          \"nodes\": Array [\n            Object {\n              \"column\": 1,\n              \"filename\": \"<dirname>/bar.pug\",\n              \"line\": 1,\n              \"mode\": \"replace\",\n              \"name\": \"bing\",\n              \"nodes\": Array [],\n              \"type\": \"NamedBlock\",\n            },\n          ],\n          \"type\": \"Block\",\n        },\n        \"column\": 9,\n        \"filename\": \"<dirname>/foo.pug\",\n        \"fullPath\": \"<dirname>/bar.pug\",\n        \"line\": 1,\n        \"path\": \"bar.pug\",\n        \"raw\": Object {\n          \"hash\": \"538bf7d4b81ef364b1f2e9d42c11f156\",\n          \"size\": 11,\n          \"type\": \"Buffer\",\n        },\n        \"str\": \"block bing\n\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"<dirname>/foo.pug\",\n      \"line\": 1,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"<dirname>/foo.pug\",\n      \"line\": 3,\n      \"mode\": \"replace\",\n      \"name\": \"bing\",\n      \"nodes\": Array [\n        Object {\n          \"block\": Object {\n            \"filename\": \"<dirname>/foo.pug\",\n            \"line\": 4,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"file\": Object {\n            \"ast\": Object {\n              \"filename\": \"<dirname>/bing.pug\",\n              \"line\": 0,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 1,\n                      \"filename\": \"<basedir>/packages/pug-load/test/bing.pug\",\n                      \"line\": 1,\n                      \"mustEscape\": false,\n                      \"name\": \"class\",\n                      \"val\": \"'bing'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"<dirname>/bing.pug\",\n                    \"line\": 1,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"<dirname>/bing.pug\",\n                        \"line\": 1,\n                        \"type\": \"Text\",\n                        \"val\": \"bong\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 1,\n                  \"filename\": \"<dirname>/bing.pug\",\n                  \"isInline\": false,\n                  \"line\": 1,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 11,\n            \"filename\": \"<dirname>/foo.pug\",\n            \"fullPath\": \"<dirname>/bing.pug\",\n            \"line\": 4,\n            \"path\": \"bing.pug\",\n            \"raw\": Object {\n              \"hash\": \"58ecbe086e7a045084cbddac849a2563\",\n              \"size\": 11,\n              \"type\": \"Buffer\",\n            },\n            \"str\": \".bing bong\n\",\n            \"type\": \"FileReference\",\n          },\n          \"filename\": \"<dirname>/foo.pug\",\n          \"line\": 4,\n          \"type\": \"Include\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"<dirname>/foo.pug\",\n            \"line\": 5,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"file\": Object {\n                  \"column\": 13,\n                  \"filename\": \"<dirname>/foo.pug\",\n                  \"fullPath\": \"<dirname>/script.js\",\n                  \"line\": 6,\n                  \"path\": \"script.js\",\n                  \"raw\": Object {\n                    \"hash\": \"86d4f8e34165faeb09f10255121078f8\",\n                    \"size\": 32,\n                    \"type\": \"Buffer\",\n                  },\n                  \"str\": \"document.write('hello world!');\n\",\n                  \"type\": \"FileReference\",\n                },\n                \"filename\": \"<dirname>/foo.pug\",\n                \"filters\": Array [],\n                \"line\": 6,\n                \"type\": \"RawInclude\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"<dirname>/foo.pug\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-load/test/bar.pug",
    "content": "block bing\n"
  },
  {
    "path": "packages/pug-load/test/bing.pug",
    "content": ".bing bong\n"
  },
  {
    "path": "packages/pug-load/test/foo.pug",
    "content": "extends bar.pug\n\nblock bing\n  include bing.pug\n  script\n    include script.js\n"
  },
  {
    "path": "packages/pug-load/test/index.test.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar path = require('path');\nvar assert = require('assert');\nvar walk = require('pug-walk');\nvar lex = require('pug-lexer');\nvar parse = require('pug-parser');\nvar load = require('../');\n\ntest('pug-load', () => {\n  var filename = __dirname + '/foo.pug';\n  var ast = load.file(filename, {\n    lex: lex,\n    parse: parse,\n  });\n\n  ast = walk(\n    ast,\n    function(node) {\n      if (node.filename)\n        node.filename = '<dirname>/' + path.basename(node.filename);\n      if (node.fullPath)\n        node.fullPath = '<dirname>/' + path.basename(node.fullPath);\n    },\n    {includeDependencies: true}\n  );\n\n  expect(ast).toMatchSnapshot();\n});\n"
  },
  {
    "path": "packages/pug-load/test/script.js",
    "content": "document.write('hello world!');\n"
  },
  {
    "path": "packages/pug-parser/HISTORY.md",
    "content": "2.0.1 / 2016-06-01\n==================\n\n  * Add a brief API introduction to README\n\n2.0.0 / 2016-05-14\n==================\n\n  * Take the `filename` as an option rather than special casing it.  This means that parse only takes 2 arguments rather than 3\n  * Add type checking on arguments\n  * Treat the legacy `.jade` extension as `.pug` rather than a raw include\n"
  },
  {
    "path": "packages/pug-parser/LICENSE",
    "content": "Copyright (c) 2014 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-parser/README.md",
    "content": "# pug-parser\n\nThe pug parser (takes an array of tokens and converts it to an abstract syntax tree)\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-parser/master.svg)](https://travis-ci.org/pugjs/pug-parser)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-parser)](https://david-dm.org/pugjs/pug?path=packages/pug-parser)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-parser)](https://david-dm.org/pugjs/pug?path=packages/pug-parser&type=dev)\n[![NPM version](https://img.shields.io/npm/v/pug-parser.svg)](https://www.npmjs.org/package/pug-parser)\n\n## Installation\n\n    npm install pug-parser\n\n## Usage\n\n```js\nvar parse = require('pug-parser');\n```\n\n### `parse(tokens, options)`\n\nConvert Pug tokens to an abstract syntax tree (AST).\n\n`options` can contain the following properties:\n\n- `filename` (string): The name of the Pug file; it is included in the produced AST nodes and error handling, if provided.\n- `plugins` (array): An array of plugins, in the order they should be applied.\n- `src` (string): The source of the Pug file; it is used in error handling if provided.\n\n```js\nvar lex = require('pug-lexer');\n\nvar filename = 'my-file.pug';\nvar src = 'div(data-foo=\"bar\")';\nvar tokens = lex(src, {filename});\n\nvar ast = parse(tokens, {filename, src});\n\nconsole.log(JSON.stringify(ast, null, '  '))\n```\n\n```json\n{\n  \"type\": \"Block\",\n  \"nodes\": [\n    {\n      \"type\": \"Tag\",\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"block\": {\n        \"type\": \"Block\",\n        \"nodes\": [],\n        \"line\": 1,\n        \"filename\": \"my-file.pug\"\n      },\n      \"attrs\": [\n        {\n          \"name\": \"data-foo\",\n          \"val\": \"\\\"bar\\\"\",\n          \"line\": 1,\n          \"column\": 5,\n          \"filename\": \"my-file.pug\",\n          \"mustEscape\": true\n        }\n      ],\n      \"attributeBlocks\": [],\n      \"isInline\": false,\n      \"line\": 1,\n      \"column\": 1,\n      \"filename\": \"my-file.pug\"\n    }\n  ],\n  \"line\": 0,\n  \"filename\": \"my-file.pug\"\n}\n```\n\n### `new parse.Parser(tokens, options)`\n\nConstructor for a Parser class. This is not meant to be used directly unless you know what you are doing.\n\n`options` may contain the following properties:\n\n- `filename` (string): The name of the Pug file; it is included in the produced AST nodes and error handling, if provided.\n- `plugins` (array): An array of plugins, in the order they should be applied.\n- `src` (string): The source of the Pug file; it is used in error handling if provided.\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-parser/index.js",
    "content": "'use strict';\n\nvar assert = require('assert');\nvar TokenStream = require('token-stream');\nvar error = require('pug-error');\nvar inlineTags = require('./lib/inline-tags');\n\nmodule.exports = parse;\nmodule.exports.Parser = Parser;\nfunction parse(tokens, options) {\n  var parser = new Parser(tokens, options);\n  var ast = parser.parse();\n  return JSON.parse(JSON.stringify(ast));\n}\n\n/**\n * Initialize `Parser` with the given input `str` and `filename`.\n *\n * @param {String} str\n * @param {String} filename\n * @param {Object} options\n * @api public\n */\n\nfunction Parser(tokens, options) {\n  options = options || {};\n  if (!Array.isArray(tokens)) {\n    throw new Error(\n      'Expected tokens to be an Array but got \"' + typeof tokens + '\"'\n    );\n  }\n  if (typeof options !== 'object') {\n    throw new Error(\n      'Expected \"options\" to be an object but got \"' + typeof options + '\"'\n    );\n  }\n  this.tokens = new TokenStream(tokens);\n  this.filename = options.filename;\n  this.src = options.src;\n  this.inMixin = 0;\n  this.plugins = options.plugins || [];\n}\n\n/**\n * Parser prototype.\n */\n\nParser.prototype = {\n  /**\n   * Save original constructor\n   */\n\n  constructor: Parser,\n\n  error: function(code, message, token) {\n    var err = error(code, message, {\n      line: token.loc.start.line,\n      column: token.loc.start.column,\n      filename: this.filename,\n      src: this.src,\n    });\n    throw err;\n  },\n\n  /**\n   * Return the next token object.\n   *\n   * @return {Object}\n   * @api private\n   */\n\n  advance: function() {\n    return this.tokens.advance();\n  },\n\n  /**\n   * Single token lookahead.\n   *\n   * @return {Object}\n   * @api private\n   */\n\n  peek: function() {\n    return this.tokens.peek();\n  },\n\n  /**\n   * `n` token lookahead.\n   *\n   * @param {Number} n\n   * @return {Object}\n   * @api private\n   */\n\n  lookahead: function(n) {\n    return this.tokens.lookahead(n);\n  },\n\n  /**\n   * Parse input returning a string of js for evaluation.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  parse: function() {\n    var block = this.emptyBlock(0);\n\n    while ('eos' != this.peek().type) {\n      if ('newline' == this.peek().type) {\n        this.advance();\n      } else if ('text-html' == this.peek().type) {\n        block.nodes = block.nodes.concat(this.parseTextHtml());\n      } else {\n        var expr = this.parseExpr();\n        if (expr) {\n          if (expr.type === 'Block') {\n            block.nodes = block.nodes.concat(expr.nodes);\n          } else {\n            block.nodes.push(expr);\n          }\n        }\n      }\n    }\n\n    return block;\n  },\n\n  /**\n   * Expect the given type, or throw an exception.\n   *\n   * @param {String} type\n   * @api private\n   */\n\n  expect: function(type) {\n    if (this.peek().type === type) {\n      return this.advance();\n    } else {\n      this.error(\n        'INVALID_TOKEN',\n        'expected \"' + type + '\", but got \"' + this.peek().type + '\"',\n        this.peek()\n      );\n    }\n  },\n\n  /**\n   * Accept the given `type`.\n   *\n   * @param {String} type\n   * @api private\n   */\n\n  accept: function(type) {\n    if (this.peek().type === type) {\n      return this.advance();\n    }\n  },\n\n  initBlock: function(line, nodes) {\n    /* istanbul ignore if */\n    if ((line | 0) !== line) throw new Error('`line` is not an integer');\n    /* istanbul ignore if */\n    if (!Array.isArray(nodes)) throw new Error('`nodes` is not an array');\n    return {\n      type: 'Block',\n      nodes: nodes,\n      line: line,\n      filename: this.filename,\n    };\n  },\n\n  emptyBlock: function(line) {\n    return this.initBlock(line, []);\n  },\n\n  runPlugin: function(context, tok) {\n    var rest = [this];\n    for (var i = 2; i < arguments.length; i++) {\n      rest.push(arguments[i]);\n    }\n    var pluginContext;\n    for (var i = 0; i < this.plugins.length; i++) {\n      var plugin = this.plugins[i];\n      if (plugin[context] && plugin[context][tok.type]) {\n        if (pluginContext)\n          throw new Error(\n            'Multiple plugin handlers found for context ' +\n              JSON.stringify(context) +\n              ', token type ' +\n              JSON.stringify(tok.type)\n          );\n        pluginContext = plugin[context];\n      }\n    }\n    if (pluginContext)\n      return pluginContext[tok.type].apply(pluginContext, rest);\n  },\n\n  /**\n   *   tag\n   * | doctype\n   * | mixin\n   * | include\n   * | filter\n   * | comment\n   * | text\n   * | text-html\n   * | dot\n   * | each\n   * | code\n   * | yield\n   * | id\n   * | class\n   * | interpolation\n   */\n\n  parseExpr: function() {\n    switch (this.peek().type) {\n      case 'tag':\n        return this.parseTag();\n      case 'mixin':\n        return this.parseMixin();\n      case 'block':\n        return this.parseBlock();\n      case 'mixin-block':\n        return this.parseMixinBlock();\n      case 'case':\n        return this.parseCase();\n      case 'extends':\n        return this.parseExtends();\n      case 'include':\n        return this.parseInclude();\n      case 'doctype':\n        return this.parseDoctype();\n      case 'filter':\n        return this.parseFilter();\n      case 'comment':\n        return this.parseComment();\n      case 'text':\n      case 'interpolated-code':\n      case 'start-pug-interpolation':\n        return this.parseText({block: true});\n      case 'text-html':\n        return this.initBlock(this.peek().loc.start.line, this.parseTextHtml());\n      case 'dot':\n        return this.parseDot();\n      case 'each':\n        return this.parseEach();\n      case 'eachOf':\n        return this.parseEachOf();\n      case 'code':\n        return this.parseCode();\n      case 'blockcode':\n        return this.parseBlockCode();\n      case 'if':\n        return this.parseConditional();\n      case 'while':\n        return this.parseWhile();\n      case 'call':\n        return this.parseCall();\n      case 'interpolation':\n        return this.parseInterpolation();\n      case 'yield':\n        return this.parseYield();\n      case 'id':\n      case 'class':\n        if (!this.peek().loc.start) debugger;\n        this.tokens.defer({\n          type: 'tag',\n          val: 'div',\n          loc: this.peek().loc,\n          filename: this.filename,\n        });\n        return this.parseExpr();\n      default:\n        var pluginResult = this.runPlugin('expressionTokens', this.peek());\n        if (pluginResult) return pluginResult;\n        this.error(\n          'INVALID_TOKEN',\n          'unexpected token \"' + this.peek().type + '\"',\n          this.peek()\n        );\n    }\n  },\n\n  parseDot: function() {\n    this.advance();\n    return this.parseTextBlock();\n  },\n\n  /**\n   * Text\n   */\n\n  parseText: function(options) {\n    var tags = [];\n    var lineno = this.peek().loc.start.line;\n    var nextTok = this.peek();\n    loop: while (true) {\n      switch (nextTok.type) {\n        case 'text':\n          var tok = this.advance();\n          tags.push({\n            type: 'Text',\n            val: tok.val,\n            line: tok.loc.start.line,\n            column: tok.loc.start.column,\n            filename: this.filename,\n          });\n          break;\n        case 'interpolated-code':\n          var tok = this.advance();\n          tags.push({\n            type: 'Code',\n            val: tok.val,\n            buffer: tok.buffer,\n            mustEscape: tok.mustEscape !== false,\n            isInline: true,\n            line: tok.loc.start.line,\n            column: tok.loc.start.column,\n            filename: this.filename,\n          });\n          break;\n        case 'newline':\n          if (!options || !options.block) break loop;\n          var tok = this.advance();\n          var nextType = this.peek().type;\n          if (nextType === 'text' || nextType === 'interpolated-code') {\n            tags.push({\n              type: 'Text',\n              val: '\\n',\n              line: tok.loc.start.line,\n              column: tok.loc.start.column,\n              filename: this.filename,\n            });\n          }\n          break;\n        case 'start-pug-interpolation':\n          this.advance();\n          tags.push(this.parseExpr());\n          this.expect('end-pug-interpolation');\n          break;\n        default:\n          var pluginResult = this.runPlugin('textTokens', nextTok, tags);\n          if (pluginResult) break;\n          break loop;\n      }\n      nextTok = this.peek();\n    }\n    if (tags.length === 1) return tags[0];\n    else return this.initBlock(lineno, tags);\n  },\n\n  parseTextHtml: function() {\n    var nodes = [];\n    var currentNode = null;\n    loop: while (true) {\n      switch (this.peek().type) {\n        case 'text-html':\n          var text = this.advance();\n          if (!currentNode) {\n            currentNode = {\n              type: 'Text',\n              val: text.val,\n              filename: this.filename,\n              line: text.loc.start.line,\n              column: text.loc.start.column,\n              isHtml: true,\n            };\n            nodes.push(currentNode);\n          } else {\n            currentNode.val += '\\n' + text.val;\n          }\n          break;\n        case 'indent':\n          var block = this.block();\n          block.nodes.forEach(function(node) {\n            if (node.isHtml) {\n              if (!currentNode) {\n                currentNode = node;\n                nodes.push(currentNode);\n              } else {\n                currentNode.val += '\\n' + node.val;\n              }\n            } else {\n              currentNode = null;\n              nodes.push(node);\n            }\n          });\n          break;\n        case 'code':\n          currentNode = null;\n          nodes.push(this.parseCode(true));\n          break;\n        case 'newline':\n          this.advance();\n          break;\n        default:\n          break loop;\n      }\n    }\n    return nodes;\n  },\n\n  /**\n   *   ':' expr\n   * | block\n   */\n\n  parseBlockExpansion: function() {\n    var tok = this.accept(':');\n    if (tok) {\n      var expr = this.parseExpr();\n      return expr.type === 'Block'\n        ? expr\n        : this.initBlock(tok.loc.start.line, [expr]);\n    } else {\n      return this.block();\n    }\n  },\n\n  /**\n   * case\n   */\n\n  parseCase: function() {\n    var tok = this.expect('case');\n    var node = {\n      type: 'Case',\n      expr: tok.val,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n\n    var block = this.emptyBlock(tok.loc.start.line + 1);\n    this.expect('indent');\n    while ('outdent' != this.peek().type) {\n      switch (this.peek().type) {\n        case 'comment':\n        case 'newline':\n          this.advance();\n          break;\n        case 'when':\n          block.nodes.push(this.parseWhen());\n          break;\n        case 'default':\n          block.nodes.push(this.parseDefault());\n          break;\n        default:\n          var pluginResult = this.runPlugin('caseTokens', this.peek(), block);\n          if (pluginResult) break;\n          this.error(\n            'INVALID_TOKEN',\n            'Unexpected token \"' +\n              this.peek().type +\n              '\", expected \"when\", \"default\" or \"newline\"',\n            this.peek()\n          );\n      }\n    }\n    this.expect('outdent');\n\n    node.block = block;\n\n    return node;\n  },\n\n  /**\n   * when\n   */\n\n  parseWhen: function() {\n    var tok = this.expect('when');\n    if (this.peek().type !== 'newline') {\n      return {\n        type: 'When',\n        expr: tok.val,\n        block: this.parseBlockExpansion(),\n        debug: false,\n        line: tok.loc.start.line,\n        column: tok.loc.start.column,\n        filename: this.filename,\n      };\n    } else {\n      return {\n        type: 'When',\n        expr: tok.val,\n        debug: false,\n        line: tok.loc.start.line,\n        column: tok.loc.start.column,\n        filename: this.filename,\n      };\n    }\n  },\n\n  /**\n   * default\n   */\n\n  parseDefault: function() {\n    var tok = this.expect('default');\n    return {\n      type: 'When',\n      expr: 'default',\n      block: this.parseBlockExpansion(),\n      debug: false,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n  },\n\n  /**\n   * code\n   */\n\n  parseCode: function(noBlock) {\n    var tok = this.expect('code');\n    assert(\n      typeof tok.mustEscape === 'boolean',\n      'Please update to the newest version of pug-lexer.'\n    );\n    var node = {\n      type: 'Code',\n      val: tok.val,\n      buffer: tok.buffer,\n      mustEscape: tok.mustEscape !== false,\n      isInline: !!noBlock,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n    // todo: why is this here?  It seems like a hacky workaround\n    if (node.val.match(/^ *else/)) node.debug = false;\n\n    if (noBlock) return node;\n\n    var block;\n\n    // handle block\n    block = 'indent' == this.peek().type;\n    if (block) {\n      if (tok.buffer) {\n        this.error(\n          'BLOCK_IN_BUFFERED_CODE',\n          'Buffered code cannot have a block attached to it',\n          this.peek()\n        );\n      }\n      node.block = this.block();\n    }\n\n    return node;\n  },\n  parseConditional: function() {\n    var tok = this.expect('if');\n    var node = {\n      type: 'Conditional',\n      test: tok.val,\n      consequent: this.emptyBlock(tok.loc.start.line),\n      alternate: null,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n\n    // handle block\n    if ('indent' == this.peek().type) {\n      node.consequent = this.block();\n    }\n\n    var currentNode = node;\n    while (true) {\n      if (this.peek().type === 'newline') {\n        this.expect('newline');\n      } else if (this.peek().type === 'else-if') {\n        tok = this.expect('else-if');\n        currentNode = currentNode.alternate = {\n          type: 'Conditional',\n          test: tok.val,\n          consequent: this.emptyBlock(tok.loc.start.line),\n          alternate: null,\n          line: tok.loc.start.line,\n          column: tok.loc.start.column,\n          filename: this.filename,\n        };\n        if ('indent' == this.peek().type) {\n          currentNode.consequent = this.block();\n        }\n      } else if (this.peek().type === 'else') {\n        this.expect('else');\n        if (this.peek().type === 'indent') {\n          currentNode.alternate = this.block();\n        }\n        break;\n      } else {\n        break;\n      }\n    }\n\n    return node;\n  },\n  parseWhile: function() {\n    var tok = this.expect('while');\n    var node = {\n      type: 'While',\n      test: tok.val,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n\n    // handle block\n    if ('indent' == this.peek().type) {\n      node.block = this.block();\n    } else {\n      node.block = this.emptyBlock(tok.loc.start.line);\n    }\n\n    return node;\n  },\n\n  /**\n   * block code\n   */\n\n  parseBlockCode: function() {\n    var tok = this.expect('blockcode');\n    var line = tok.loc.start.line;\n    var column = tok.loc.start.column;\n    var body = this.peek();\n    var text = '';\n    if (body.type === 'start-pipeless-text') {\n      this.advance();\n      while (this.peek().type !== 'end-pipeless-text') {\n        tok = this.advance();\n        switch (tok.type) {\n          case 'text':\n            text += tok.val;\n            break;\n          case 'newline':\n            text += '\\n';\n            break;\n          default:\n            var pluginResult = this.runPlugin('blockCodeTokens', tok, tok);\n            if (pluginResult) {\n              text += pluginResult;\n              break;\n            }\n            this.error(\n              'INVALID_TOKEN',\n              'Unexpected token type: ' + tok.type,\n              tok\n            );\n        }\n      }\n      this.advance();\n    }\n    return {\n      type: 'Code',\n      val: text,\n      buffer: false,\n      mustEscape: false,\n      isInline: false,\n      line: line,\n      column: column,\n      filename: this.filename,\n    };\n  },\n  /**\n   * comment\n   */\n\n  parseComment: function() {\n    var tok = this.expect('comment');\n    var block;\n    if ((block = this.parseTextBlock())) {\n      return {\n        type: 'BlockComment',\n        val: tok.val,\n        block: block,\n        buffer: tok.buffer,\n        line: tok.loc.start.line,\n        column: tok.loc.start.column,\n        filename: this.filename,\n      };\n    } else {\n      return {\n        type: 'Comment',\n        val: tok.val,\n        buffer: tok.buffer,\n        line: tok.loc.start.line,\n        column: tok.loc.start.column,\n        filename: this.filename,\n      };\n    }\n  },\n\n  /**\n   * doctype\n   */\n\n  parseDoctype: function() {\n    var tok = this.expect('doctype');\n    return {\n      type: 'Doctype',\n      val: tok.val,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n  },\n\n  parseIncludeFilter: function() {\n    var tok = this.expect('filter');\n    var attrs = [];\n\n    if (this.peek().type === 'start-attributes') {\n      attrs = this.attrs();\n    }\n\n    return {\n      type: 'IncludeFilter',\n      name: tok.val,\n      attrs: attrs,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n  },\n\n  /**\n   * filter attrs? text-block\n   */\n\n  parseFilter: function() {\n    var tok = this.expect('filter');\n    var block,\n      attrs = [];\n\n    if (this.peek().type === 'start-attributes') {\n      attrs = this.attrs();\n    }\n\n    if (this.peek().type === 'text') {\n      var textToken = this.advance();\n      block = this.initBlock(textToken.loc.start.line, [\n        {\n          type: 'Text',\n          val: textToken.val,\n          line: textToken.loc.start.line,\n          column: textToken.loc.start.column,\n          filename: this.filename,\n        },\n      ]);\n    } else if (this.peek().type === 'filter') {\n      block = this.initBlock(tok.loc.start.line, [this.parseFilter()]);\n    } else {\n      block = this.parseTextBlock() || this.emptyBlock(tok.loc.start.line);\n    }\n\n    return {\n      type: 'Filter',\n      name: tok.val,\n      block: block,\n      attrs: attrs,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n  },\n\n  /**\n   * each block\n   */\n\n  parseEach: function() {\n    var tok = this.expect('each');\n    var node = {\n      type: 'Each',\n      obj: tok.code,\n      val: tok.val,\n      key: tok.key,\n      block: this.block(),\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n    if (this.peek().type == 'else') {\n      this.advance();\n      node.alternate = this.block();\n    }\n    return node;\n  },\n\n  parseEachOf: function() {\n    var tok = this.expect('eachOf');\n    var node = {\n      type: 'EachOf',\n      obj: tok.code,\n      val: tok.val,\n      block: this.block(),\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n    return node;\n  },\n  /**\n   * 'extends' name\n   */\n\n  parseExtends: function() {\n    var tok = this.expect('extends');\n    var path = this.expect('path');\n    return {\n      type: 'Extends',\n      file: {\n        type: 'FileReference',\n        path: path.val.trim(),\n        line: path.loc.start.line,\n        column: path.loc.start.column,\n        filename: this.filename,\n      },\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n  },\n\n  /**\n   * 'block' name block\n   */\n\n  parseBlock: function() {\n    var tok = this.expect('block');\n\n    var node =\n      'indent' == this.peek().type\n        ? this.block()\n        : this.emptyBlock(tok.loc.start.line);\n    node.type = 'NamedBlock';\n    node.name = tok.val.trim();\n    node.mode = tok.mode;\n    node.line = tok.loc.start.line;\n    node.column = tok.loc.start.column;\n\n    return node;\n  },\n\n  parseMixinBlock: function() {\n    var tok = this.expect('mixin-block');\n    if (!this.inMixin) {\n      this.error(\n        'BLOCK_OUTISDE_MIXIN',\n        'Anonymous blocks are not allowed unless they are part of a mixin.',\n        tok\n      );\n    }\n    return {\n      type: 'MixinBlock',\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n  },\n\n  parseYield: function() {\n    var tok = this.expect('yield');\n    return {\n      type: 'YieldBlock',\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n  },\n\n  /**\n   * include block?\n   */\n\n  parseInclude: function() {\n    var tok = this.expect('include');\n    var node = {\n      type: 'Include',\n      file: {\n        type: 'FileReference',\n        filename: this.filename,\n      },\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n    var filters = [];\n    while (this.peek().type === 'filter') {\n      filters.push(this.parseIncludeFilter());\n    }\n    var path = this.expect('path');\n\n    node.file.path = path.val.trim();\n    node.file.line = path.loc.start.line;\n    node.file.column = path.loc.start.column;\n\n    if (\n      (/\\.jade$/.test(node.file.path) || /\\.pug$/.test(node.file.path)) &&\n      !filters.length\n    ) {\n      node.block =\n        'indent' == this.peek().type\n          ? this.block()\n          : this.emptyBlock(tok.loc.start.line);\n      if (/\\.jade$/.test(node.file.path)) {\n        console.warn(\n          this.filename +\n            ', line ' +\n            tok.loc.start.line +\n            ':\\nThe .jade extension is deprecated, use .pug for \"' +\n            node.file.path +\n            '\".'\n        );\n      }\n    } else {\n      node.type = 'RawInclude';\n      node.filters = filters;\n      if (this.peek().type === 'indent') {\n        this.error(\n          'RAW_INCLUDE_BLOCK',\n          'Raw inclusion cannot contain a block',\n          this.peek()\n        );\n      }\n    }\n    return node;\n  },\n\n  /**\n   * call ident block\n   */\n\n  parseCall: function() {\n    var tok = this.expect('call');\n    var name = tok.val;\n    var args = tok.args;\n    var mixin = {\n      type: 'Mixin',\n      name: name,\n      args: args,\n      block: this.emptyBlock(tok.loc.start.line),\n      call: true,\n      attrs: [],\n      attributeBlocks: [],\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n\n    this.tag(mixin);\n    if (mixin.code) {\n      mixin.block.nodes.push(mixin.code);\n      delete mixin.code;\n    }\n    if (mixin.block.nodes.length === 0) mixin.block = null;\n    return mixin;\n  },\n\n  /**\n   * mixin block\n   */\n\n  parseMixin: function() {\n    var tok = this.expect('mixin');\n    var name = tok.val;\n    var args = tok.args;\n\n    if ('indent' == this.peek().type) {\n      this.inMixin++;\n      var mixin = {\n        type: 'Mixin',\n        name: name,\n        args: args,\n        block: this.block(),\n        call: false,\n        line: tok.loc.start.line,\n        column: tok.loc.start.column,\n        filename: this.filename,\n      };\n      this.inMixin--;\n      return mixin;\n    } else {\n      this.error(\n        'MIXIN_WITHOUT_BODY',\n        'Mixin ' + name + ' declared without body',\n        tok\n      );\n    }\n  },\n\n  /**\n   * indent (text | newline)* outdent\n   */\n\n  parseTextBlock: function() {\n    var tok = this.accept('start-pipeless-text');\n    if (!tok) return;\n    var block = this.emptyBlock(tok.loc.start.line);\n    while (this.peek().type !== 'end-pipeless-text') {\n      var tok = this.advance();\n      switch (tok.type) {\n        case 'text':\n          block.nodes.push({\n            type: 'Text',\n            val: tok.val,\n            line: tok.loc.start.line,\n            column: tok.loc.start.column,\n            filename: this.filename,\n          });\n          break;\n        case 'newline':\n          block.nodes.push({\n            type: 'Text',\n            val: '\\n',\n            line: tok.loc.start.line,\n            column: tok.loc.start.column,\n            filename: this.filename,\n          });\n          break;\n        case 'start-pug-interpolation':\n          block.nodes.push(this.parseExpr());\n          this.expect('end-pug-interpolation');\n          break;\n        case 'interpolated-code':\n          block.nodes.push({\n            type: 'Code',\n            val: tok.val,\n            buffer: tok.buffer,\n            mustEscape: tok.mustEscape !== false,\n            isInline: true,\n            line: tok.loc.start.line,\n            column: tok.loc.start.column,\n            filename: this.filename,\n          });\n          break;\n        default:\n          var pluginResult = this.runPlugin('textBlockTokens', tok, block, tok);\n          if (pluginResult) break;\n          this.error(\n            'INVALID_TOKEN',\n            'Unexpected token type: ' + tok.type,\n            tok\n          );\n      }\n    }\n    this.advance();\n    return block;\n  },\n\n  /**\n   * indent expr* outdent\n   */\n\n  block: function() {\n    var tok = this.expect('indent');\n    var block = this.emptyBlock(tok.loc.start.line);\n    while ('outdent' != this.peek().type) {\n      if ('newline' == this.peek().type) {\n        this.advance();\n      } else if ('text-html' == this.peek().type) {\n        block.nodes = block.nodes.concat(this.parseTextHtml());\n      } else {\n        var expr = this.parseExpr();\n        if (expr.type === 'Block') {\n          block.nodes = block.nodes.concat(expr.nodes);\n        } else {\n          block.nodes.push(expr);\n        }\n      }\n    }\n    this.expect('outdent');\n    return block;\n  },\n\n  /**\n   * interpolation (attrs | class | id)* (text | code | ':')? newline* block?\n   */\n\n  parseInterpolation: function() {\n    var tok = this.advance();\n    var tag = {\n      type: 'InterpolatedTag',\n      expr: tok.val,\n      selfClosing: false,\n      block: this.emptyBlock(tok.loc.start.line),\n      attrs: [],\n      attributeBlocks: [],\n      isInline: false,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n\n    return this.tag(tag, {selfClosingAllowed: true});\n  },\n\n  /**\n   * tag (attrs | class | id)* (text | code | ':')? newline* block?\n   */\n\n  parseTag: function() {\n    var tok = this.advance();\n    var tag = {\n      type: 'Tag',\n      name: tok.val,\n      selfClosing: false,\n      block: this.emptyBlock(tok.loc.start.line),\n      attrs: [],\n      attributeBlocks: [],\n      isInline: inlineTags.indexOf(tok.val) !== -1,\n      line: tok.loc.start.line,\n      column: tok.loc.start.column,\n      filename: this.filename,\n    };\n\n    return this.tag(tag, {selfClosingAllowed: true});\n  },\n\n  /**\n   * Parse tag.\n   */\n\n  tag: function(tag, options) {\n    var seenAttrs = false;\n    var attributeNames = [];\n    var selfClosingAllowed = options && options.selfClosingAllowed;\n    // (attrs | class | id)*\n    out: while (true) {\n      switch (this.peek().type) {\n        case 'id':\n        case 'class':\n          var tok = this.advance();\n          if (tok.type === 'id') {\n            if (attributeNames.indexOf('id') !== -1) {\n              this.error(\n                'DUPLICATE_ID',\n                'Duplicate attribute \"id\" is not allowed.',\n                tok\n              );\n            }\n            attributeNames.push('id');\n          }\n          tag.attrs.push({\n            name: tok.type,\n            val: \"'\" + tok.val + \"'\",\n            line: tok.loc.start.line,\n            column: tok.loc.start.column,\n            filename: this.filename,\n            mustEscape: false,\n          });\n          continue;\n        case 'start-attributes':\n          if (seenAttrs) {\n            console.warn(\n              this.filename +\n                ', line ' +\n                this.peek().loc.start.line +\n                ':\\nYou should not have pug tags with multiple attributes.'\n            );\n          }\n          seenAttrs = true;\n          tag.attrs = tag.attrs.concat(this.attrs(attributeNames));\n          continue;\n        case '&attributes':\n          var tok = this.advance();\n          tag.attributeBlocks.push({\n            type: 'AttributeBlock',\n            val: tok.val,\n            line: tok.loc.start.line,\n            column: tok.loc.start.column,\n            filename: this.filename,\n          });\n          break;\n        default:\n          var pluginResult = this.runPlugin(\n            'tagAttributeTokens',\n            this.peek(),\n            tag,\n            attributeNames\n          );\n          if (pluginResult) break;\n          break out;\n      }\n    }\n\n    // check immediate '.'\n    if ('dot' == this.peek().type) {\n      tag.textOnly = true;\n      this.advance();\n    }\n\n    // (text | code | ':')?\n    switch (this.peek().type) {\n      case 'text':\n      case 'interpolated-code':\n        var text = this.parseText();\n        if (text.type === 'Block') {\n          tag.block.nodes.push.apply(tag.block.nodes, text.nodes);\n        } else {\n          tag.block.nodes.push(text);\n        }\n        break;\n      case 'code':\n        tag.block.nodes.push(this.parseCode(true));\n        break;\n      case ':':\n        this.advance();\n        var expr = this.parseExpr();\n        tag.block =\n          expr.type === 'Block' ? expr : this.initBlock(tag.line, [expr]);\n        break;\n      case 'newline':\n      case 'indent':\n      case 'outdent':\n      case 'eos':\n      case 'start-pipeless-text':\n      case 'end-pug-interpolation':\n        break;\n      case 'slash':\n        if (selfClosingAllowed) {\n          this.advance();\n          tag.selfClosing = true;\n          break;\n        }\n      default:\n        var pluginResult = this.runPlugin(\n          'tagTokens',\n          this.peek(),\n          tag,\n          options\n        );\n        if (pluginResult) break;\n        this.error(\n          'INVALID_TOKEN',\n          'Unexpected token `' +\n            this.peek().type +\n            '` expected `text`, `interpolated-code`, `code`, `:`' +\n            (selfClosingAllowed ? ', `slash`' : '') +\n            ', `newline` or `eos`',\n          this.peek()\n        );\n    }\n\n    // newline*\n    while ('newline' == this.peek().type) this.advance();\n\n    // block?\n    if (tag.textOnly) {\n      tag.block = this.parseTextBlock() || this.emptyBlock(tag.line);\n    } else if ('indent' == this.peek().type) {\n      var block = this.block();\n      for (var i = 0, len = block.nodes.length; i < len; ++i) {\n        tag.block.nodes.push(block.nodes[i]);\n      }\n    }\n\n    return tag;\n  },\n\n  attrs: function(attributeNames) {\n    this.expect('start-attributes');\n\n    var attrs = [];\n    var tok = this.advance();\n    while (tok.type === 'attribute') {\n      if (tok.name !== 'class' && attributeNames) {\n        if (attributeNames.indexOf(tok.name) !== -1) {\n          this.error(\n            'DUPLICATE_ATTRIBUTE',\n            'Duplicate attribute \"' + tok.name + '\" is not allowed.',\n            tok\n          );\n        }\n        attributeNames.push(tok.name);\n      }\n      attrs.push({\n        name: tok.name,\n        val: tok.val,\n        line: tok.loc.start.line,\n        column: tok.loc.start.column,\n        filename: this.filename,\n        mustEscape: tok.mustEscape !== false,\n      });\n      tok = this.advance();\n    }\n    this.tokens.defer(tok);\n    this.expect('end-attributes');\n    return attrs;\n  },\n};\n"
  },
  {
    "path": "packages/pug-parser/lib/inline-tags.js",
    "content": "'use strict';\n\nmodule.exports = [\n  'a',\n  'abbr',\n  'acronym',\n  'b',\n  'br',\n  'code',\n  'em',\n  'font',\n  'i',\n  'img',\n  'ins',\n  'kbd',\n  'map',\n  'samp',\n  'small',\n  'span',\n  'strong',\n  'sub',\n  'sup',\n];\n"
  },
  {
    "path": "packages/pug-parser/package.json",
    "content": "{\n  \"name\": \"pug-parser\",\n  \"version\": \"5.0.1\",\n  \"description\": \"The pug parser (takes an array of tokens and converts it to an abstract syntax tree)\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"pug-error\": \"^1.3.3\",\n    \"token-stream\": \"1.0.0\"\n  },\n  \"devDependencies\": {},\n  \"files\": [\n    \"lib/inline-tags.js\",\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-parser\"\n  },\n  \"author\": \"ForbesLindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-parser/test/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`attr-es2015.tokens.json 1`] = `\nObject {\n  \"filename\": \"attr-es2015.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"attr-es2015.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var avatar = '219b77f9d21de75e81851b6b886057c7'\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 4,\n          \"filename\": \"attr-es2015.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'avatar-div'\",\n        },\n        Object {\n          \"column\": 16,\n          \"filename\": \"attr-es2015.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"style\",\n          \"val\": \"\\`background-image: url(https://www.gravatar.com/avatar/\\${avatar})\\`\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attr-es2015.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attr-es2015.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`attrs.js.tokens.json 1`] = `\nObject {\n  \"filename\": \"attrs.js.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var id = 5\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"function answer() {\n  return 42;\n}\n\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/user/' + id\",\n        },\n        Object {\n          \"column\": 23,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"'button'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 3,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/user/' + id\",\n        },\n        Object {\n          \"column\": 27,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"'button'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 4,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 6,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": true,\n          \"name\": \"key\",\n          \"val\": \"'answer'\",\n        },\n        Object {\n          \"column\": 20,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": true,\n          \"name\": \"value\",\n          \"val\": \"answer()\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"meta\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"['class1', 'class2']\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 6,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 2,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 7,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'tag-class'\",\n        },\n        Object {\n          \"column\": 13,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 7,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"['class1', 'class2']\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 7,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 9,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/user/' + id\",\n        },\n        Object {\n          \"column\": 22,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 9,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"'button'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 9,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 9,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 10,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/user/' + id\",\n        },\n        Object {\n          \"column\": 26,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 10,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"'button'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 10,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 10,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 6,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 11,\n          \"mustEscape\": true,\n          \"name\": \"key\",\n          \"val\": \"'answer'\",\n        },\n        Object {\n          \"column\": 19,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 11,\n          \"mustEscape\": true,\n          \"name\": \"value\",\n          \"val\": \"answer()\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 11,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 11,\n      \"name\": \"meta\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 12,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"['class1', 'class2']\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 12,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 12,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 2,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 13,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'tag-class'\",\n        },\n        Object {\n          \"column\": 13,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 13,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"['class1', 'class2']\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 13,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": true,\n      \"line\": 13,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [\n        Object {\n          \"column\": 11,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 15,\n          \"type\": \"AttributeBlock\",\n          \"val\": \"{foo: 'bar'}\",\n        },\n      ],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 15,\n          \"mustEscape\": true,\n          \"name\": \"id\",\n          \"val\": \"id\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 15,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 15,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 16,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var bar = null\",\n    },\n    Object {\n      \"attributeBlocks\": Array [\n        Object {\n          \"column\": 22,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 17,\n          \"type\": \"AttributeBlock\",\n          \"val\": \"{baz: 'baz'}\",\n        },\n      ],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 17,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"null\",\n        },\n        Object {\n          \"column\": 14,\n          \"filename\": \"attrs.js.tokens.json\",\n          \"line\": 17,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": \"bar\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.js.tokens.json\",\n        \"line\": 17,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 17,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`attrs.tokens.json 1`] = `\nObject {\n  \"filename\": \"attrs.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/contact'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 20,\n            \"filename\": \"attrs.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"contact\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 1,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/save'\",\n        },\n        Object {\n          \"column\": 16,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'button'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"column\": 24,\n            \"filename\": \"attrs.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"save\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 2,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 8,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 13,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"baz\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 3,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"'foo, bar, baz'\",\n        },\n        Object {\n          \"column\": 24,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": \"1\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 4,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"'((foo))'\",\n        },\n        Object {\n          \"column\": 18,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": \"(1) ? 1 : 0\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 5,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 7,\n                \"mustEscape\": true,\n                \"name\": \"value\",\n                \"val\": \"'foo'\",\n              },\n              Object {\n                \"column\": 23,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 7,\n                \"mustEscape\": true,\n                \"name\": \"selected\",\n                \"val\": true,\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"attrs.tokens.json\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 33,\n                  \"filename\": \"attrs.tokens.json\",\n                  \"line\": 7,\n                  \"type\": \"Text\",\n                  \"val\": \"Foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"option\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 8,\n                \"mustEscape\": true,\n                \"name\": \"selected\",\n                \"val\": true,\n              },\n              Object {\n                \"column\": 20,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 8,\n                \"mustEscape\": true,\n                \"name\": \"value\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"attrs.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 33,\n                  \"filename\": \"attrs.tokens.json\",\n                  \"line\": 8,\n                  \"type\": \"Text\",\n                  \"val\": \"Bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 8,\n            \"name\": \"option\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"select\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 9,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"\\\\\"class:\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 9,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 9,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 10,\n          \"mustEscape\": true,\n          \"name\": \"pattern\",\n          \"val\": \"'\\\\\\\\\\\\\\\\S+'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 10,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 10,\n      \"name\": \"input\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 12,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/contact'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 12,\n        \"nodes\": Array [\n          Object {\n            \"column\": 20,\n            \"filename\": \"attrs.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"contact\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 12,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 13,\n          \"mustEscape\": true,\n          \"name\": \"href\",\n          \"val\": \"'/save'\",\n        },\n        Object {\n          \"column\": 16,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 13,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'button'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 13,\n        \"nodes\": Array [\n          Object {\n            \"column\": 24,\n            \"filename\": \"attrs.tokens.json\",\n            \"line\": 13,\n            \"type\": \"Text\",\n            \"val\": \"save\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 13,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 14,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 7,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 14,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 11,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 14,\n          \"mustEscape\": true,\n          \"name\": \"baz\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 14,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 14,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 15,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"'foo, bar, baz'\",\n        },\n        Object {\n          \"column\": 23,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 15,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": \"1\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 15,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 15,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 16,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"'((foo))'\",\n        },\n        Object {\n          \"column\": 17,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 16,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": \"(1) ? 1 : 0\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 16,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 16,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 17,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 18,\n                \"mustEscape\": true,\n                \"name\": \"value\",\n                \"val\": \"'foo'\",\n              },\n              Object {\n                \"column\": 22,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 18,\n                \"mustEscape\": true,\n                \"name\": \"selected\",\n                \"val\": true,\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"attrs.tokens.json\",\n              \"line\": 18,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 32,\n                  \"filename\": \"attrs.tokens.json\",\n                  \"line\": 18,\n                  \"type\": \"Text\",\n                  \"val\": \"Foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 18,\n            \"name\": \"option\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 19,\n                \"mustEscape\": true,\n                \"name\": \"selected\",\n                \"val\": true,\n              },\n              Object {\n                \"column\": 19,\n                \"filename\": \"attrs.tokens.json\",\n                \"line\": 19,\n                \"mustEscape\": true,\n                \"name\": \"value\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"attrs.tokens.json\",\n              \"line\": 19,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 32,\n                  \"filename\": \"attrs.tokens.json\",\n                  \"line\": 19,\n                  \"type\": \"Text\",\n                  \"val\": \"Bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 19,\n            \"name\": \"option\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 17,\n      \"name\": \"select\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 20,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"\\\\\"class:\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 20,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 20,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 21,\n          \"mustEscape\": true,\n          \"name\": \"pattern\",\n          \"val\": \"'\\\\\\\\\\\\\\\\S+'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 21,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 21,\n      \"name\": \"input\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 22,\n          \"mustEscape\": true,\n          \"name\": \"terse\",\n          \"val\": \"\\\\\"true\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 22,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 22,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 23,\n          \"mustEscape\": true,\n          \"name\": \"date\",\n          \"val\": \"new Date(0)\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 23,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 23,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 25,\n          \"mustEscape\": true,\n          \"name\": \"abc\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 26,\n          \"mustEscape\": true,\n          \"name\": \"def\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 25,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 25,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 27,\n          \"mustEscape\": true,\n          \"name\": \"abc\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 28,\n          \"mustEscape\": true,\n          \"name\": \"def\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 27,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 27,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 29,\n          \"mustEscape\": true,\n          \"name\": \"abc\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 30,\n          \"mustEscape\": true,\n          \"name\": \"def\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 29,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 29,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 31,\n          \"mustEscape\": true,\n          \"name\": \"abc\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 4,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 32,\n          \"mustEscape\": true,\n          \"name\": \"def\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 31,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 31,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 33,\n          \"mustEscape\": true,\n          \"name\": \"abc\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 34,\n          \"mustEscape\": true,\n          \"name\": \"def\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 33,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 33,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 35,\n          \"mustEscape\": true,\n          \"name\": \"abc\",\n          \"val\": true,\n        },\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 36,\n          \"mustEscape\": true,\n          \"name\": \"def\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 35,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 35,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 38,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var attrs = {foo: 'bar', bar: '<baz>'}\",\n    },\n    Object {\n      \"attributeBlocks\": Array [\n        Object {\n          \"column\": 4,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 40,\n          \"type\": \"AttributeBlock\",\n          \"val\": \"attrs\",\n        },\n      ],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 40,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 40,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 42,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"'foo'\",\n        },\n        Object {\n          \"column\": 13,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 42,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": \"\\\\\"bar\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 42,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 42,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 43,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"'foo'\",\n        },\n        Object {\n          \"column\": 13,\n          \"filename\": \"attrs.tokens.json\",\n          \"line\": 43,\n          \"mustEscape\": true,\n          \"name\": \"bar\",\n          \"val\": \"'bar'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.tokens.json\",\n        \"line\": 43,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.tokens.json\",\n      \"isInline\": true,\n      \"line\": 43,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`attrs.unescaped.tokens.json 1`] = `\nObject {\n  \"filename\": \"attrs.unescaped.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 8,\n          \"filename\": \"attrs.unescaped.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/x-template'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs.unescaped.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"attrs.unescaped.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'user-<%= user.id %>'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"attrs.unescaped.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"attrs.unescaped.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"attrs.unescaped.tokens.json\",\n                        \"line\": 3,\n                        \"type\": \"Text\",\n                        \"val\": \"<%= user.title %>\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"attrs.unescaped.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"h1\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"attrs.unescaped.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs.unescaped.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`attrs-data.tokens.json 1`] = `\nObject {\n  \"filename\": \"attrs-data.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"attrs-data.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var user = { name: 'tobi' }\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs-data.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"data-user\",\n          \"val\": \"user\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs-data.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs-data.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs-data.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"data-items\",\n          \"val\": \"[1,2,3]\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs-data.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs-data.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs-data.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": true,\n          \"name\": \"data-username\",\n          \"val\": \"'tobi'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs-data.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs-data.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs-data.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": true,\n          \"name\": \"data-escaped\",\n          \"val\": \"{message: \\\\\"Let's rock!\\\\\"}\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs-data.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs-data.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs-data.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": true,\n          \"name\": \"data-ampersand\",\n          \"val\": \"{message: \\\\\"a quote: &quot; this & that\\\\\"}\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs-data.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs-data.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"attrs-data.tokens.json\",\n          \"line\": 7,\n          \"mustEscape\": true,\n          \"name\": \"data-epoc\",\n          \"val\": \"new Date(0)\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"attrs-data.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"attrs-data.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`basic.tokens.json 1`] = `\nObject {\n  \"filename\": \"basic.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"basic.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"basic.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"basic.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"basic.tokens.json\",\n                        \"line\": 3,\n                        \"type\": \"Text\",\n                        \"val\": \"Title\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"basic.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"h1\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"basic.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"basic.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`blanks.tokens.json 1`] = `\nObject {\n  \"filename\": \"blanks.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"blanks.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"blanks.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"blanks.tokens.json\",\n                  \"line\": 4,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"blanks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"blanks.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"blanks.tokens.json\",\n                  \"line\": 6,\n                  \"type\": \"Text\",\n                  \"val\": \"bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"blanks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"blanks.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"blanks.tokens.json\",\n                  \"line\": 8,\n                  \"type\": \"Text\",\n                  \"val\": \"baz\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"blanks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 8,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"blanks.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`block-code.tokens.json 1`] = `\nObject {\n  \"filename\": \"block-code.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"block-code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"list = [\\\\\"uno\\\\\", \\\\\"dos\\\\\", \\\\\"tres\\\\\",\n        \\\\\"cuatro\\\\\", \\\\\"cinco\\\\\", \\\\\"seis\\\\\"];\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"block-code.tokens.json\",\n      \"line\": 4,\n      \"type\": \"Comment\",\n      \"val\": \" Without a block, the element is accepted and no code is generated\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"block-code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"block-code.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": false,\n            \"column\": 3,\n            \"filename\": \"block-code.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"mustEscape\": false,\n            \"type\": \"Code\",\n            \"val\": \"string = item.charAt(0)\n\n  .toUpperCase() +\nitem.slice(1);\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"block-code.tokens.json\",\n              \"line\": 12,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 5,\n                  \"filename\": \"block-code.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 12,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"string\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"block-code.tokens.json\",\n            \"isInline\": false,\n            \"line\": 12,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"block-code.tokens.json\",\n      \"key\": null,\n      \"line\": 6,\n      \"obj\": \"list\",\n      \"type\": \"Each\",\n      \"val\": \"item\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`block-expansion.shorthands.tokens.json 1`] = `\nObject {\n  \"filename\": \"block-expansion.shorthands.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"block-expansion.shorthands.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"block-expansion.shorthands.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'list-item'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"block-expansion.shorthands.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 17,\n                      \"filename\": \"block-expansion.shorthands.tokens.json\",\n                      \"line\": 2,\n                      \"mustEscape\": false,\n                      \"name\": \"class\",\n                      \"val\": \"'foo'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"block-expansion.shorthands.tokens.json\",\n                    \"line\": 2,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 23,\n                            \"filename\": \"block-expansion.shorthands.tokens.json\",\n                            \"line\": 2,\n                            \"mustEscape\": false,\n                            \"name\": \"id\",\n                            \"val\": \"'bar'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"block-expansion.shorthands.tokens.json\",\n                          \"line\": 2,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 28,\n                              \"filename\": \"block-expansion.shorthands.tokens.json\",\n                              \"line\": 2,\n                              \"type\": \"Text\",\n                              \"val\": \"baz\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 23,\n                        \"filename\": \"block-expansion.shorthands.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 2,\n                        \"name\": \"div\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 17,\n                  \"filename\": \"block-expansion.shorthands.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 2,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"block-expansion.shorthands.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"block-expansion.shorthands.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`block-expansion.tokens.json 1`] = `\nObject {\n  \"filename\": \"block-expansion.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"block-expansion.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"block-expansion.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 9,\n                      \"filename\": \"block-expansion.tokens.json\",\n                      \"line\": 2,\n                      \"mustEscape\": true,\n                      \"name\": \"href\",\n                      \"val\": \"'#'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"block-expansion.tokens.json\",\n                    \"line\": 2,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 19,\n                        \"filename\": \"block-expansion.tokens.json\",\n                        \"line\": 2,\n                        \"type\": \"Text\",\n                        \"val\": \"foo\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 7,\n                  \"filename\": \"block-expansion.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 2,\n                  \"name\": \"a\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"block-expansion.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"block-expansion.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 9,\n                      \"filename\": \"block-expansion.tokens.json\",\n                      \"line\": 3,\n                      \"mustEscape\": true,\n                      \"name\": \"href\",\n                      \"val\": \"'#'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"block-expansion.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 19,\n                        \"filename\": \"block-expansion.tokens.json\",\n                        \"line\": 3,\n                        \"type\": \"Text\",\n                        \"val\": \"bar\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 7,\n                  \"filename\": \"block-expansion.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 3,\n                  \"name\": \"a\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"block-expansion.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"block-expansion.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"block-expansion.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"block-expansion.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"baz\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"block-expansion.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`blockquote.tokens.json 1`] = `\nObject {\n  \"filename\": \"blockquote.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"blockquote.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"blockquote.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 7,\n                  \"filename\": \"blockquote.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"Try to define yourself by what you do, and you&#8217;ll burnout every time. You are. That is enough. I rest in that.\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"blockquote.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"blockquote\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"blockquote.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 14,\n                  \"filename\": \"blockquote.tokens.json\",\n                  \"line\": 4,\n                  \"type\": \"Text\",\n                  \"val\": \"from @thefray at 1:43pm on May 10\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"blockquote.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"figcaption\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"blockquote.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"figure\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`blocks-in-blocks.tokens.json 1`] = `\nObject {\n  \"filename\": \"blocks-in-blocks.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"blocks-in-blocks.tokens.json\",\n        \"line\": 1,\n        \"path\": \"./auxiliary/blocks-in-blocks-layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"blocks-in-blocks.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"blocks-in-blocks.tokens.json\",\n      \"line\": 3,\n      \"mode\": \"replace\",\n      \"name\": \"body\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"blocks-in-blocks.tokens.json\",\n            \"line\": 4,\n            \"nodes\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"blocks-in-blocks.tokens.json\",\n                \"line\": 4,\n                \"type\": \"Text\",\n                \"val\": \"Page 2\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"blocks-in-blocks.tokens.json\",\n          \"isInline\": false,\n          \"line\": 4,\n          \"name\": \"h1\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`blocks-in-if.tokens.json 1`] = `\nObject {\n  \"filename\": \"blocks-in-if.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"blocks-in-if.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Comment\",\n      \"val\": \" see https://github.com/pugjs/pug/issues/1589\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"blocks-in-if.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var ajax = true\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"blocks-in-if.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": false,\n            \"column\": 5,\n            \"filename\": \"blocks-in-if.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Comment\",\n            \"val\": \" return only contents if ajax requests\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"blocks-in-if.tokens.json\",\n            \"line\": 7,\n            \"mode\": \"replace\",\n            \"name\": \"contents\",\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"blocks-in-if.tokens.json\",\n                  \"line\": 8,\n                  \"nodes\": Array [\n                    Object {\n                      \"column\": 11,\n                      \"filename\": \"blocks-in-if.tokens.json\",\n                      \"line\": 8,\n                      \"type\": \"Text\",\n                      \"val\": \"ajax contents\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"column\": 9,\n                \"filename\": \"blocks-in-if.tokens.json\",\n                \"isInline\": false,\n                \"line\": 8,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"NamedBlock\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"blocks-in-if.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"if( ajax )\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"blocks-in-if.tokens.json\",\n        \"line\": 11,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": false,\n            \"column\": 5,\n            \"filename\": \"blocks-in-if.tokens.json\",\n            \"line\": 11,\n            \"type\": \"Comment\",\n            \"val\": \" return all html\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"blocks-in-if.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Doctype\",\n            \"val\": \"html\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"blocks-in-if.tokens.json\",\n              \"line\": 13,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"blocks-in-if.tokens.json\",\n                    \"line\": 14,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 19,\n                            \"filename\": \"blocks-in-if.tokens.json\",\n                            \"line\": 15,\n                            \"mustEscape\": true,\n                            \"name\": \"charset\",\n                            \"val\": \"'utf8'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"blocks-in-if.tokens.json\",\n                          \"line\": 15,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 13,\n                        \"filename\": \"blocks-in-if.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 15,\n                        \"name\": \"meta\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"blocks-in-if.tokens.json\",\n                          \"line\": 16,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 19,\n                              \"filename\": \"blocks-in-if.tokens.json\",\n                              \"line\": 16,\n                              \"type\": \"Text\",\n                              \"val\": \"sample\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 13,\n                        \"filename\": \"blocks-in-if.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 16,\n                        \"name\": \"title\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"blocks-in-if.tokens.json\",\n                          \"line\": 17,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 17,\n                              \"filename\": \"blocks-in-if.tokens.json\",\n                              \"line\": 18,\n                              \"mode\": \"replace\",\n                              \"name\": \"contents\",\n                              \"nodes\": Array [\n                                Object {\n                                  \"attributeBlocks\": Array [],\n                                  \"attrs\": Array [],\n                                  \"block\": Object {\n                                    \"filename\": \"blocks-in-if.tokens.json\",\n                                    \"line\": 19,\n                                    \"nodes\": Array [\n                                      Object {\n                                        \"column\": 23,\n                                        \"filename\": \"blocks-in-if.tokens.json\",\n                                        \"line\": 19,\n                                        \"type\": \"Text\",\n                                        \"val\": \"all contetns\",\n                                      },\n                                    ],\n                                    \"type\": \"Block\",\n                                  },\n                                  \"column\": 21,\n                                  \"filename\": \"blocks-in-if.tokens.json\",\n                                  \"isInline\": false,\n                                  \"line\": 19,\n                                  \"name\": \"p\",\n                                  \"selfClosing\": false,\n                                  \"type\": \"Tag\",\n                                },\n                              ],\n                              \"type\": \"NamedBlock\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 13,\n                        \"filename\": \"blocks-in-if.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 17,\n                        \"name\": \"body\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"blocks-in-if.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 14,\n                  \"name\": \"head\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 5,\n            \"filename\": \"blocks-in-if.tokens.json\",\n            \"isInline\": false,\n            \"line\": 13,\n            \"name\": \"html\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"debug\": false,\n      \"filename\": \"blocks-in-if.tokens.json\",\n      \"isInline\": false,\n      \"line\": 10,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"else\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`case.tokens.json 1`] = `\nObject {\n  \"filename\": \"case.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"case.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"case.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"case.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"var friends = 1\",\n                },\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"case.tokens.json\",\n                    \"line\": 5,\n                    \"nodes\": Array [\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case.tokens.json\",\n                          \"line\": 5,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case.tokens.json\",\n                                \"line\": 5,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 17,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 5,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have no friends\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 15,\n                              \"filename\": \"case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 5,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"0\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case.tokens.json\",\n                          \"line\": 6,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case.tokens.json\",\n                                \"line\": 6,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 17,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 6,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have a friend\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 15,\n                              \"filename\": \"case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 6,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"1\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 6,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case.tokens.json\",\n                          \"line\": 7,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case.tokens.json\",\n                                \"line\": 7,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 18,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 7,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have \",\n                                  },\n                                  Object {\n                                    \"buffer\": true,\n                                    \"column\": 27,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"isInline\": true,\n                                    \"line\": 7,\n                                    \"mustEscape\": true,\n                                    \"type\": \"Code\",\n                                    \"val\": \"friends\",\n                                  },\n                                  Object {\n                                    \"column\": 37,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 7,\n                                    \"type\": \"Text\",\n                                    \"val\": \" friends\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 16,\n                              \"filename\": \"case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 7,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"default\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 7,\n                        \"type\": \"When\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"expr\": \"friends\",\n                  \"filename\": \"case.tokens.json\",\n                  \"line\": 4,\n                  \"type\": \"Case\",\n                },\n                Object {\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"case.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 8,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"var friends = 0\",\n                },\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"case.tokens.json\",\n                    \"line\": 10,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"0\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 10,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case.tokens.json\",\n                          \"line\": 12,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case.tokens.json\",\n                                \"line\": 12,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 11,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 12,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have very few friends\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 12,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"1\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 11,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case.tokens.json\",\n                          \"line\": 14,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case.tokens.json\",\n                                \"line\": 14,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 11,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 14,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have \",\n                                  },\n                                  Object {\n                                    \"buffer\": true,\n                                    \"column\": 20,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"isInline\": true,\n                                    \"line\": 14,\n                                    \"mustEscape\": true,\n                                    \"type\": \"Code\",\n                                    \"val\": \"friends\",\n                                  },\n                                  Object {\n                                    \"column\": 30,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 14,\n                                    \"type\": \"Text\",\n                                    \"val\": \" friends\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 14,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"default\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 13,\n                        \"type\": \"When\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"expr\": \"friends\",\n                  \"filename\": \"case.tokens.json\",\n                  \"line\": 9,\n                  \"type\": \"Case\",\n                },\n                Object {\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"case.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 16,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"var friend = 'Tim:G'\",\n                },\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"case.tokens.json\",\n                    \"line\": 18,\n                    \"nodes\": Array [\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case.tokens.json\",\n                          \"line\": 18,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case.tokens.json\",\n                                \"line\": 18,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 26,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 18,\n                                    \"type\": \"Text\",\n                                    \"val\": \"Friend is a string\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 24,\n                              \"filename\": \"case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 18,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"'Tim:G'\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 18,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case.tokens.json\",\n                          \"line\": 19,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case.tokens.json\",\n                                \"line\": 19,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 26,\n                                    \"filename\": \"case.tokens.json\",\n                                    \"line\": 19,\n                                    \"type\": \"Text\",\n                                    \"val\": \"Friend is an object\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 24,\n                              \"filename\": \"case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 19,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"{tim: 'g'}\",\n                        \"filename\": \"case.tokens.json\",\n                        \"line\": 19,\n                        \"type\": \"When\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"expr\": \"friend\",\n                  \"filename\": \"case.tokens.json\",\n                  \"line\": 17,\n                  \"type\": \"Case\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"case.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"case.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`case-blocks.tokens.json 1`] = `\nObject {\n  \"filename\": \"case-blocks.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"case-blocks.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"case-blocks.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"case-blocks.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"var friends = 1\",\n                },\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"case-blocks.tokens.json\",\n                    \"line\": 5,\n                    \"nodes\": Array [\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case-blocks.tokens.json\",\n                          \"line\": 6,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case-blocks.tokens.json\",\n                                \"line\": 6,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 11,\n                                    \"filename\": \"case-blocks.tokens.json\",\n                                    \"line\": 6,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have no friends\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"case-blocks.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 6,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"0\",\n                        \"filename\": \"case-blocks.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case-blocks.tokens.json\",\n                          \"line\": 8,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case-blocks.tokens.json\",\n                                \"line\": 8,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 11,\n                                    \"filename\": \"case-blocks.tokens.json\",\n                                    \"line\": 8,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have a friend\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"case-blocks.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 8,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"1\",\n                        \"filename\": \"case-blocks.tokens.json\",\n                        \"line\": 7,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"case-blocks.tokens.json\",\n                          \"line\": 10,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"case-blocks.tokens.json\",\n                                \"line\": 10,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 11,\n                                    \"filename\": \"case-blocks.tokens.json\",\n                                    \"line\": 10,\n                                    \"type\": \"Text\",\n                                    \"val\": \"you have \",\n                                  },\n                                  Object {\n                                    \"buffer\": true,\n                                    \"column\": 20,\n                                    \"filename\": \"case-blocks.tokens.json\",\n                                    \"isInline\": true,\n                                    \"line\": 10,\n                                    \"mustEscape\": true,\n                                    \"type\": \"Code\",\n                                    \"val\": \"friends\",\n                                  },\n                                  Object {\n                                    \"column\": 30,\n                                    \"filename\": \"case-blocks.tokens.json\",\n                                    \"line\": 10,\n                                    \"type\": \"Text\",\n                                    \"val\": \" friends\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"case-blocks.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 10,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"debug\": false,\n                        \"expr\": \"default\",\n                        \"filename\": \"case-blocks.tokens.json\",\n                        \"line\": 9,\n                        \"type\": \"When\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"expr\": \"friends\",\n                  \"filename\": \"case-blocks.tokens.json\",\n                  \"line\": 4,\n                  \"type\": \"Case\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"case-blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"case-blocks.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`classes.tokens.json 1`] = `\nObject {\n  \"filename\": \"classes.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"['foo', 'bar', 'baz']\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes.tokens.json\",\n      \"isInline\": true,\n      \"line\": 1,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 2,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'foo'\",\n        },\n        Object {\n          \"column\": 7,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"'bar'\",\n        },\n        Object {\n          \"column\": 19,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'baz'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes.tokens.json\",\n      \"isInline\": true,\n      \"line\": 5,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 2,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 9,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'foo-bar_baz'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes.tokens.json\",\n        \"line\": 9,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes.tokens.json\",\n      \"isInline\": true,\n      \"line\": 9,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 11,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"{foo: true, bar: false, baz: true}\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes.tokens.json\",\n        \"line\": 11,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes.tokens.json\",\n      \"isInline\": true,\n      \"line\": 11,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 2,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 13,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'-foo'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes.tokens.json\",\n        \"line\": 13,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes.tokens.json\",\n      \"isInline\": true,\n      \"line\": 13,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 2,\n          \"filename\": \"classes.tokens.json\",\n          \"line\": 14,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'3foo'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes.tokens.json\",\n        \"line\": 14,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes.tokens.json\",\n      \"isInline\": true,\n      \"line\": 14,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`classes-empty.tokens.json 1`] = `\nObject {\n  \"filename\": \"classes-empty.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"classes-empty.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"''\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes-empty.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes-empty.tokens.json\",\n      \"isInline\": true,\n      \"line\": 1,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"classes-empty.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"null\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes-empty.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes-empty.tokens.json\",\n      \"isInline\": true,\n      \"line\": 2,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"classes-empty.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"undefined\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"classes-empty.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"classes-empty.tokens.json\",\n      \"isInline\": true,\n      \"line\": 3,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`code.conditionals.tokens.json 1`] = `\nObject {\n  \"filename\": \"code.conditionals.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"if (true)\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"Text\",\n                  \"val\": \"bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"debug\": false,\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"else\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 8,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 8,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 8,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"if (true) {\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 10,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 10,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 10,\n                  \"type\": \"Text\",\n                  \"val\": \"bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 10,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"isInline\": false,\n      \"line\": 9,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"} else {\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"isInline\": false,\n      \"line\": 11,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"}\",\n    },\n    Object {\n      \"alternate\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 18,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 18,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 18,\n                  \"type\": \"Text\",\n                  \"val\": \"bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 18,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"consequent\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 14,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 14,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 14,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 14,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 15,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 15,\n                  \"type\": \"Text\",\n                  \"val\": \"bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 15,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 16,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 16,\n                  \"type\": \"Text\",\n                  \"val\": \"baz\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 16,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"line\": 13,\n      \"test\": \"true\",\n      \"type\": \"Conditional\",\n    },\n    Object {\n      \"alternate\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 23,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 23,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 23,\n                  \"type\": \"Text\",\n                  \"val\": \"bar\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 23,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"consequent\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 21,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 21,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 21,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 21,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"line\": 20,\n      \"test\": \"!(true)\",\n      \"type\": \"Conditional\",\n    },\n    Object {\n      \"alternate\": null,\n      \"column\": 1,\n      \"consequent\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 26,\n        \"nodes\": Array [\n          Object {\n            \"alternate\": null,\n            \"column\": 3,\n            \"consequent\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 27,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"code.conditionals.tokens.json\",\n                    \"line\": 27,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"code.conditionals.tokens.json\",\n                        \"line\": 27,\n                        \"type\": \"Text\",\n                        \"val\": \"yay\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 27,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"line\": 26,\n            \"test\": \"'works'\",\n            \"type\": \"Conditional\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"line\": 25,\n      \"test\": \"'nested'\",\n      \"type\": \"Conditional\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"line\": 29,\n      \"type\": \"Comment\",\n      \"val\": \" allow empty blocks\",\n    },\n    Object {\n      \"alternate\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 32,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"code.conditionals.tokens.json\",\n                \"line\": 32,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 32,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 32,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"consequent\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 30,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"line\": 30,\n      \"test\": \"false\",\n      \"type\": \"Conditional\",\n    },\n    Object {\n      \"alternate\": null,\n      \"column\": 1,\n      \"consequent\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 34,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"code.conditionals.tokens.json\",\n                \"line\": 34,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 34,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 34,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"line\": 33,\n      \"test\": \"true\",\n      \"type\": \"Conditional\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 1,\n          \"filename\": \"code.conditionals.tokens.json\",\n          \"line\": 36,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'bing'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 36,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"isInline\": false,\n      \"line\": 36,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"alternate\": Object {\n        \"alternate\": Object {\n          \"filename\": \"code.conditionals.tokens.json\",\n          \"line\": 43,\n          \"nodes\": Array [\n            Object {\n              \"attributeBlocks\": Array [],\n              \"attrs\": Array [\n                Object {\n                  \"column\": 3,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 43,\n                  \"mustEscape\": false,\n                  \"name\": \"class\",\n                  \"val\": \"'foo'\",\n                },\n              ],\n              \"block\": Object {\n                \"filename\": \"code.conditionals.tokens.json\",\n                \"line\": 43,\n                \"nodes\": Array [],\n                \"type\": \"Block\",\n              },\n              \"column\": 3,\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"isInline\": false,\n              \"line\": 43,\n              \"name\": \"div\",\n              \"selfClosing\": false,\n              \"type\": \"Tag\",\n            },\n          ],\n          \"type\": \"Block\",\n        },\n        \"column\": 1,\n        \"consequent\": Object {\n          \"filename\": \"code.conditionals.tokens.json\",\n          \"line\": 41,\n          \"nodes\": Array [\n            Object {\n              \"attributeBlocks\": Array [],\n              \"attrs\": Array [\n                Object {\n                  \"column\": 3,\n                  \"filename\": \"code.conditionals.tokens.json\",\n                  \"line\": 41,\n                  \"mustEscape\": false,\n                  \"name\": \"class\",\n                  \"val\": \"'bar'\",\n                },\n              ],\n              \"block\": Object {\n                \"filename\": \"code.conditionals.tokens.json\",\n                \"line\": 41,\n                \"nodes\": Array [],\n                \"type\": \"Block\",\n              },\n              \"column\": 3,\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"isInline\": false,\n              \"line\": 41,\n              \"name\": \"div\",\n              \"selfClosing\": false,\n              \"type\": \"Tag\",\n            },\n          ],\n          \"type\": \"Block\",\n        },\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 40,\n        \"test\": \"false\",\n        \"type\": \"Conditional\",\n      },\n      \"column\": 1,\n      \"consequent\": Object {\n        \"filename\": \"code.conditionals.tokens.json\",\n        \"line\": 39,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"code.conditionals.tokens.json\",\n                \"line\": 39,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'bing'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"code.conditionals.tokens.json\",\n              \"line\": 39,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.conditionals.tokens.json\",\n            \"isInline\": false,\n            \"line\": 39,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"code.conditionals.tokens.json\",\n      \"line\": 38,\n      \"test\": \"false\",\n      \"type\": \"Conditional\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`code.escape.tokens.json 1`] = `\nObject {\n  \"filename\": \"code.escape.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.escape.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 2,\n            \"filename\": \"code.escape.tokens.json\",\n            \"isInline\": true,\n            \"line\": 1,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"'<script>'\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.escape.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.escape.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 2,\n            \"filename\": \"code.escape.tokens.json\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"mustEscape\": false,\n            \"type\": \"Code\",\n            \"val\": \"'<script>'\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.escape.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`code.iteration.tokens.json 1`] = `\nObject {\n  \"filename\": \"code.iteration.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var items = [1,2,3]\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.iteration.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"code.iteration.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"code.iteration.tokens.json\",\n                    \"line\": 6,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"code.iteration.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 6,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"item\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"code.iteration.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"buffer\": false,\n            \"column\": 3,\n            \"filename\": \"code.iteration.tokens.json\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"mustEscape\": false,\n            \"type\": \"Code\",\n            \"val\": \"items.forEach(function(item){\",\n          },\n          Object {\n            \"buffer\": false,\n            \"column\": 3,\n            \"filename\": \"code.iteration.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"mustEscape\": false,\n            \"type\": \"Code\",\n            \"val\": \"})\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 9,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var items = [1,2,3]\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.iteration.tokens.json\",\n        \"line\": 11,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"code.iteration.tokens.json\",\n              \"line\": 13,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 8,\n                      \"filename\": \"code.iteration.tokens.json\",\n                      \"line\": 13,\n                      \"mustEscape\": true,\n                      \"name\": \"class\",\n                      \"val\": \"'item-' + i\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"code.iteration.tokens.json\",\n                    \"line\": 13,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 26,\n                        \"filename\": \"code.iteration.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 13,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"item\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"code.iteration.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 13,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.iteration.tokens.json\",\n            \"key\": \"i\",\n            \"line\": 12,\n            \"obj\": \"items\",\n            \"type\": \"Each\",\n            \"val\": \"item\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 11,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.iteration.tokens.json\",\n        \"line\": 15,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"code.iteration.tokens.json\",\n              \"line\": 17,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"code.iteration.tokens.json\",\n                    \"line\": 17,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"code.iteration.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 17,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"item\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"code.iteration.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 17,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.iteration.tokens.json\",\n            \"key\": \"i\",\n            \"line\": 16,\n            \"obj\": \"items\",\n            \"type\": \"Each\",\n            \"val\": \"item\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 15,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.iteration.tokens.json\",\n        \"line\": 19,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"code.iteration.tokens.json\",\n              \"line\": 21,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"code.iteration.tokens.json\",\n                    \"line\": 21,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"code.iteration.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 21,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"$item\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"code.iteration.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 21,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.iteration.tokens.json\",\n            \"key\": null,\n            \"line\": 20,\n            \"obj\": \"items\",\n            \"type\": \"Each\",\n            \"val\": \"$item\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 19,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 23,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var nums = [1, 2, 3]\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 24,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var letters = ['a', 'b', 'c']\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.iteration.tokens.json\",\n        \"line\": 26,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"code.iteration.tokens.json\",\n              \"line\": 28,\n              \"nodes\": Array [\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"code.iteration.tokens.json\",\n                    \"line\": 29,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"code.iteration.tokens.json\",\n                          \"line\": 29,\n                          \"nodes\": Array [\n                            Object {\n                              \"buffer\": true,\n                              \"column\": 10,\n                              \"filename\": \"code.iteration.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 29,\n                              \"mustEscape\": true,\n                              \"type\": \"Code\",\n                              \"val\": \"n\",\n                            },\n                            Object {\n                              \"column\": 14,\n                              \"filename\": \"code.iteration.tokens.json\",\n                              \"line\": 29,\n                              \"type\": \"Text\",\n                              \"val\": \": \",\n                            },\n                            Object {\n                              \"buffer\": true,\n                              \"column\": 16,\n                              \"filename\": \"code.iteration.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 29,\n                              \"mustEscape\": true,\n                              \"type\": \"Code\",\n                              \"val\": \"l\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"code.iteration.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 29,\n                        \"name\": \"li\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"code.iteration.tokens.json\",\n                  \"key\": null,\n                  \"line\": 28,\n                  \"obj\": \"nums\",\n                  \"type\": \"Each\",\n                  \"val\": \"n\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.iteration.tokens.json\",\n            \"key\": null,\n            \"line\": 27,\n            \"obj\": \"letters\",\n            \"type\": \"Each\",\n            \"val\": \"l\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 26,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 31,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var count = 1\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 32,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var counter = function() { return [count++, count++, count++] }\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.iteration.tokens.json\",\n        \"line\": 33,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"code.iteration.tokens.json\",\n              \"line\": 35,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"code.iteration.tokens.json\",\n                    \"line\": 35,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 8,\n                        \"filename\": \"code.iteration.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 35,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"n\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"code.iteration.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 35,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"code.iteration.tokens.json\",\n            \"key\": null,\n            \"line\": 34,\n            \"obj\": \"counter()\",\n            \"type\": \"Each\",\n            \"val\": \"n\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.iteration.tokens.json\",\n      \"isInline\": false,\n      \"line\": 33,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`code.tokens.json 1`] = `\nObject {\n  \"filename\": \"code.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 2,\n            \"filename\": \"code.tokens.json\",\n            \"isInline\": true,\n            \"line\": 1,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"null\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 2,\n            \"filename\": \"code.tokens.json\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"undefined\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 2,\n            \"filename\": \"code.tokens.json\",\n            \"isInline\": true,\n            \"line\": 3,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"''\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 2,\n            \"filename\": \"code.tokens.json\",\n            \"isInline\": true,\n            \"line\": 4,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"0\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 2,\n            \"filename\": \"code.tokens.json\",\n            \"isInline\": true,\n            \"line\": 5,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"false\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"code.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"null\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"code.tokens.json\",\n          \"line\": 7,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"undefined\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"code.tokens.json\",\n          \"line\": 8,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"''\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 8,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 8,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"code.tokens.json\",\n          \"line\": 9,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"0\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 9,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 9,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"code.tokens.json\",\n          \"line\": 10,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"false\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"code.tokens.json\",\n        \"line\": 10,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"code.tokens.json\",\n      \"isInline\": false,\n      \"line\": 10,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`comments.source.tokens.json 1`] = `\nObject {\n  \"filename\": \"comments.source.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"comments.source.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"s/s.\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"comments.source.tokens.json\",\n      \"line\": 1,\n      \"type\": \"BlockComment\",\n      \"val\": \"\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"comments.source.tokens.json\",\n      \"line\": 4,\n      \"type\": \"Comment\",\n      \"val\": \" test/cases/comments.source.pug\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"comments.source.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"test/cases/comments.source.pug\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"when\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.source.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"()\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"comments.source.tokens.json\",\n      \"line\": 6,\n      \"type\": \"BlockComment\",\n      \"val\": \"\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`comments.tokens.json 1`] = `\nObject {\n  \"filename\": \"comments.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": true,\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Comment\",\n      \"val\": \" foo\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"comments.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Comment\",\n            \"val\": \" bar\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"comments.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"comments.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"Text\",\n                  \"val\": \"one\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"buffer\": true,\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Comment\",\n            \"val\": \" baz\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"comments.tokens.json\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"comments.tokens.json\",\n                  \"line\": 7,\n                  \"type\": \"Text\",\n                  \"val\": \"two\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"comments.tokens.json\",\n        \"line\": 9,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 10,\n            \"type\": \"Text\",\n            \"val\": \"ul\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 11,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 11,\n            \"type\": \"Text\",\n            \"val\": \"  li foo\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": true,\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"line\": 9,\n      \"type\": \"BlockComment\",\n      \"val\": \"\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"comments.tokens.json\",\n        \"line\": 13,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 14,\n            \"type\": \"Text\",\n            \"val\": \"// inline follow\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 15,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 15,\n            \"type\": \"Text\",\n            \"val\": \"li three\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 16,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 16,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": true,\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"line\": 13,\n      \"type\": \"BlockComment\",\n      \"val\": \" block\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"comments.tokens.json\",\n        \"line\": 17,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 18,\n            \"type\": \"Text\",\n            \"val\": \"// inline followed by tags\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 19,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 19,\n            \"type\": \"Text\",\n            \"val\": \"ul\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 20,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 20,\n            \"type\": \"Text\",\n            \"val\": \"  li four\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 21,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 21,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": true,\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"line\": 17,\n      \"type\": \"BlockComment\",\n      \"val\": \" block\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"comments.tokens.json\",\n        \"line\": 22,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 23,\n            \"type\": \"Text\",\n            \"val\": \"// inline\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 24,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 24,\n            \"type\": \"Text\",\n            \"val\": \"script(src='/lame.js')\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 25,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 25,\n            \"type\": \"Text\",\n            \"val\": \"// end-inline\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 26,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 26,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": true,\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"line\": 22,\n      \"type\": \"BlockComment\",\n      \"val\": \"if IE lt 9\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"comments.tokens.json\",\n        \"line\": 27,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 27,\n            \"type\": \"Text\",\n            \"val\": \"five\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"isInline\": false,\n      \"line\": 27,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 1,\n          \"filename\": \"comments.tokens.json\",\n          \"line\": 29,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'foo'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"comments.tokens.json\",\n        \"line\": 29,\n        \"nodes\": Array [\n          Object {\n            \"column\": 6,\n            \"filename\": \"comments.tokens.json\",\n            \"line\": 29,\n            \"type\": \"Text\",\n            \"val\": \"// not a comment\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"comments.tokens.json\",\n      \"isInline\": false,\n      \"line\": 29,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`comments-in-case.tokens.json 1`] = `\nObject {\n  \"filename\": \"comments-in-case.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"comments-in-case.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"html\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"comments-in-case.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"comments-in-case.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": false,\n                  \"column\": 4,\n                  \"filename\": \"comments-in-case.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"var s = 'this'\",\n                },\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"comments-in-case.tokens.json\",\n                    \"line\": 6,\n                    \"nodes\": Array [\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"comments-in-case.tokens.json\",\n                          \"line\": 8,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"comments-in-case.tokens.json\",\n                                \"line\": 8,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 10,\n                                    \"filename\": \"comments-in-case.tokens.json\",\n                                    \"line\": 8,\n                                    \"type\": \"Text\",\n                                    \"val\": \"It's this!\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 8,\n                              \"filename\": \"comments-in-case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 8,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 6,\n                        \"debug\": false,\n                        \"expr\": \"'this'\",\n                        \"filename\": \"comments-in-case.tokens.json\",\n                        \"line\": 7,\n                        \"type\": \"When\",\n                      },\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"comments-in-case.tokens.json\",\n                          \"line\": 10,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"comments-in-case.tokens.json\",\n                                \"line\": 10,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 10,\n                                    \"filename\": \"comments-in-case.tokens.json\",\n                                    \"line\": 10,\n                                    \"type\": \"Text\",\n                                    \"val\": \"It's that!\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 8,\n                              \"filename\": \"comments-in-case.tokens.json\",\n                              \"isInline\": false,\n                              \"line\": 10,\n                              \"name\": \"p\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 6,\n                        \"debug\": false,\n                        \"expr\": \"'that'\",\n                        \"filename\": \"comments-in-case.tokens.json\",\n                        \"line\": 9,\n                        \"type\": \"When\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 4,\n                  \"expr\": \"s\",\n                  \"filename\": \"comments-in-case.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"Case\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"comments-in-case.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"comments-in-case.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`doctype.custom.tokens.json 1`] = `\nObject {\n  \"filename\": \"doctype.custom.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"doctype.custom.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"custom stuff\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`doctype.default.tokens.json 1`] = `\nObject {\n  \"filename\": \"doctype.default.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"doctype.default.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"doctype.default.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"doctype.default.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"doctype.default.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"doctype.default.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"Title\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"doctype.default.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"h1\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"doctype.default.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"doctype.default.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`doctype.keyword.tokens.json 1`] = `\nObject {\n  \"filename\": \"doctype.keyword.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"doctype.keyword.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"html\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`each.else.tokens.json 1`] = `\nObject {\n  \"filename\": \"each.else.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var users = []\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"each.else.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [\n          Object {\n            \"alternate\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 8,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"line\": 8,\n                        \"type\": \"Text\",\n                        \"val\": \"no users!\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 8,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"block\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 6,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 6,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"user.name\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"each.else.tokens.json\",\n            \"key\": null,\n            \"line\": 5,\n            \"obj\": \"users\",\n            \"type\": \"Each\",\n            \"val\": \"user\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 11,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var users = [{ name: 'tobi', friends: ['loki'] }, { name: 'loki' }]\",\n    },\n    Object {\n      \"alternate\": null,\n      \"column\": 1,\n      \"consequent\": Object {\n        \"filename\": \"each.else.tokens.json\",\n        \"line\": 14,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 14,\n              \"nodes\": Array [\n                Object {\n                  \"alternate\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 18,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"each.else.tokens.json\",\n                          \"line\": 18,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 10,\n                              \"filename\": \"each.else.tokens.json\",\n                              \"line\": 18,\n                              \"type\": \"Text\",\n                              \"val\": \"no users!\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 18,\n                        \"name\": \"li\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 16,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"each.else.tokens.json\",\n                          \"line\": 16,\n                          \"nodes\": Array [\n                            Object {\n                              \"buffer\": true,\n                              \"column\": 9,\n                              \"filename\": \"each.else.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 16,\n                              \"mustEscape\": true,\n                              \"type\": \"Code\",\n                              \"val\": \"user.name\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 16,\n                        \"name\": \"li\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"key\": null,\n                  \"line\": 15,\n                  \"obj\": \"users\",\n                  \"type\": \"Each\",\n                  \"val\": \"user\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"each.else.tokens.json\",\n            \"isInline\": false,\n            \"line\": 14,\n            \"name\": \"ul\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"filename\": \"each.else.tokens.json\",\n      \"line\": 13,\n      \"test\": \"users\",\n      \"type\": \"Conditional\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 20,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var user = { name: 'tobi', age: 10 }\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"each.else.tokens.json\",\n        \"line\": 22,\n        \"nodes\": Array [\n          Object {\n            \"alternate\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 26,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 26,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"line\": 26,\n                        \"type\": \"Text\",\n                        \"val\": \"user has no details!\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 26,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"block\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 24,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 24,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 8,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 24,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"key\",\n                      },\n                      Object {\n                        \"column\": 14,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"line\": 24,\n                        \"type\": \"Text\",\n                        \"val\": \": \",\n                      },\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 16,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 24,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"val\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 24,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"each.else.tokens.json\",\n            \"key\": \"key\",\n            \"line\": 23,\n            \"obj\": \"user\",\n            \"type\": \"Each\",\n            \"val\": \"val\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 22,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 28,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var user = {}\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"each.else.tokens.json\",\n        \"line\": 30,\n        \"nodes\": Array [\n          Object {\n            \"alternate\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 34,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 34,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"line\": 34,\n                        \"type\": \"Text\",\n                        \"val\": \"user has no details!\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 34,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"block\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 32,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 32,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 8,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 32,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"key\",\n                      },\n                      Object {\n                        \"column\": 14,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"line\": 32,\n                        \"type\": \"Text\",\n                        \"val\": \": \",\n                      },\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 16,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 32,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"val\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 32,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"each.else.tokens.json\",\n            \"key\": \"key\",\n            \"line\": 31,\n            \"obj\": \"user\",\n            \"type\": \"Each\",\n            \"val\": \"prop\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 30,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 36,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var user = Object.create(null)\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 37,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"user.name = 'tobi'\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"each.else.tokens.json\",\n        \"line\": 39,\n        \"nodes\": Array [\n          Object {\n            \"alternate\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 43,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 43,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"line\": 43,\n                        \"type\": \"Text\",\n                        \"val\": \"user has no details!\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 43,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"block\": Object {\n              \"filename\": \"each.else.tokens.json\",\n              \"line\": 41,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"each.else.tokens.json\",\n                    \"line\": 41,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 8,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 41,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"key\",\n                      },\n                      Object {\n                        \"column\": 14,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"line\": 41,\n                        \"type\": \"Text\",\n                        \"val\": \": \",\n                      },\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 16,\n                        \"filename\": \"each.else.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 41,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"val\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"each.else.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 41,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"each.else.tokens.json\",\n            \"key\": \"key\",\n            \"line\": 40,\n            \"obj\": \"user\",\n            \"type\": \"Each\",\n            \"val\": \"val\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"each.else.tokens.json\",\n      \"isInline\": false,\n      \"line\": 39,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`escape-chars.tokens.json 1`] = `\nObject {\n  \"filename\": \"escape-chars.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"escape-chars.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"escape-chars.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"var re = /\\\\\\\\d+/;\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escape-chars.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`escape-test.tokens.json 1`] = `\nObject {\n  \"filename\": \"escape-test.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"escape-test.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"html\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"escape-test.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"escape-test.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"escape-test.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 15,\n                        \"filename\": \"escape-test.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"escape-test\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"escape-test.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"title\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 5,\n            \"filename\": \"escape-test.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"escape-test.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"escape-test.tokens.json\",\n                    \"line\": 6,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": false,\n                        \"column\": 13,\n                        \"filename\": \"escape-test.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 7,\n                        \"mustEscape\": false,\n                        \"type\": \"Code\",\n                        \"val\": \"var txt = '<param name=\\\\\"flashvars\\\\\" value=\\\\\"a=&quot;value_a&quot;&b=&quot;value_b&quot;&c=3\\\\\"/>'\",\n                      },\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 15,\n                        \"filename\": \"escape-test.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 8,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"txt\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"escape-test.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"name\": \"textarea\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 5,\n            \"filename\": \"escape-test.tokens.json\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escape-test.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`escaping-class-attribute.tokens.json 1`] = `\nObject {\n  \"filename\": \"escaping-class-attribute.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"escaping-class-attribute.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"attr\",\n          \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"escaping-class-attribute.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escaping-class-attribute.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"escaping-class-attribute.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"escaping-class-attribute.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escaping-class-attribute.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"escaping-class-attribute.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": false,\n          \"name\": \"attr\",\n          \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"escaping-class-attribute.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escaping-class-attribute.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"escaping-class-attribute.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"\\\\\"<%= bar %>\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"escaping-class-attribute.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escaping-class-attribute.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"escaping-class-attribute.tokens.json\",\n          \"line\": 5,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"\\\\\"<%= bar %> lol rofl\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"escaping-class-attribute.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escaping-class-attribute.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"escaping-class-attribute.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"\\\\\"<%= bar %> lol rofl <%= lmao %>\\\\\"\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"escaping-class-attribute.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"escaping-class-attribute.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filter-in-include.tokens.json 1`] = `\nObject {\n  \"filename\": \"filter-in-include.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"filter-in-include.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"filter-in-include.tokens.json\",\n        \"line\": 1,\n        \"path\": \"./auxiliary/filter-in-include.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"filter-in-include.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Include\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.coffeescript.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.coffeescript.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 8,\n          \"filename\": \"filters.coffeescript.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/javascript'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"filters.coffeescript.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.coffeescript.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"filters.coffeescript.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"regexp = /\\\\\\\\n/\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.coffeescript.tokens.json\",\n            \"line\": 2,\n            \"name\": \"coffee-script\",\n            \"type\": \"Filter\",\n          },\n          Object {\n            \"attrs\": Array [\n              Object {\n                \"column\": 18,\n                \"filename\": \"filters.coffeescript.tokens.json\",\n                \"line\": 4,\n                \"mustEscape\": true,\n                \"name\": \"minify\",\n                \"val\": \"true\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"filters.coffeescript.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"filters.coffeescript.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"Text\",\n                  \"val\": \"math =\",\n                },\n                Object {\n                  \"column\": 1,\n                  \"filename\": \"filters.coffeescript.tokens.json\",\n                  \"line\": 6,\n                  \"type\": \"Text\",\n                  \"val\": \"\n\",\n                },\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"filters.coffeescript.tokens.json\",\n                  \"line\": 6,\n                  \"type\": \"Text\",\n                  \"val\": \"  square: (value) -> value * value\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.coffeescript.tokens.json\",\n            \"line\": 4,\n            \"name\": \"coffee-script\",\n            \"type\": \"Filter\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.coffeescript.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.custom.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.custom.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.custom.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.custom.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 13,\n                      \"filename\": \"filters.custom.tokens.json\",\n                      \"line\": 3,\n                      \"mustEscape\": true,\n                      \"name\": \"opt\",\n                      \"val\": \"'val'\",\n                    },\n                    Object {\n                      \"column\": 23,\n                      \"filename\": \"filters.custom.tokens.json\",\n                      \"line\": 3,\n                      \"mustEscape\": true,\n                      \"name\": \"num\",\n                      \"val\": \"2\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"filters.custom.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"filters.custom.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"Line 1\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.custom.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"filters.custom.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"Line 2\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.custom.tokens.json\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.custom.tokens.json\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.custom.tokens.json\",\n                        \"line\": 7,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"filters.custom.tokens.json\",\n                        \"line\": 7,\n                        \"type\": \"Text\",\n                        \"val\": \"Line 4\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters.custom.tokens.json\",\n                  \"line\": 3,\n                  \"name\": \"custom\",\n                  \"type\": \"Filter\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.custom.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.custom.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.include.custom.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.include.custom.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.include.custom.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.include.custom.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"filters.include.custom.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"file\": Object {\n                          \"column\": 39,\n                          \"filename\": \"filters.include.custom.tokens.json\",\n                          \"line\": 4,\n                          \"path\": \"filters.include.custom.pug\",\n                          \"type\": \"FileReference\",\n                        },\n                        \"filename\": \"filters.include.custom.tokens.json\",\n                        \"filters\": Array [\n                          Object {\n                            \"attrs\": Array [\n                              Object {\n                                \"column\": 22,\n                                \"filename\": \"filters.include.custom.tokens.json\",\n                                \"line\": 4,\n                                \"mustEscape\": true,\n                                \"name\": \"opt\",\n                                \"val\": \"'val'\",\n                              },\n                              Object {\n                                \"column\": 32,\n                                \"filename\": \"filters.include.custom.tokens.json\",\n                                \"line\": 4,\n                                \"mustEscape\": true,\n                                \"name\": \"num\",\n                                \"val\": \"2\",\n                              },\n                            ],\n                            \"column\": 14,\n                            \"filename\": \"filters.include.custom.tokens.json\",\n                            \"line\": 4,\n                            \"name\": \"custom\",\n                            \"type\": \"IncludeFilter\",\n                          },\n                        ],\n                        \"line\": 4,\n                        \"type\": \"RawInclude\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters.include.custom.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"pre\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.include.custom.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.include.custom.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.include.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.include.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.include.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.include.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"file\": Object {\n                    \"column\": 25,\n                    \"filename\": \"filters.include.tokens.json\",\n                    \"line\": 3,\n                    \"path\": \"some.md\",\n                    \"type\": \"FileReference\",\n                  },\n                  \"filename\": \"filters.include.tokens.json\",\n                  \"filters\": Array [\n                    Object {\n                      \"attrs\": Array [],\n                      \"column\": 12,\n                      \"filename\": \"filters.include.tokens.json\",\n                      \"line\": 3,\n                      \"name\": \"markdown-it\",\n                      \"type\": \"IncludeFilter\",\n                    },\n                  ],\n                  \"line\": 3,\n                  \"type\": \"RawInclude\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"filters.include.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"file\": Object {\n                          \"column\": 42,\n                          \"filename\": \"filters.include.tokens.json\",\n                          \"line\": 5,\n                          \"path\": \"include-filter-coffee.coffee\",\n                          \"type\": \"FileReference\",\n                        },\n                        \"filename\": \"filters.include.tokens.json\",\n                        \"filters\": Array [\n                          Object {\n                            \"attrs\": Array [\n                              Object {\n                                \"column\": 29,\n                                \"filename\": \"filters.include.tokens.json\",\n                                \"line\": 5,\n                                \"mustEscape\": true,\n                                \"name\": \"minify\",\n                                \"val\": \"true\",\n                              },\n                            ],\n                            \"column\": 14,\n                            \"filename\": \"filters.include.tokens.json\",\n                            \"line\": 5,\n                            \"name\": \"coffee-script\",\n                            \"type\": \"IncludeFilter\",\n                          },\n                        ],\n                        \"line\": 5,\n                        \"type\": \"RawInclude\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters.include.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"filters.include.tokens.json\",\n                    \"line\": 6,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"file\": Object {\n                          \"column\": 49,\n                          \"filename\": \"filters.include.tokens.json\",\n                          \"line\": 7,\n                          \"path\": \"include-filter-coffee.coffee\",\n                          \"type\": \"FileReference\",\n                        },\n                        \"filename\": \"filters.include.tokens.json\",\n                        \"filters\": Array [\n                          Object {\n                            \"attrs\": Array [],\n                            \"column\": 14,\n                            \"filename\": \"filters.include.tokens.json\",\n                            \"line\": 7,\n                            \"name\": \"cdata\",\n                            \"type\": \"IncludeFilter\",\n                          },\n                          Object {\n                            \"attrs\": Array [\n                              Object {\n                                \"column\": 35,\n                                \"filename\": \"filters.include.tokens.json\",\n                                \"line\": 7,\n                                \"mustEscape\": true,\n                                \"name\": \"minify\",\n                                \"val\": \"false\",\n                              },\n                            ],\n                            \"column\": 20,\n                            \"filename\": \"filters.include.tokens.json\",\n                            \"line\": 7,\n                            \"name\": \"coffee-script\",\n                            \"type\": \"IncludeFilter\",\n                          },\n                        ],\n                        \"line\": 7,\n                        \"type\": \"RawInclude\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters.include.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.include.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.include.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.inline.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.inline.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.inline.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"filters.inline.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"before \",\n          },\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.inline.tokens.json\",\n              \"line\": 1,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 19,\n                  \"filename\": \"filters.inline.tokens.json\",\n                  \"line\": 1,\n                  \"type\": \"Text\",\n                  \"val\": \"inside\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 12,\n            \"filename\": \"filters.inline.tokens.json\",\n            \"line\": 1,\n            \"name\": \"cdata\",\n            \"type\": \"Filter\",\n          },\n          Object {\n            \"column\": 26,\n            \"filename\": \"filters.inline.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \" after\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.inline.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.less.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.less.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.less.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.less.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 11,\n                      \"filename\": \"filters.less.tokens.json\",\n                      \"line\": 3,\n                      \"mustEscape\": true,\n                      \"name\": \"type\",\n                      \"val\": \"\\\\\"text/css\\\\\"\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"filters.less.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"filters.less.tokens.json\",\n                          \"line\": 4,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"filters.less.tokens.json\",\n                              \"line\": 5,\n                              \"type\": \"Text\",\n                              \"val\": \"@pad: 15px;\",\n                            },\n                            Object {\n                              \"column\": 1,\n                              \"filename\": \"filters.less.tokens.json\",\n                              \"line\": 6,\n                              \"type\": \"Text\",\n                              \"val\": \"\n\",\n                            },\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"filters.less.tokens.json\",\n                              \"line\": 6,\n                              \"type\": \"Text\",\n                              \"val\": \"body {\",\n                            },\n                            Object {\n                              \"column\": 1,\n                              \"filename\": \"filters.less.tokens.json\",\n                              \"line\": 7,\n                              \"type\": \"Text\",\n                              \"val\": \"\n\",\n                            },\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"filters.less.tokens.json\",\n                              \"line\": 7,\n                              \"type\": \"Text\",\n                              \"val\": \"  padding: @pad;\",\n                            },\n                            Object {\n                              \"column\": 1,\n                              \"filename\": \"filters.less.tokens.json\",\n                              \"line\": 8,\n                              \"type\": \"Text\",\n                              \"val\": \"\n\",\n                            },\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"filters.less.tokens.json\",\n                              \"line\": 8,\n                              \"type\": \"Text\",\n                              \"val\": \"}\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"filters.less.tokens.json\",\n                        \"line\": 4,\n                        \"name\": \"less\",\n                        \"type\": \"Filter\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters.less.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"style\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.less.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.less.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.markdown.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.markdown.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.markdown.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.markdown.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"filters.markdown.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"filters.markdown.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"This is _some_ awesome **markdown**\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.markdown.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"filters.markdown.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"whoop.\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters.markdown.tokens.json\",\n                  \"line\": 3,\n                  \"name\": \"markdown-it\",\n                  \"type\": \"Filter\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.markdown.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.markdown.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.nested.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.nested.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.nested.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.nested.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"filters.nested.tokens.json\",\n                    \"line\": 2,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"filters.nested.tokens.json\",\n                        \"line\": 3,\n                        \"type\": \"Text\",\n                        \"val\": \"(function() {\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.nested.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"filters.nested.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"  console.log('test')\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.nested.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"filters.nested.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"})()\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"filters.nested.tokens.json\",\n                  \"line\": 2,\n                  \"name\": \"uglify-js\",\n                  \"type\": \"Filter\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.nested.tokens.json\",\n            \"line\": 2,\n            \"name\": \"cdata\",\n            \"type\": \"Filter\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.nested.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.nested.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.nested.tokens.json\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"filters.nested.tokens.json\",\n                    \"line\": 7,\n                    \"nodes\": Array [\n                      Object {\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"filters.nested.tokens.json\",\n                          \"line\": 7,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 5,\n                              \"filename\": \"filters.nested.tokens.json\",\n                              \"line\": 8,\n                              \"type\": \"Text\",\n                              \"val\": \"(->\",\n                            },\n                            Object {\n                              \"column\": 1,\n                              \"filename\": \"filters.nested.tokens.json\",\n                              \"line\": 9,\n                              \"type\": \"Text\",\n                              \"val\": \"\n\",\n                            },\n                            Object {\n                              \"column\": 5,\n                              \"filename\": \"filters.nested.tokens.json\",\n                              \"line\": 9,\n                              \"type\": \"Text\",\n                              \"val\": \"  console.log 'test'\",\n                            },\n                            Object {\n                              \"column\": 1,\n                              \"filename\": \"filters.nested.tokens.json\",\n                              \"line\": 10,\n                              \"type\": \"Text\",\n                              \"val\": \"\n\",\n                            },\n                            Object {\n                              \"column\": 5,\n                              \"filename\": \"filters.nested.tokens.json\",\n                              \"line\": 10,\n                              \"type\": \"Text\",\n                              \"val\": \")()\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 19,\n                        \"filename\": \"filters.nested.tokens.json\",\n                        \"line\": 7,\n                        \"name\": \"coffee-script\",\n                        \"type\": \"Filter\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 9,\n                  \"filename\": \"filters.nested.tokens.json\",\n                  \"line\": 7,\n                  \"name\": \"uglify-js\",\n                  \"type\": \"Filter\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.nested.tokens.json\",\n            \"line\": 7,\n            \"name\": \"cdata\",\n            \"type\": \"Filter\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.nested.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.stylus.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.stylus.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.stylus.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.stylus.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 11,\n                      \"filename\": \"filters.stylus.tokens.json\",\n                      \"line\": 3,\n                      \"mustEscape\": true,\n                      \"name\": \"type\",\n                      \"val\": \"\\\\\"text/css\\\\\"\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"filters.stylus.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"filters.stylus.tokens.json\",\n                          \"line\": 4,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"filters.stylus.tokens.json\",\n                              \"line\": 5,\n                              \"type\": \"Text\",\n                              \"val\": \"body\",\n                            },\n                            Object {\n                              \"column\": 1,\n                              \"filename\": \"filters.stylus.tokens.json\",\n                              \"line\": 6,\n                              \"type\": \"Text\",\n                              \"val\": \"\n\",\n                            },\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"filters.stylus.tokens.json\",\n                              \"line\": 6,\n                              \"type\": \"Text\",\n                              \"val\": \"  padding: 50px\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"filters.stylus.tokens.json\",\n                        \"line\": 4,\n                        \"name\": \"stylus\",\n                        \"type\": \"Filter\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters.stylus.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"style\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.stylus.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.stylus.tokens.json\",\n              \"line\": 7,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters.stylus.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.stylus.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters.verbatim.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters.verbatim.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters.verbatim.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"filters.verbatim.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"filters.verbatim.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"filters.verbatim.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"filters are applied at compile time\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"filters.verbatim.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 5,\n                        \"filename\": \"filters.verbatim.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"with no #[b interpolation] at #{all}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 3,\n                  \"filename\": \"filters.verbatim.tokens.json\",\n                  \"line\": 3,\n                  \"name\": \"verbatim\",\n                  \"type\": \"Filter\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 2,\n            \"filename\": \"filters.verbatim.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters.verbatim.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`filters-empty.tokens.json 1`] = `\nObject {\n  \"filename\": \"filters-empty.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"filters-empty.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var users = [{ name: 'tobi', age: 2 }]\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"filters-empty.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"filters-empty.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 13,\n                      \"filename\": \"filters-empty.tokens.json\",\n                      \"line\": 5,\n                      \"mustEscape\": true,\n                      \"name\": \"age\",\n                      \"val\": \"user.age\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"filters-empty.tokens.json\",\n                    \"line\": 5,\n                    \"nodes\": Array [\n                      Object {\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"filters-empty.tokens.json\",\n                          \"line\": 6,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"filters-empty.tokens.json\",\n                        \"line\": 6,\n                        \"name\": \"cdata\",\n                        \"type\": \"Filter\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"filters-empty.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"name\": \"fb:user\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"filters-empty.tokens.json\",\n            \"key\": null,\n            \"line\": 4,\n            \"obj\": \"users\",\n            \"type\": \"Each\",\n            \"val\": \"user\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"filters-empty.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"fb:users\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`html.tokens.json 1`] = `\nObject {\n  \"filename\": \"html.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"html.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var version = 1449104952939\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"html.tokens.json\",\n      \"isHtml\": true,\n      \"line\": 3,\n      \"type\": \"Text\",\n      \"val\": \"<ul>\n<li>foo</li>\n<li>bar</li>\n<li>baz</li>\n</ul>\n<!--build:js /js/app.min.js?v=\",\n    },\n    Object {\n      \"buffer\": true,\n      \"column\": 31,\n      \"filename\": \"html.tokens.json\",\n      \"isInline\": true,\n      \"line\": 9,\n      \"mustEscape\": true,\n      \"type\": \"Code\",\n      \"val\": \"version\",\n    },\n    Object {\n      \"column\": 41,\n      \"filename\": \"html.tokens.json\",\n      \"isHtml\": true,\n      \"line\": 9,\n      \"type\": \"Text\",\n      \"val\": \"-->\n<!--endbuild-->\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"html.tokens.json\",\n        \"line\": 12,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"html.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"You can <em>embed</em> html as well.\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"html.tokens.json\",\n      \"isInline\": false,\n      \"line\": 12,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"html.tokens.json\",\n        \"line\": 13,\n        \"nodes\": Array [\n          Object {\n            \"column\": 4,\n            \"filename\": \"html.tokens.json\",\n            \"isHtml\": true,\n            \"line\": 13,\n            \"type\": \"Text\",\n            \"val\": \"<strong>Even</strong> as the body of a block expansion.\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"html.tokens.json\",\n      \"isInline\": false,\n      \"line\": 13,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`html5.tokens.json 1`] = `\nObject {\n  \"filename\": \"html5.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"html5.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"html\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"html5.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'checkbox'\",\n        },\n        Object {\n          \"column\": 24,\n          \"filename\": \"html5.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"checked\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"html5.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"html5.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"input\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"html5.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'checkbox'\",\n        },\n        Object {\n          \"column\": 24,\n          \"filename\": \"html5.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"checked\",\n          \"val\": \"true\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"html5.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"html5.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"input\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"html5.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'checkbox'\",\n        },\n        Object {\n          \"column\": 24,\n          \"filename\": \"html5.tokens.json\",\n          \"line\": 4,\n          \"mustEscape\": true,\n          \"name\": \"checked\",\n          \"val\": \"false\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"html5.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"html5.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"name\": \"input\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include.script.tokens.json 1`] = `\nObject {\n  \"filename\": \"include.script.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"include.script.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": false,\n          \"name\": \"id\",\n          \"val\": \"'pet-template'\",\n        },\n        Object {\n          \"column\": 21,\n          \"filename\": \"include.script.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/x-template'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"include.script.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"include.script.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"file\": Object {\n              \"column\": 11,\n              \"filename\": \"include.script.tokens.json\",\n              \"line\": 2,\n              \"path\": \"auxiliary/pet.pug\",\n              \"type\": \"FileReference\",\n            },\n            \"filename\": \"include.script.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Include\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"include.script.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include.yield.nested.tokens.json 1`] = `\nObject {\n  \"filename\": \"include.yield.nested.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"include.yield.nested.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"include.yield.nested.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"include.yield.nested.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"some content\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"include.yield.nested.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"include.yield.nested.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"include.yield.nested.tokens.json\",\n                  \"line\": 4,\n                  \"type\": \"Text\",\n                  \"val\": \"and some more\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"include.yield.nested.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"include.yield.nested.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/yield-nested.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"include.yield.nested.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Include\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include-extends-from-root.tokens.json 1`] = `\nObject {\n  \"filename\": \"include-extends-from-root.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"include-extends-from-root.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"include-extends-from-root.tokens.json\",\n        \"line\": 1,\n        \"path\": \"/auxiliary/extends-from-root.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"include-extends-from-root.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Include\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include-extends-of-common-template.tokens.json 1`] = `\nObject {\n  \"filename\": \"include-extends-of-common-template.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"include-extends-of-common-template.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"include-extends-of-common-template.tokens.json\",\n        \"line\": 1,\n        \"path\": \"auxiliary/extends-empty-block-1.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"include-extends-of-common-template.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Include\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"include-extends-of-common-template.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"include-extends-of-common-template.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/extends-empty-block-2.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"include-extends-of-common-template.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Include\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include-extends-relative.tokens.json 1`] = `\nObject {\n  \"filename\": \"include-extends-relative.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"include-extends-relative.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"include-extends-relative.tokens.json\",\n        \"line\": 1,\n        \"path\": \"../cases/auxiliary/extends-relative.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"include-extends-relative.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Include\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include-only-text.tokens.json 1`] = `\nObject {\n  \"filename\": \"include-only-text.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"include-only-text.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"include-only-text.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"include-only-text.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"block\": Object {\n                          \"filename\": \"include-only-text.tokens.json\",\n                          \"line\": 5,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [],\n                              \"block\": Object {\n                                \"filename\": \"include-only-text.tokens.json\",\n                                \"line\": 5,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 12,\n                                    \"filename\": \"include-only-text.tokens.json\",\n                                    \"line\": 5,\n                                    \"type\": \"Text\",\n                                    \"val\": \"hello world\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"include-only-text.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 5,\n                              \"name\": \"em\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"file\": Object {\n                          \"column\": 15,\n                          \"filename\": \"include-only-text.tokens.json\",\n                          \"line\": 4,\n                          \"path\": \"include-only-text-body.pug\",\n                          \"type\": \"FileReference\",\n                        },\n                        \"filename\": \"include-only-text.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Include\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"include-only-text.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"include-only-text.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"include-only-text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include-only-text-body.tokens.json 1`] = `\nObject {\n  \"filename\": \"include-only-text-body.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 3,\n      \"filename\": \"include-only-text-body.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Text\",\n      \"val\": \"The message is \\\\\"\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"include-only-text-body.tokens.json\",\n      \"line\": 2,\n      \"type\": \"YieldBlock\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"include-only-text-body.tokens.json\",\n      \"line\": 3,\n      \"type\": \"Text\",\n      \"val\": \"\\\\\"\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include-with-text.tokens.json 1`] = `\nObject {\n  \"filename\": \"include-with-text.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"include-with-text.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"include-with-text.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 12,\n                      \"filename\": \"include-with-text.tokens.json\",\n                      \"line\": 3,\n                      \"mustEscape\": true,\n                      \"name\": \"src\",\n                      \"val\": \"'/caustic.js'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"include-with-text.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"include-with-text.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 12,\n                      \"filename\": \"include-with-text.tokens.json\",\n                      \"line\": 4,\n                      \"mustEscape\": true,\n                      \"name\": \"src\",\n                      \"val\": \"'/app.js'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"include-with-text.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"include-with-text.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"file\": Object {\n              \"column\": 11,\n              \"filename\": \"include-with-text.tokens.json\",\n              \"line\": 2,\n              \"path\": \"include-with-text-head.pug\",\n              \"type\": \"FileReference\",\n            },\n            \"filename\": \"include-with-text.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Include\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"include-with-text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`include-with-text-head.tokens.json 1`] = `\nObject {\n  \"filename\": \"include-with-text-head.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"include-with-text-head.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"include-with-text-head.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"type\",\n                \"val\": \"'text/javascript'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"include-with-text-head.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"include-with-text-head.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"alert('hello world');\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"include-with-text-head.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"textOnly\": true,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"include-with-text-head.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"head\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`includes.tokens.json 1`] = `\nObject {\n  \"filename\": \"includes.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"includes.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"includes.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/mixins.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"includes.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Include\",\n    },\n    Object {\n      \"args\": null,\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"includes.tokens.json\",\n      \"line\": 4,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"includes.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"file\": Object {\n              \"column\": 11,\n              \"filename\": \"includes.tokens.json\",\n              \"line\": 7,\n              \"path\": \"auxiliary/smile.html\",\n              \"type\": \"FileReference\",\n            },\n            \"filename\": \"includes.tokens.json\",\n            \"filters\": Array [],\n            \"line\": 7,\n            \"type\": \"RawInclude\",\n          },\n          Object {\n            \"column\": 3,\n            \"file\": Object {\n              \"column\": 11,\n              \"filename\": \"includes.tokens.json\",\n              \"line\": 8,\n              \"path\": \"auxiliary/escapes.html\",\n              \"type\": \"FileReference\",\n            },\n            \"filename\": \"includes.tokens.json\",\n            \"filters\": Array [],\n            \"line\": 8,\n            \"type\": \"RawInclude\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"includes.tokens.json\",\n                \"line\": 9,\n                \"mustEscape\": true,\n                \"name\": \"type\",\n                \"val\": \"\\\\\"text/javascript\\\\\"\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"includes.tokens.json\",\n              \"line\": 9,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"file\": Object {\n                    \"column\": 22,\n                    \"filename\": \"includes.tokens.json\",\n                    \"line\": 10,\n                    \"path\": \"auxiliary/includable.js\",\n                    \"type\": \"FileReference\",\n                  },\n                  \"filename\": \"includes.tokens.json\",\n                  \"filters\": Array [\n                    Object {\n                      \"attrs\": Array [],\n                      \"column\": 12,\n                      \"filename\": \"includes.tokens.json\",\n                      \"line\": 10,\n                      \"name\": \"verbatim\",\n                      \"type\": \"IncludeFilter\",\n                    },\n                  ],\n                  \"line\": 10,\n                  \"type\": \"RawInclude\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"includes.tokens.json\",\n            \"isInline\": false,\n            \"line\": 9,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"includes.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`includes-with-ext-js.tokens.json 1`] = `\nObject {\n  \"filename\": \"includes-with-ext-js.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"includes-with-ext-js.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"includes-with-ext-js.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"file\": Object {\n                    \"column\": 13,\n                    \"filename\": \"includes-with-ext-js.tokens.json\",\n                    \"line\": 3,\n                    \"path\": \"javascript-new-lines.js\",\n                    \"type\": \"FileReference\",\n                  },\n                  \"filename\": \"includes-with-ext-js.tokens.json\",\n                  \"filters\": Array [],\n                  \"line\": 3,\n                  \"type\": \"RawInclude\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"includes-with-ext-js.tokens.json\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"name\": \"code\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"includes-with-ext-js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.alert-dialog.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.alert-dialog.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"inheritance.alert-dialog.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/dialog.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.alert-dialog.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.alert-dialog.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.alert-dialog.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"inheritance.alert-dialog.tokens.json\",\n                \"line\": 5,\n                \"type\": \"Text\",\n                \"val\": \"Alert!\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.alert-dialog.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"h1\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.alert-dialog.tokens.json\",\n            \"line\": 6,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"inheritance.alert-dialog.tokens.json\",\n                \"line\": 6,\n                \"type\": \"Text\",\n                \"val\": \"I'm an alert!\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.alert-dialog.tokens.json\",\n          \"isInline\": false,\n          \"line\": 6,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.defaults.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.defaults.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"inheritance.defaults.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"inheritance.defaults.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"inheritance.defaults.tokens.json\",\n                  \"line\": 3,\n                  \"mode\": \"replace\",\n                  \"name\": \"head\",\n                  \"nodes\": Array [\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [\n                        Object {\n                          \"column\": 14,\n                          \"filename\": \"inheritance.defaults.tokens.json\",\n                          \"line\": 4,\n                          \"mustEscape\": true,\n                          \"name\": \"src\",\n                          \"val\": \"'jquery.js'\",\n                        },\n                      ],\n                      \"block\": Object {\n                        \"filename\": \"inheritance.defaults.tokens.json\",\n                        \"line\": 4,\n                        \"nodes\": Array [],\n                        \"type\": \"Block\",\n                      },\n                      \"column\": 7,\n                      \"filename\": \"inheritance.defaults.tokens.json\",\n                      \"isInline\": false,\n                      \"line\": 4,\n                      \"name\": \"script\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [\n                        Object {\n                          \"column\": 14,\n                          \"filename\": \"inheritance.defaults.tokens.json\",\n                          \"line\": 5,\n                          \"mustEscape\": true,\n                          \"name\": \"src\",\n                          \"val\": \"'keymaster.js'\",\n                        },\n                      ],\n                      \"block\": Object {\n                        \"filename\": \"inheritance.defaults.tokens.json\",\n                        \"line\": 5,\n                        \"nodes\": Array [],\n                        \"type\": \"Block\",\n                      },\n                      \"column\": 7,\n                      \"filename\": \"inheritance.defaults.tokens.json\",\n                      \"isInline\": false,\n                      \"line\": 5,\n                      \"name\": \"script\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                    Object {\n                      \"attributeBlocks\": Array [],\n                      \"attrs\": Array [\n                        Object {\n                          \"column\": 14,\n                          \"filename\": \"inheritance.defaults.tokens.json\",\n                          \"line\": 6,\n                          \"mustEscape\": true,\n                          \"name\": \"src\",\n                          \"val\": \"'caustic.js'\",\n                        },\n                      ],\n                      \"block\": Object {\n                        \"filename\": \"inheritance.defaults.tokens.json\",\n                        \"line\": 6,\n                        \"nodes\": Array [],\n                        \"type\": \"Block\",\n                      },\n                      \"column\": 7,\n                      \"filename\": \"inheritance.defaults.tokens.json\",\n                      \"isInline\": false,\n                      \"line\": 6,\n                      \"name\": \"script\",\n                      \"selfClosing\": false,\n                      \"type\": \"Tag\",\n                    },\n                  ],\n                  \"type\": \"NamedBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"inheritance.defaults.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"inheritance.defaults.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.extend.include.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.extend.include.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 8,\n        \"filename\": \"inheritance.extend.include.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/layout.include.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.extend.include.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.include.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"replace\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"inheritance.extend.include.tokens.json\",\n              \"line\": 5,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'jquery.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.include.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.include.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.include.tokens.json\",\n      \"line\": 7,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.include.tokens.json\",\n            \"line\": 8,\n            \"nodes\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"inheritance.extend.include.tokens.json\",\n                \"line\": 8,\n                \"type\": \"Text\",\n                \"val\": \"Page\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.include.tokens.json\",\n          \"isInline\": false,\n          \"line\": 8,\n          \"name\": \"h2\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.include.tokens.json\",\n            \"line\": 9,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"inheritance.extend.include.tokens.json\",\n                \"line\": 9,\n                \"type\": \"Text\",\n                \"val\": \"Some content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.include.tokens.json\",\n          \"isInline\": false,\n          \"line\": 9,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.include.tokens.json\",\n      \"line\": 11,\n      \"mode\": \"replace\",\n      \"name\": \"window-content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.include.tokens.json\",\n            \"line\": 12,\n            \"nodes\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"inheritance.extend.include.tokens.json\",\n                \"line\": 12,\n                \"type\": \"Text\",\n                \"val\": \"Awesome\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.include.tokens.json\",\n          \"isInline\": false,\n          \"line\": 12,\n          \"name\": \"h2\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.include.tokens.json\",\n            \"line\": 13,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"inheritance.extend.include.tokens.json\",\n                \"line\": 13,\n                \"type\": \"Text\",\n                \"val\": \"Now we can extend included blocks!\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.include.tokens.json\",\n          \"isInline\": false,\n          \"line\": 13,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.extend.mixins.block.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.extend.mixins.block.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 8,\n        \"filename\": \"inheritance.extend.mixins.block.tokens.json\",\n        \"line\": 1,\n        \"path\": \"auxiliary/inheritance.extend.mixin.block.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.extend.mixins.block.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.mixins.block.tokens.json\",\n      \"line\": 3,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.mixins.block.tokens.json\",\n            \"line\": 4,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"inheritance.extend.mixins.block.tokens.json\",\n                \"line\": 4,\n                \"type\": \"Text\",\n                \"val\": \"Hello World!\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.mixins.block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 4,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.extend.mixins.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.extend.mixins.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 8,\n        \"filename\": \"inheritance.extend.mixins.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.extend.mixins.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"args\": \"title\",\n      \"block\": Object {\n        \"filename\": \"inheritance.extend.mixins.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"alternate\": null,\n            \"column\": 3,\n            \"consequent\": Object {\n              \"filename\": \"inheritance.extend.mixins.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"inheritance.extend.mixins.tokens.json\",\n                    \"line\": 6,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"inheritance.extend.mixins.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 6,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"title\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"inheritance.extend.mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"name\": \"h1\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"inheritance.extend.mixins.tokens.json\",\n            \"line\": 5,\n            \"test\": \"title\",\n            \"type\": \"Conditional\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"inheritance.extend.mixins.tokens.json\",\n            \"line\": 7,\n            \"type\": \"MixinBlock\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.mixins.tokens.json\",\n      \"line\": 4,\n      \"name\": \"article\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.mixins.tokens.json\",\n      \"line\": 9,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"args\": \"\\\\\"The meaning of life\\\\\"\",\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.mixins.tokens.json\",\n            \"line\": 10,\n            \"nodes\": Array [\n              Object {\n                \"attributeBlocks\": Array [],\n                \"attrs\": Array [],\n                \"block\": Object {\n                  \"filename\": \"inheritance.extend.mixins.tokens.json\",\n                  \"line\": 11,\n                  \"nodes\": Array [\n                    Object {\n                      \"column\": 7,\n                      \"filename\": \"inheritance.extend.mixins.tokens.json\",\n                      \"line\": 11,\n                      \"type\": \"Text\",\n                      \"val\": \"Foo bar baz!\",\n                    },\n                  ],\n                  \"type\": \"Block\",\n                },\n                \"column\": 5,\n                \"filename\": \"inheritance.extend.mixins.tokens.json\",\n                \"isInline\": false,\n                \"line\": 11,\n                \"name\": \"p\",\n                \"selfClosing\": false,\n                \"type\": \"Tag\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"call\": true,\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.mixins.tokens.json\",\n          \"line\": 10,\n          \"name\": \"article\",\n          \"type\": \"Mixin\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.extend.recursive.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.extend.recursive.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"inheritance.extend.recursive.tokens.json\",\n        \"line\": 1,\n        \"path\": \"/auxiliary/inheritance.extend.recursive-parent.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.extend.recursive.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.recursive.tokens.json\",\n      \"line\": 3,\n      \"mode\": \"replace\",\n      \"name\": \"parent\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.recursive.tokens.json\",\n            \"line\": 4,\n            \"nodes\": Array [\n              Object {\n                \"column\": 8,\n                \"filename\": \"inheritance.extend.recursive.tokens.json\",\n                \"line\": 4,\n                \"type\": \"Text\",\n                \"val\": \"child\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 5,\n          \"filename\": \"inheritance.extend.recursive.tokens.json\",\n          \"isInline\": false,\n          \"line\": 4,\n          \"name\": \"h4\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.extend.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.extend.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 8,\n        \"filename\": \"inheritance.extend.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.extend.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"replace\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"inheritance.extend.tokens.json\",\n              \"line\": 5,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'jquery.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.tokens.json\",\n      \"line\": 7,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.tokens.json\",\n            \"line\": 8,\n            \"nodes\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"inheritance.extend.tokens.json\",\n                \"line\": 8,\n                \"type\": \"Text\",\n                \"val\": \"Page\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.tokens.json\",\n          \"isInline\": false,\n          \"line\": 8,\n          \"name\": \"h2\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.tokens.json\",\n            \"line\": 9,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"inheritance.extend.tokens.json\",\n                \"line\": 9,\n                \"type\": \"Text\",\n                \"val\": \"Some content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.tokens.json\",\n          \"isInline\": false,\n          \"line\": 9,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.extend.whitespace.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 8,\n        \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"replace\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n              \"line\": 6,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'jquery.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n            \"line\": 6,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n          \"isInline\": false,\n          \"line\": 6,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n      \"line\": 8,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n            \"line\": 12,\n            \"nodes\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n                \"line\": 12,\n                \"type\": \"Text\",\n                \"val\": \"Page\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n          \"isInline\": false,\n          \"line\": 12,\n          \"name\": \"h2\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n            \"line\": 13,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n                \"line\": 13,\n                \"type\": \"Text\",\n                \"val\": \"Some content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.extend.whitespace.tokens.json\",\n          \"isInline\": false,\n          \"line\": 13,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inheritance.tokens.json 1`] = `\nObject {\n  \"filename\": \"inheritance.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"inheritance.tokens.json\",\n        \"line\": 2,\n        \"path\": \"auxiliary/layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"inheritance.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"replace\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"inheritance.tokens.json\",\n              \"line\": 5,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'jquery.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"inheritance.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inheritance.tokens.json\",\n      \"line\": 7,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.tokens.json\",\n            \"line\": 8,\n            \"nodes\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"inheritance.tokens.json\",\n                \"line\": 8,\n                \"type\": \"Text\",\n                \"val\": \"Page\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.tokens.json\",\n          \"isInline\": false,\n          \"line\": 8,\n          \"name\": \"h2\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [],\n          \"block\": Object {\n            \"filename\": \"inheritance.tokens.json\",\n            \"line\": 9,\n            \"nodes\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"inheritance.tokens.json\",\n                \"line\": 9,\n                \"type\": \"Text\",\n                \"val\": \"Some content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"inheritance.tokens.json\",\n          \"isInline\": false,\n          \"line\": 9,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inline-block-comment.tokens.json 1`] = `\nObject {\n  \"filename\": \"inline-block-comment.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"inline-block-comment.tokens.json\",\n      \"line\": 1,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"buffer\": true,\n      \"column\": 15,\n      \"filename\": \"inline-block-comment.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Comment\",\n      \"val\": \" Main content goes here\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inline-block-comment.tokens.json\",\n      \"line\": 2,\n      \"mode\": \"append\",\n      \"name\": \"content\",\n      \"nodes\": Array [],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"buffer\": true,\n      \"column\": 16,\n      \"filename\": \"inline-block-comment.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Comment\",\n      \"val\": \" adding something to content\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"inline-block-comment.tokens.json\",\n      \"line\": 3,\n      \"mode\": \"prepend\",\n      \"name\": \"content\",\n      \"nodes\": Array [],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"buffer\": true,\n      \"column\": 17,\n      \"filename\": \"inline-block-comment.tokens.json\",\n      \"line\": 3,\n      \"type\": \"Comment\",\n      \"val\": \" adding something to other end of content\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`inline-tag.tokens.json 1`] = `\nObject {\n  \"filename\": \"inline-tag.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"inline-tag.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"bing \",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"inline-tag.tokens.json\",\n              \"line\": 1,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 17,\n                  \"filename\": \"inline-tag.tokens.json\",\n                  \"line\": 1,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 10,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 1,\n            \"name\": \"strong\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 21,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \" bong\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"inline-tag.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"inline-tag.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"bing\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"inline-tag.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 12,\n                  \"filename\": \"inline-tag.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 5,\n            \"name\": \"strong\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 16,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"inline-tag.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 11,\n                  \"filename\": \"inline-tag.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 6,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"'[foo]'\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 6,\n            \"name\": \"strong\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 21,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"buffer\": false,\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"mustEscape\": false,\n            \"type\": \"Code\",\n            \"val\": \"var foo = 'foo]'\",\n          },\n          Object {\n            \"column\": 24,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"bong\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"inline-tag.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"inline-tag.tokens.json\",\n        \"line\": 10,\n        \"nodes\": Array [\n          Object {\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 11,\n            \"type\": \"Text\",\n            \"val\": \"bing\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"inline-tag.tokens.json\",\n              \"line\": 12,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 14,\n                  \"filename\": \"inline-tag.tokens.json\",\n                  \"line\": 12,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 7,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 12,\n            \"name\": \"strong\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 18,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 13,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 13,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"inline-tag.tokens.json\",\n              \"line\": 13,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 13,\n                  \"filename\": \"inline-tag.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 13,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"'[foo]'\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 7,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 13,\n            \"name\": \"strong\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 23,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 13,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 14,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 14,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"buffer\": false,\n            \"column\": 7,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": false,\n            \"line\": 14,\n            \"mustEscape\": false,\n            \"type\": \"Code\",\n            \"val\": \"var foo = 'foo]'\",\n          },\n          Object {\n            \"column\": 26,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 14,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 15,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 15,\n            \"type\": \"Text\",\n            \"val\": \"bong\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"inline-tag.tokens.json\",\n      \"isInline\": false,\n      \"line\": 10,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"inline-tag.tokens.json\",\n        \"line\": 17,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 18,\n            \"type\": \"Text\",\n            \"val\": \"#[strong escaped]\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 19,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 19,\n            \"type\": \"Text\",\n            \"val\": \"#[\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"inline-tag.tokens.json\",\n              \"line\": 19,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 15,\n                  \"filename\": \"inline-tag.tokens.json\",\n                  \"line\": 19,\n                  \"type\": \"Text\",\n                  \"val\": \"escaped\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 8,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 19,\n            \"name\": \"strong\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 23,\n            \"filename\": \"inline-tag.tokens.json\",\n            \"line\": 19,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"inline-tag.tokens.json\",\n      \"isInline\": false,\n      \"line\": 17,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`intepolated-elements.tokens.json 1`] = `\nObject {\n  \"filename\": \"intepolated-elements.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"intepolated-elements.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 1,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'rho'\",\n              },\n              Object {\n                \"column\": 11,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 1,\n                \"mustEscape\": true,\n                \"name\": \"href\",\n                \"val\": \"'#'\",\n              },\n              Object {\n                \"column\": 21,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 1,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"'rho--modifier'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"intepolated-elements.tokens.json\",\n              \"line\": 1,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 44,\n                  \"filename\": \"intepolated-elements.tokens.json\",\n                  \"line\": 1,\n                  \"type\": \"Text\",\n                  \"val\": \"with inline link\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 5,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"isInline\": true,\n            \"line\": 1,\n            \"name\": \"a\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 61,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"intepolated-elements.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"intepolated-elements.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"Some text \",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 16,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'rho'\",\n              },\n              Object {\n                \"column\": 21,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"href\",\n                \"val\": \"'#'\",\n              },\n              Object {\n                \"column\": 31,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"'rho--modifier'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"intepolated-elements.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 15,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"name\": \"a\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 54,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"intepolated-elements.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"intepolated-elements.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"Some text \",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 16,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'rho'\",\n              },\n              Object {\n                \"column\": 21,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": true,\n                \"name\": \"href\",\n                \"val\": \"'#'\",\n              },\n              Object {\n                \"column\": 31,\n                \"filename\": \"intepolated-elements.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"'rho--modifier'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"intepolated-elements.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 54,\n                  \"filename\": \"intepolated-elements.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"with inline link\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 15,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"isInline\": true,\n            \"line\": 3,\n            \"name\": \"a\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 71,\n            \"filename\": \"intepolated-elements.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"intepolated-elements.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`interpolated-mixin.tokens.json 1`] = `\nObject {\n  \"filename\": \"interpolated-mixin.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"url\",\n      \"block\": Object {\n        \"filename\": \"interpolated-mixin.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"interpolated-mixin.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"href\",\n                \"val\": \"url\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"interpolated-mixin.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 14,\n                  \"filename\": \"interpolated-mixin.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 2,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"url\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"interpolated-mixin.tokens.json\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"name\": \"a\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"interpolated-mixin.tokens.json\",\n      \"line\": 1,\n      \"name\": \"linkit\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"interpolated-mixin.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"interpolated-mixin.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"This also works \",\n          },\n          Object {\n            \"args\": \"'http://www.bing.com'\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 21,\n            \"filename\": \"interpolated-mixin.tokens.json\",\n            \"line\": 4,\n            \"name\": \"linkit\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"column\": 52,\n            \"filename\": \"interpolated-mixin.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \" so hurrah for Pug\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"interpolated-mixin.tokens.json\",\n      \"isInline\": false,\n      \"line\": 4,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`interpolation.escape.tokens.json 1`] = `\nObject {\n  \"filename\": \"interpolation.escape.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"interpolation.escape.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var id = 42;\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"interpolation.escape.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"column\": 5,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"some\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"#{text}\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"here\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"My ID \",\n          },\n          Object {\n            \"buffer\": true,\n            \"column\": 11,\n            \"filename\": \"interpolation.escape.tokens.json\",\n            \"isInline\": true,\n            \"line\": 7,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"\\\\\"is {\\\\\" + id + \\\\\"}\\\\\"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"interpolation.escape.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`layout.append.tokens.json 1`] = `\nObject {\n  \"filename\": \"layout.append.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"layout.append.tokens.json\",\n        \"line\": 2,\n        \"path\": \"../fixtures/append/app-layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"layout.append.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.append.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"append\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.append.tokens.json\",\n              \"line\": 5,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.append.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.append.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.append.tokens.json\",\n              \"line\": 6,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.append.tokens.json\",\n            \"line\": 6,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.append.tokens.json\",\n          \"isInline\": false,\n          \"line\": 6,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`layout.append.without-block.tokens.json 1`] = `\nObject {\n  \"filename\": \"layout.append.without-block.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"layout.append.without-block.tokens.json\",\n        \"line\": 2,\n        \"path\": \"../fixtures/append-without-block/app-layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"layout.append.without-block.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.append.without-block.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"append\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.append.without-block.tokens.json\",\n              \"line\": 5,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.append.without-block.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.append.without-block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.append.without-block.tokens.json\",\n              \"line\": 6,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.append.without-block.tokens.json\",\n            \"line\": 6,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.append.without-block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 6,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`layout.multi.append.prepend.block.tokens.json 1`] = `\nObject {\n  \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n        \"line\": 1,\n        \"path\": \"../fixtures/multi-append-prepend-block/redefine.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n      \"line\": 3,\n      \"mode\": \"append\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 3,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 4,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'first'\",\n            },\n            Object {\n              \"column\": 9,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 4,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'append'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n            \"line\": 4,\n            \"nodes\": Array [\n              Object {\n                \"column\": 17,\n                \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n                \"line\": 4,\n                \"type\": \"Text\",\n                \"val\": \"Something appended to content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 2,\n          \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 4,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n      \"line\": 6,\n      \"mode\": \"prepend\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 3,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 7,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'first'\",\n            },\n            Object {\n              \"column\": 9,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 7,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'prepend'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n            \"line\": 7,\n            \"nodes\": Array [\n              Object {\n                \"column\": 18,\n                \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n                \"line\": 7,\n                \"type\": \"Text\",\n                \"val\": \"Something prepended to content\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 2,\n          \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 7,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n      \"line\": 9,\n      \"mode\": \"append\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 3,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 10,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'last'\",\n            },\n            Object {\n              \"column\": 8,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 10,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'append'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n            \"line\": 10,\n            \"nodes\": Array [\n              Object {\n                \"column\": 16,\n                \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n                \"line\": 10,\n                \"type\": \"Text\",\n                \"val\": \"Last append must be most last\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 2,\n          \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 10,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n      \"line\": 12,\n      \"mode\": \"prepend\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 3,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 13,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'last'\",\n            },\n            Object {\n              \"column\": 8,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 13,\n              \"mustEscape\": false,\n              \"name\": \"class\",\n              \"val\": \"'prepend'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n            \"line\": 13,\n            \"nodes\": Array [\n              Object {\n                \"column\": 17,\n                \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n                \"line\": 13,\n                \"type\": \"Text\",\n                \"val\": \"Last prepend must appear at top\",\n              },\n            ],\n            \"type\": \"Block\",\n          },\n          \"column\": 2,\n          \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 13,\n          \"name\": \"p\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n      \"line\": 15,\n      \"mode\": \"append\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 9,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 16,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'jquery.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n            \"line\": 16,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 2,\n          \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 16,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n      \"line\": 18,\n      \"mode\": \"prepend\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 9,\n              \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n              \"line\": 19,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n            \"line\": 19,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 2,\n          \"filename\": \"layout.multi.append.prepend.block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 19,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`layout.prepend.tokens.json 1`] = `\nObject {\n  \"filename\": \"layout.prepend.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"layout.prepend.tokens.json\",\n        \"line\": 2,\n        \"path\": \"../fixtures/prepend/app-layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"layout.prepend.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.prepend.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"prepend\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.prepend.tokens.json\",\n              \"line\": 5,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.prepend.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.prepend.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.prepend.tokens.json\",\n              \"line\": 6,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.prepend.tokens.json\",\n            \"line\": 6,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.prepend.tokens.json\",\n          \"isInline\": false,\n          \"line\": 6,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`layout.prepend.without-block.tokens.json 1`] = `\nObject {\n  \"filename\": \"layout.prepend.without-block.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"layout.prepend.without-block.tokens.json\",\n        \"line\": 2,\n        \"path\": \"../fixtures/prepend-without-block/app-layout.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"layout.prepend.without-block.tokens.json\",\n      \"line\": 2,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"layout.prepend.without-block.tokens.json\",\n      \"line\": 4,\n      \"mode\": \"prepend\",\n      \"name\": \"head\",\n      \"nodes\": Array [\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.prepend.without-block.tokens.json\",\n              \"line\": 5,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'foo.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.prepend.without-block.tokens.json\",\n            \"line\": 5,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.prepend.without-block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 5,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n        Object {\n          \"attributeBlocks\": Array [],\n          \"attrs\": Array [\n            Object {\n              \"column\": 10,\n              \"filename\": \"layout.prepend.without-block.tokens.json\",\n              \"line\": 6,\n              \"mustEscape\": true,\n              \"name\": \"src\",\n              \"val\": \"'bar.js'\",\n            },\n          ],\n          \"block\": Object {\n            \"filename\": \"layout.prepend.without-block.tokens.json\",\n            \"line\": 6,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"filename\": \"layout.prepend.without-block.tokens.json\",\n          \"isInline\": false,\n          \"line\": 6,\n          \"name\": \"script\",\n          \"selfClosing\": false,\n          \"type\": \"Tag\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin.attrs.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin.attrs.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"title\",\n      \"block\": Object {\n        \"filename\": \"mixin.attrs.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'centered'\",\n              },\n              Object {\n                \"column\": 16,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"id\",\n                \"val\": \"attributes.id\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"mixin.attrs.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 10,\n                            \"filename\": \"mixin.attrs.tokens.json\",\n                            \"line\": 4,\n                            \"mustEscape\": true,\n                            \"name\": \"class\",\n                            \"val\": \"attributes.class\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"mixin.attrs.tokens.json\",\n                          \"line\": 4,\n                          \"nodes\": Array [\n                            Object {\n                              \"buffer\": true,\n                              \"column\": 33,\n                              \"filename\": \"mixin.attrs.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 4,\n                              \"mustEscape\": true,\n                              \"type\": \"Code\",\n                              \"val\": \"title\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"mixin.attrs.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 4,\n                        \"name\": \"h1\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"if (title)\",\n                },\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"MixinBlock\",\n                },\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"mixin.attrs.tokens.json\",\n                    \"line\": 7,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 7,\n                            \"filename\": \"mixin.attrs.tokens.json\",\n                            \"line\": 7,\n                            \"mustEscape\": false,\n                            \"name\": \"class\",\n                            \"val\": \"'footer'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"mixin.attrs.tokens.json\",\n                          \"line\": 7,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [\n                                Object {\n                                  \"column\": 11,\n                                  \"filename\": \"mixin.attrs.tokens.json\",\n                                  \"line\": 8,\n                                  \"mustEscape\": true,\n                                  \"name\": \"href\",\n                                  \"val\": \"attributes.href\",\n                                },\n                              ],\n                              \"block\": Object {\n                                \"filename\": \"mixin.attrs.tokens.json\",\n                                \"line\": 8,\n                                \"nodes\": Array [\n                                  Object {\n                                    \"column\": 33,\n                                    \"filename\": \"mixin.attrs.tokens.json\",\n                                    \"line\": 8,\n                                    \"type\": \"Text\",\n                                    \"val\": \"Back\",\n                                  },\n                                ],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"mixin.attrs.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 8,\n                              \"name\": \"a\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"mixin.attrs.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 7,\n                        \"name\": \"div\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"if (attributes.href)\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 1,\n      \"name\": \"centered\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"title\",\n      \"block\": Object {\n        \"filename\": \"mixin.attrs.tokens.json\",\n        \"line\": 11,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 11,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'stretch'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 11,\n              \"nodes\": Array [\n                Object {\n                  \"args\": \"title\",\n                  \"attributeBlocks\": Array [\n                    Object {\n                      \"column\": 31,\n                      \"filename\": \"mixin.attrs.tokens.json\",\n                      \"line\": 12,\n                      \"type\": \"AttributeBlock\",\n                      \"val\": \"attributes\",\n                    },\n                  ],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 21,\n                      \"filename\": \"mixin.attrs.tokens.json\",\n                      \"line\": 12,\n                      \"mustEscape\": false,\n                      \"name\": \"class\",\n                      \"val\": \"'highlight'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"mixin.attrs.tokens.json\",\n                    \"line\": 12,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.attrs.tokens.json\",\n                        \"line\": 13,\n                        \"type\": \"MixinBlock\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"line\": 12,\n                  \"name\": \"centered\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 11,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 10,\n      \"name\": \"main\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixin.attrs.tokens.json\",\n        \"line\": 16,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 13,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 16,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"attributes\",\n              },\n            ],\n            \"attrs\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 16,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'bottom'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 16,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"line\": 17,\n                  \"type\": \"MixinBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 16,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 15,\n      \"name\": \"bottom\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.attrs.tokens.json\",\n        \"line\": 19,\n        \"nodes\": Array [\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 12,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 20,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'First'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 20,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 19,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"line\": 20,\n                  \"type\": \"Text\",\n                  \"val\": \"Hello World\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"line\": 20,\n            \"name\": \"centered\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": \"'Section 1'\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 25,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 21,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'Second'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 21,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.attrs.tokens.json\",\n                    \"line\": 22,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.attrs.tokens.json\",\n                        \"line\": 22,\n                        \"type\": \"Text\",\n                        \"val\": \"Some important content.\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 22,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"line\": 21,\n            \"name\": \"centered\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": \"'Section 2'\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 25,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 23,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'Third'\",\n              },\n              Object {\n                \"column\": 31,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 23,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'foo'\",\n              },\n              Object {\n                \"column\": 36,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 23,\n                \"mustEscape\": true,\n                \"name\": \"href\",\n                \"val\": \"'menu.html'\",\n              },\n              Object {\n                \"column\": 54,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 23,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 23,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.attrs.tokens.json\",\n                    \"line\": 24,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.attrs.tokens.json\",\n                        \"line\": 24,\n                        \"type\": \"Text\",\n                        \"val\": \"Even more important content.\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 24,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"line\": 23,\n            \"name\": \"centered\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": \"'Section 3'\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 22,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 25,\n                \"mustEscape\": true,\n                \"name\": \"href\",\n                \"val\": \"'#'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 25,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.attrs.tokens.json\",\n                    \"line\": 26,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.attrs.tokens.json\",\n                        \"line\": 26,\n                        \"type\": \"Text\",\n                        \"val\": \"Last content.\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 26,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"line\": 25,\n            \"name\": \"main\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 27,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'foo'\",\n              },\n              Object {\n                \"column\": 15,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 27,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"'bar'\",\n              },\n              Object {\n                \"column\": 28,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 27,\n                \"mustEscape\": true,\n                \"name\": \"name\",\n                \"val\": \"'end'\",\n              },\n              Object {\n                \"column\": 40,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 27,\n                \"mustEscape\": true,\n                \"name\": \"id\",\n                \"val\": \"'Last'\",\n              },\n              Object {\n                \"column\": 51,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 27,\n                \"mustEscape\": true,\n                \"name\": \"data-attr\",\n                \"val\": \"'baz'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 27,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.attrs.tokens.json\",\n                    \"line\": 28,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.attrs.tokens.json\",\n                        \"line\": 28,\n                        \"type\": \"Text\",\n                        \"val\": \"Some final words.\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 28,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"line\": 27,\n            \"name\": \"bottom\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 11,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 29,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"['class1', 'class2']\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"line\": 29,\n            \"name\": \"bottom\",\n            \"type\": \"Mixin\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 19,\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixin.attrs.tokens.json\",\n        \"line\": 32,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 38,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 32,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"attributes\",\n              },\n            ],\n            \"attrs\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 32,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'thing'\",\n              },\n              Object {\n                \"column\": 13,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 32,\n                \"mustEscape\": true,\n                \"name\": \"attr1\",\n                \"val\": \"'foo'\",\n              },\n              Object {\n                \"column\": 26,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 32,\n                \"mustEscape\": true,\n                \"name\": \"attr2\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 32,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 32,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 31,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 34,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var val = '<biz>'\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"isInline\": false,\n      \"line\": 35,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var classes = ['foo', 'bar']\",\n    },\n    Object {\n      \"args\": null,\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 6,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 36,\n          \"mustEscape\": true,\n          \"name\": \"attr3\",\n          \"val\": \"'baz'\",\n        },\n        Object {\n          \"column\": 18,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 36,\n          \"mustEscape\": true,\n          \"name\": \"data-foo\",\n          \"val\": \"val\",\n        },\n        Object {\n          \"column\": 31,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 36,\n          \"mustEscape\": false,\n          \"name\": \"data-bar\",\n          \"val\": \"val\",\n        },\n        Object {\n          \"column\": 45,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 36,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"classes\",\n        },\n        Object {\n          \"column\": 59,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 36,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'thunk'\",\n        },\n      ],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 36,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 38,\n      \"type\": \"Comment\",\n      \"val\": \" Regression test for #1424\",\n    },\n    Object {\n      \"args\": \"work\",\n      \"block\": Object {\n        \"filename\": \"mixin.attrs.tokens.json\",\n        \"line\": 40,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"mixin.attrs.tokens.json\",\n                \"line\": 40,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"attributes\",\n              },\n            ],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 40,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 29,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 40,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"work\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 40,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 39,\n      \"name\": \"work_filmstrip_item\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"'work'\",\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 30,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 41,\n          \"mustEscape\": true,\n          \"name\": \"data-profile\",\n          \"val\": \"'profile'\",\n        },\n        Object {\n          \"column\": 56,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 41,\n          \"mustEscape\": true,\n          \"name\": \"data-creator-name\",\n          \"val\": \"'name'\",\n        },\n      ],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 41,\n      \"name\": \"work_filmstrip_item\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"arg1, arg2, arg3, arg4\",\n      \"block\": Object {\n        \"filename\": \"mixin.attrs.tokens.json\",\n        \"line\": 44,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 44,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 4,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 44,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"arg1\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 44,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 45,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 4,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 45,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"arg2\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 45,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 46,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 4,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 46,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"arg3\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 46,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.attrs.tokens.json\",\n              \"line\": 47,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 4,\n                  \"filename\": \"mixin.attrs.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 47,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"arg4\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.attrs.tokens.json\",\n            \"isInline\": false,\n            \"line\": 47,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 43,\n      \"name\": \"my-mixin\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": null,\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 50,\n          \"mustEscape\": true,\n          \"name\": \"attr3\",\n          \"val\": \"\\\\\"qux\\\\\"\",\n        },\n        Object {\n          \"column\": 3,\n          \"filename\": \"mixin.attrs.tokens.json\",\n          \"line\": 51,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"\\\\\"baz\\\\\"\",\n        },\n      ],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 49,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"\n'1',\n      '2',\n  '3',\n      '4'\n\",\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin.attrs.tokens.json\",\n      \"line\": 54,\n      \"name\": \"my-mixin\",\n      \"type\": \"Mixin\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin.block-tag-behaviour.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"name\",\n      \"block\": Object {\n        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'article'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 4,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"name\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"h1\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"MixinBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"section\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n      \"line\": 2,\n      \"name\": \"article\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"args\": \"'Foo'\",\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                    \"line\": 9,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                          \"line\": 9,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 24,\n                              \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                              \"line\": 9,\n                              \"type\": \"Text\",\n                              \"val\": \"I'm article foo\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 22,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 9,\n                        \"name\": \"p\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                  \"line\": 9,\n                  \"name\": \"article\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n            \"isInline\": false,\n            \"line\": 8,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"args\": \"name\",\n      \"block\": Object {\n        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n        \"line\": 12,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                \"line\": 12,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'article'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n              \"line\": 12,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                    \"line\": 13,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 13,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"name\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 13,\n                  \"name\": \"h1\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                    \"line\": 14,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 15,\n                        \"type\": \"MixinBlock\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 14,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n            \"isInline\": false,\n            \"line\": 12,\n            \"name\": \"section\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n      \"line\": 11,\n      \"name\": \"article\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n        \"line\": 17,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n              \"line\": 18,\n              \"nodes\": Array [\n                Object {\n                  \"args\": \"'Something'\",\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                    \"line\": 19,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 20,\n                        \"type\": \"Text\",\n                        \"val\": \"I'm a much longer\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 21,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 21,\n                        \"type\": \"Text\",\n                        \"val\": \"text-only article,\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 22,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 22,\n                        \"type\": \"Text\",\n                        \"val\": \"but you can still\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 23,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 23,\n                        \"type\": \"Text\",\n                        \"val\": \"inline html tags\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 24,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                        \"line\": 24,\n                        \"type\": \"Text\",\n                        \"val\": \"in me if you want.\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n                  \"line\": 19,\n                  \"name\": \"article\",\n                  \"textOnly\": true,\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n            \"isInline\": false,\n            \"line\": 18,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin.block-tag-behaviour.tokens.json\",\n      \"isInline\": false,\n      \"line\": 17,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin.blocks.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin.blocks.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"method, action\",\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 4,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 8,\n                \"filename\": \"mixin.blocks.tokens.json\",\n                \"line\": 4,\n                \"mustEscape\": true,\n                \"name\": \"method\",\n                \"val\": \"method\",\n              },\n              Object {\n                \"column\": 23,\n                \"filename\": \"mixin.blocks.tokens.json\",\n                \"line\": 4,\n                \"mustEscape\": true,\n                \"name\": \"action\",\n                \"val\": \"action\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"var csrf_token_from_somewhere = 'hey'\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 11,\n                      \"filename\": \"mixin.blocks.tokens.json\",\n                      \"line\": 6,\n                      \"mustEscape\": true,\n                      \"name\": \"type\",\n                      \"val\": \"'hidden'\",\n                    },\n                    Object {\n                      \"column\": 26,\n                      \"filename\": \"mixin.blocks.tokens.json\",\n                      \"line\": 6,\n                      \"mustEscape\": true,\n                      \"name\": \"name\",\n                      \"val\": \"'_csrf'\",\n                    },\n                    Object {\n                      \"column\": 40,\n                      \"filename\": \"mixin.blocks.tokens.json\",\n                      \"line\": 6,\n                      \"mustEscape\": true,\n                      \"name\": \"value\",\n                      \"val\": \"csrf_token_from_somewhere\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"mixin.blocks.tokens.json\",\n                    \"line\": 6,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 6,\n                  \"name\": \"input\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 7,\n                  \"type\": \"MixinBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"form\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"line\": 3,\n      \"name\": \"form\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 9,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 10,\n              \"nodes\": Array [\n                Object {\n                  \"args\": \"'GET', '/search'\",\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.blocks.tokens.json\",\n                    \"line\": 11,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 13,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 12,\n                            \"mustEscape\": true,\n                            \"name\": \"type\",\n                            \"val\": \"'text'\",\n                          },\n                          Object {\n                            \"column\": 26,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 12,\n                            \"mustEscape\": true,\n                            \"name\": \"name\",\n                            \"val\": \"'query'\",\n                          },\n                          Object {\n                            \"column\": 40,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 12,\n                            \"mustEscape\": true,\n                            \"name\": \"placeholder\",\n                            \"val\": \"'Search'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"mixin.blocks.tokens.json\",\n                          \"line\": 12,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"mixin.blocks.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 12,\n                        \"name\": \"input\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 13,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 13,\n                            \"mustEscape\": true,\n                            \"name\": \"type\",\n                            \"val\": \"'submit'\",\n                          },\n                          Object {\n                            \"column\": 28,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 13,\n                            \"mustEscape\": true,\n                            \"name\": \"value\",\n                            \"val\": \"'Search'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"mixin.blocks.tokens.json\",\n                          \"line\": 13,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"mixin.blocks.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 13,\n                        \"name\": \"input\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 11,\n                  \"name\": \"form\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 10,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"isInline\": false,\n      \"line\": 9,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 15,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 16,\n              \"nodes\": Array [\n                Object {\n                  \"args\": \"'POST', '/search'\",\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.blocks.tokens.json\",\n                    \"line\": 17,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 13,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 18,\n                            \"mustEscape\": true,\n                            \"name\": \"type\",\n                            \"val\": \"'text'\",\n                          },\n                          Object {\n                            \"column\": 26,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 18,\n                            \"mustEscape\": true,\n                            \"name\": \"name\",\n                            \"val\": \"'query'\",\n                          },\n                          Object {\n                            \"column\": 40,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 18,\n                            \"mustEscape\": true,\n                            \"name\": \"placeholder\",\n                            \"val\": \"'Search'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"mixin.blocks.tokens.json\",\n                          \"line\": 18,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"mixin.blocks.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 18,\n                        \"name\": \"input\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 13,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 19,\n                            \"mustEscape\": true,\n                            \"name\": \"type\",\n                            \"val\": \"'submit'\",\n                          },\n                          Object {\n                            \"column\": 28,\n                            \"filename\": \"mixin.blocks.tokens.json\",\n                            \"line\": 19,\n                            \"mustEscape\": true,\n                            \"name\": \"value\",\n                            \"val\": \"'Search'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"mixin.blocks.tokens.json\",\n                          \"line\": 19,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"mixin.blocks.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 19,\n                        \"name\": \"input\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 17,\n                  \"name\": \"form\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 16,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"isInline\": false,\n      \"line\": 15,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 21,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 22,\n              \"nodes\": Array [\n                Object {\n                  \"args\": \"'POST', '/search'\",\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": null,\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 23,\n                  \"name\": \"form\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 22,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"isInline\": false,\n      \"line\": 21,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 26,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"mixin.blocks.tokens.json\",\n                \"line\": 26,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 26,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 27,\n                  \"type\": \"MixinBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 26,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"line\": 25,\n      \"name\": \"bar\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 30,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"mixin.blocks.tokens.json\",\n                \"line\": 30,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'foo'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 30,\n              \"nodes\": Array [\n                Object {\n                  \"args\": null,\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixin.blocks.tokens.json\",\n                    \"line\": 31,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"mixin.blocks.tokens.json\",\n                        \"line\": 32,\n                        \"type\": \"MixinBlock\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 31,\n                  \"name\": \"bar\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 30,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"line\": 29,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": null,\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 34,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 35,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 35,\n                  \"type\": \"Text\",\n                  \"val\": \"one\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 35,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 36,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 36,\n                  \"type\": \"Text\",\n                  \"val\": \"two\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 36,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 37,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 37,\n                  \"type\": \"Text\",\n                  \"val\": \"three\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 37,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"line\": 34,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 41,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 5,\n                \"filename\": \"mixin.blocks.tokens.json\",\n                \"line\": 41,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'baz'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.blocks.tokens.json\",\n              \"line\": 41,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 9,\n                  \"filename\": \"mixin.blocks.tokens.json\",\n                  \"line\": 42,\n                  \"type\": \"MixinBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 5,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 41,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"line\": 40,\n      \"name\": \"baz\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"\",\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.blocks.tokens.json\",\n        \"line\": 44,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 7,\n            \"filename\": \"mixin.blocks.tokens.json\",\n            \"isInline\": true,\n            \"line\": 44,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"'123'\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin.blocks.tokens.json\",\n      \"line\": 44,\n      \"name\": \"baz\",\n      \"type\": \"Mixin\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin.merge.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin.merge.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixin.merge.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 8,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 2,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"attributes\",\n              },\n            ],\n            \"attrs\": Array [\n              Object {\n                \"column\": 4,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'bar'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.merge.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 32,\n                  \"filename\": \"mixin.merge.tokens.json\",\n                  \"line\": 2,\n                  \"type\": \"Text\",\n                  \"val\": \"One\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 13,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 3,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"attributes\",\n              },\n            ],\n            \"attrs\": Array [\n              Object {\n                \"column\": 4,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'baz'\",\n              },\n              Object {\n                \"column\": 8,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'quux'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.merge.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 37,\n                  \"filename\": \"mixin.merge.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"Two\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 4,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 4,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"attributes\",\n              },\n            ],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin.merge.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 28,\n                  \"filename\": \"mixin.merge.tokens.json\",\n                  \"line\": 4,\n                  \"type\": \"Text\",\n                  \"val\": \"Three\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 8,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 5,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"attributes\",\n              },\n            ],\n            \"attrs\": Array [\n              Object {\n                \"column\": 4,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 5,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'bar'\",\n              },\n              Object {\n                \"column\": 32,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 5,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"\\\\\"baz\\\\\"\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixin.merge.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 45,\n                  \"filename\": \"mixin.merge.tokens.json\",\n                  \"line\": 5,\n                  \"type\": \"Text\",\n                  \"val\": \"Four\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin.merge.tokens.json\",\n      \"line\": 1,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin.merge.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 8,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'hello'\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 8,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 9,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'world'\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 9,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 10,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'hello'\",\n              },\n              Object {\n                \"column\": 13,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 10,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'world'\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 10,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 11,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'hello'\",\n              },\n              Object {\n                \"column\": 13,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 11,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'world'\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 11,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 8,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 12,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"\\\\\"hello\\\\\"\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 12,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 13,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'hello'\",\n              },\n              Object {\n                \"column\": 14,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 13,\n                \"mustEscape\": true,\n                \"name\": \"class\",\n                \"val\": \"\\\\\"world\\\\\"\",\n              },\n            ],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 13,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 14,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"mixin.merge.tokens.json\",\n                \"line\": 15,\n                \"type\": \"AttributeBlock\",\n                \"val\": \"{class: \\\\\"hello\\\\\"}\",\n              },\n            ],\n            \"attrs\": Array [],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixin.merge.tokens.json\",\n            \"line\": 15,\n            \"name\": \"foo\",\n            \"type\": \"Mixin\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin.merge.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin-at-end-of-file.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin-at-end-of-file.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"mixin-at-end-of-file.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"mixin-at-end-of-file.tokens.json\",\n        \"line\": 1,\n        \"path\": \"./auxiliary/mixin-at-end-of-file.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"mixin-at-end-of-file.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Include\",\n    },\n    Object {\n      \"args\": \"\",\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin-at-end-of-file.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin-at-end-of-file.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin-at-end-of-file.tokens.json\",\n                  \"line\": 4,\n                  \"type\": \"Text\",\n                  \"val\": \"some awesome content\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin-at-end-of-file.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"p\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin-at-end-of-file.tokens.json\",\n      \"line\": 3,\n      \"name\": \"slide\",\n      \"type\": \"Mixin\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin-block-with-space.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin-block-with-space.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"id\",\n      \"block\": Object {\n        \"filename\": \"mixin-block-with-space.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin-block-with-space.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"mixin-block-with-space.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"MixinBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin-block-with-space.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin-block-with-space.tokens.json\",\n      \"line\": 1,\n      \"name\": \"m\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"\",\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin-block-with-space.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"column\": 5,\n            \"filename\": \"mixin-block-with-space.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"This text should appear\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin-block-with-space.tokens.json\",\n      \"line\": 5,\n      \"name\": \"m\",\n      \"type\": \"Mixin\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin-hoist.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin-hoist.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixin-hoist.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin-hoist.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin-hoist.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 3,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"title\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin-hoist.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"h1\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixin-hoist.tokens.json\",\n      \"line\": 2,\n      \"name\": \"foo\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixin-hoist.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixin-hoist.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [\n                Object {\n                  \"args\": null,\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": null,\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixin-hoist.tokens.json\",\n                  \"line\": 7,\n                  \"name\": \"foo\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixin-hoist.tokens.json\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixin-hoist.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixin-via-include.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixin-via-include.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"mixin-via-include.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Comment\",\n      \"val\": \" regression test for https://github.com/pugjs/pug/issues/1435\",\n    },\n    Object {\n      \"block\": Object {\n        \"filename\": \"mixin-via-include.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"mixin-via-include.tokens.json\",\n        \"line\": 3,\n        \"path\": \"../fixtures/mixin-include.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"mixin-via-include.tokens.json\",\n      \"line\": 3,\n      \"type\": \"Include\",\n    },\n    Object {\n      \"args\": null,\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixin-via-include.tokens.json\",\n      \"line\": 5,\n      \"name\": \"bang\",\n      \"type\": \"Mixin\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixins.rest-args.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixins.rest-args.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"tag, ...items\",\n      \"block\": Object {\n        \"filename\": \"mixins.rest-args.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixins.rest-args.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"mixins.rest-args.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"mixins.rest-args.tokens.json\",\n                          \"line\": 4,\n                          \"nodes\": Array [\n                            Object {\n                              \"buffer\": true,\n                              \"column\": 9,\n                              \"filename\": \"mixins.rest-args.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 4,\n                              \"mustEscape\": true,\n                              \"type\": \"Code\",\n                              \"val\": \"item\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"mixins.rest-args.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 4,\n                        \"name\": \"li\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.rest-args.tokens.json\",\n                  \"key\": null,\n                  \"line\": 3,\n                  \"obj\": \"items\",\n                  \"type\": \"Each\",\n                  \"val\": \"item\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"expr\": \"tag\",\n            \"filename\": \"mixins.rest-args.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"selfClosing\": false,\n            \"type\": \"InterpolatedTag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixins.rest-args.tokens.json\",\n      \"line\": 1,\n      \"name\": \"list\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"'ul', 1, 2, 3, 4\",\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixins.rest-args.tokens.json\",\n      \"line\": 6,\n      \"name\": \"list\",\n      \"type\": \"Mixin\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixins.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixins.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": \"title, str\",\n      \"block\": Object {\n        \"filename\": \"mixins.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"mixins.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'comment'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixins.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixins.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"mixins.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 3,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"title\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"h2\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 6,\n                      \"filename\": \"mixins.tokens.json\",\n                      \"line\": 4,\n                      \"mustEscape\": false,\n                      \"name\": \"class\",\n                      \"val\": \"'body'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"mixins.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 11,\n                        \"filename\": \"mixins.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 4,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"str\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"line\": 1,\n      \"name\": \"comment\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"args\": \"title, str\",\n      \"block\": Object {\n        \"filename\": \"mixins.tokens.json\",\n        \"line\": 8,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"mixins.tokens.json\",\n                \"line\": 8,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'comment'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixins.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixins.tokens.json\",\n                    \"line\": 9,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"mixins.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 9,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"title\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 9,\n                  \"name\": \"h2\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 6,\n                      \"filename\": \"mixins.tokens.json\",\n                      \"line\": 10,\n                      \"mustEscape\": false,\n                      \"name\": \"class\",\n                      \"val\": \"'body'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"mixins.tokens.json\",\n                    \"line\": 10,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 11,\n                        \"filename\": \"mixins.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 10,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"str\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 10,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"isInline\": false,\n            \"line\": 8,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"line\": 7,\n      \"name\": \"comment\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 1,\n          \"filename\": \"mixins.tokens.json\",\n          \"line\": 12,\n          \"mustEscape\": false,\n          \"name\": \"id\",\n          \"val\": \"'user'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"mixins.tokens.json\",\n        \"line\": 12,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixins.tokens.json\",\n              \"line\": 13,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"line\": 13,\n                  \"type\": \"Text\",\n                  \"val\": \"Tobi\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"isInline\": false,\n            \"line\": 13,\n            \"name\": \"h1\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"mixins.tokens.json\",\n                \"line\": 14,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'comments'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixins.tokens.json\",\n              \"line\": 14,\n              \"nodes\": Array [\n                Object {\n                  \"args\": \"'This',\n            (('is regular, javascript'))\",\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": null,\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"line\": 15,\n                  \"name\": \"comment\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"isInline\": false,\n            \"line\": 14,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"isInline\": false,\n      \"line\": 12,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixins.tokens.json\",\n        \"line\": 19,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"mixins.tokens.json\",\n              \"line\": 19,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixins.tokens.json\",\n                    \"line\": 20,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"mixins.tokens.json\",\n                        \"line\": 20,\n                        \"type\": \"Text\",\n                        \"val\": \"foo\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 20,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixins.tokens.json\",\n                    \"line\": 21,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"mixins.tokens.json\",\n                        \"line\": 21,\n                        \"type\": \"Text\",\n                        \"val\": \"bar\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 21,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"mixins.tokens.json\",\n                    \"line\": 22,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"mixins.tokens.json\",\n                        \"line\": 22,\n                        \"type\": \"Text\",\n                        \"val\": \"baz\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 22,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"isInline\": false,\n            \"line\": 19,\n            \"name\": \"ul\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"line\": 18,\n      \"name\": \"list\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixins.tokens.json\",\n        \"line\": 24,\n        \"nodes\": Array [\n          Object {\n            \"args\": \"\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"line\": 25,\n            \"name\": \"list\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": \"\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": null,\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"line\": 26,\n            \"name\": \"list\",\n            \"type\": \"Mixin\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"isInline\": false,\n      \"line\": 24,\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"args\": \"str\",\n      \"block\": Object {\n        \"filename\": \"mixins.tokens.json\",\n        \"line\": 29,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 6,\n                \"filename\": \"mixins.tokens.json\",\n                \"line\": 29,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'interpolation'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixins.tokens.json\",\n              \"line\": 29,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 20,\n                  \"filename\": \"mixins.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 29,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"str + 'interpolated'\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixins.tokens.json\",\n            \"isInline\": false,\n            \"line\": 29,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"line\": 28,\n      \"name\": \"foobar\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"isInline\": false,\n      \"line\": 31,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var suffix = \\\\\"bar\\\\\"\",\n    },\n    Object {\n      \"args\": \"'This is '\",\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": null,\n      \"call\": true,\n      \"column\": 1,\n      \"filename\": \"mixins.tokens.json\",\n      \"line\": 32,\n      \"name\": \"#{'foo' + suffix}\",\n      \"type\": \"Mixin\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`mixins-unused.tokens.json 1`] = `\nObject {\n  \"filename\": \"mixins-unused.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"args\": null,\n      \"block\": Object {\n        \"filename\": \"mixins-unused.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"mixins-unused.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"class\",\n                \"val\": \"'wtf'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"mixins-unused.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 8,\n                  \"filename\": \"mixins-unused.tokens.json\",\n                  \"line\": 2,\n                  \"type\": \"Text\",\n                  \"val\": \"This isn't something we ever want to output\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"mixins-unused.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"mixins-unused.tokens.json\",\n      \"line\": 1,\n      \"name\": \"never-called\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"mixins-unused.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"mixins-unused.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`namespaces.tokens.json 1`] = `\nObject {\n  \"filename\": \"namespaces.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"namespaces.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 14,\n            \"filename\": \"namespaces.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"Something\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"namespaces.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"fb:user:role\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 5,\n          \"filename\": \"namespaces.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"fb:foo\",\n          \"val\": \"'bar'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"namespaces.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"namespaces.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"foo\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`nesting.tokens.json 1`] = `\nObject {\n  \"filename\": \"nesting.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"nesting.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"nesting.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"nesting.tokens.json\",\n                  \"line\": 2,\n                  \"type\": \"Text\",\n                  \"val\": \"a\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"nesting.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"nesting.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"nesting.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Text\",\n                  \"val\": \"b\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"nesting.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"nesting.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"nesting.tokens.json\",\n                    \"line\": 5,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"nesting.tokens.json\",\n                          \"line\": 6,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 12,\n                              \"filename\": \"nesting.tokens.json\",\n                              \"line\": 6,\n                              \"type\": \"Text\",\n                              \"val\": \"c\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 9,\n                        \"filename\": \"nesting.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 6,\n                        \"name\": \"li\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"nesting.tokens.json\",\n                          \"line\": 7,\n                          \"nodes\": Array [\n                            Object {\n                              \"column\": 12,\n                              \"filename\": \"nesting.tokens.json\",\n                              \"line\": 7,\n                              \"type\": \"Text\",\n                              \"val\": \"d\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 9,\n                        \"filename\": \"nesting.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 7,\n                        \"name\": \"li\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"nesting.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"name\": \"ul\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"nesting.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"nesting.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"nesting.tokens.json\",\n                  \"line\": 8,\n                  \"type\": \"Text\",\n                  \"val\": \"e\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"nesting.tokens.json\",\n            \"isInline\": false,\n            \"line\": 8,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"nesting.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`pipeless-comments.tokens.json 1`] = `\nObject {\n  \"filename\": \"pipeless-comments.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"block\": Object {\n        \"filename\": \"pipeless-comments.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"pipeless-comments.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"     .foo\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pipeless-comments.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"pipeless-comments.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\t.bar\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pipeless-comments.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"pipeless-comments.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \".hey\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"buffer\": true,\n      \"column\": 1,\n      \"filename\": \"pipeless-comments.tokens.json\",\n      \"line\": 1,\n      \"type\": \"BlockComment\",\n      \"val\": \"\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`pipeless-filters.tokens.json 1`] = `\nObject {\n  \"filename\": \"pipeless-filters.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"pipeless-filters.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"pipeless-filters.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"    code sample\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pipeless-filters.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pipeless-filters.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pipeless-filters.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"pipeless-filters.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"# Heading\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"pipeless-filters.tokens.json\",\n      \"line\": 1,\n      \"name\": \"markdown-it\",\n      \"type\": \"Filter\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`pipeless-tag.tokens.json 1`] = `\nObject {\n  \"filename\": \"pipeless-tag.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"pipeless-tag.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"pipeless-tag.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"  what\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pipeless-tag.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"pipeless-tag.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"is \",\n          },\n          Object {\n            \"buffer\": true,\n            \"column\": 6,\n            \"filename\": \"pipeless-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 3,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"'going'\",\n          },\n          Object {\n            \"column\": 16,\n            \"filename\": \"pipeless-tag.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \" \",\n          },\n          Object {\n            \"buffer\": true,\n            \"column\": 21,\n            \"filename\": \"pipeless-tag.tokens.json\",\n            \"isInline\": true,\n            \"line\": 3,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"'on'\",\n          },\n          Object {\n            \"column\": 29,\n            \"filename\": \"pipeless-tag.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"pipeless-tag.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`pre.tokens.json 1`] = `\nObject {\n  \"filename\": \"pre.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"pre.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"pre.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"foo\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pre.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"pre.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"bar\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pre.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"pre.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"baz\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pre.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"pre.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"pre.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"pre.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"pre.tokens.json\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"pre.tokens.json\",\n                  \"line\": 8,\n                  \"type\": \"Text\",\n                  \"val\": \"foo\",\n                },\n                Object {\n                  \"column\": 1,\n                  \"filename\": \"pre.tokens.json\",\n                  \"line\": 9,\n                  \"type\": \"Text\",\n                  \"val\": \"\n\",\n                },\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"pre.tokens.json\",\n                  \"line\": 9,\n                  \"type\": \"Text\",\n                  \"val\": \"bar\",\n                },\n                Object {\n                  \"column\": 1,\n                  \"filename\": \"pre.tokens.json\",\n                  \"line\": 10,\n                  \"type\": \"Text\",\n                  \"val\": \"\n\",\n                },\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"pre.tokens.json\",\n                  \"line\": 10,\n                  \"type\": \"Text\",\n                  \"val\": \"baz\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"pre.tokens.json\",\n            \"isInline\": true,\n            \"line\": 7,\n            \"name\": \"code\",\n            \"selfClosing\": false,\n            \"textOnly\": true,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"pre.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`quotes.tokens.json 1`] = `\nObject {\n  \"filename\": \"quotes.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"quotes.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"quotes.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"\\\\\"foo\\\\\"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"quotes.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"quotes.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"quotes.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"'foo'\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"quotes.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`regression.784.tokens.json 1`] = `\nObject {\n  \"filename\": \"regression.784.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"regression.784.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var url = 'http://www.google.com'\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 1,\n          \"filename\": \"regression.784.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": false,\n          \"name\": \"class\",\n          \"val\": \"'url'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"regression.784.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 6,\n            \"filename\": \"regression.784.tokens.json\",\n            \"isInline\": true,\n            \"line\": 2,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"url.replace('http://', '').replace(/^www\\\\\\\\./, '')\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"regression.784.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`regression.1794.tokens.json 1`] = `\nObject {\n  \"filename\": \"regression.1794.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"file\": Object {\n        \"column\": 9,\n        \"filename\": \"regression.1794.tokens.json\",\n        \"line\": 1,\n        \"path\": \"./auxiliary/1794-extends.pug\",\n        \"type\": \"FileReference\",\n      },\n      \"filename\": \"regression.1794.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Extends\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"regression.1794.tokens.json\",\n      \"line\": 3,\n      \"mode\": \"replace\",\n      \"name\": \"content\",\n      \"nodes\": Array [\n        Object {\n          \"block\": Object {\n            \"filename\": \"regression.1794.tokens.json\",\n            \"line\": 4,\n            \"nodes\": Array [],\n            \"type\": \"Block\",\n          },\n          \"column\": 3,\n          \"file\": Object {\n            \"column\": 11,\n            \"filename\": \"regression.1794.tokens.json\",\n            \"line\": 4,\n            \"path\": \"./auxiliary/1794-include.pug\",\n            \"type\": \"FileReference\",\n          },\n          \"filename\": \"regression.1794.tokens.json\",\n          \"line\": 4,\n          \"type\": \"Include\",\n        },\n      ],\n      \"type\": \"NamedBlock\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`script.whitespace.tokens.json 1`] = `\nObject {\n  \"filename\": \"script.whitespace.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"script.whitespace.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"if (foo) {\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"  \",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"  bar();\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"script.whitespace.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"}\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"script.whitespace.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`scripts.non-js.tokens.json 1`] = `\nObject {\n  \"filename\": \"scripts.non-js.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"scripts.non-js.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": false,\n          \"name\": \"id\",\n          \"val\": \"'user-template'\",\n        },\n        Object {\n          \"column\": 22,\n          \"filename\": \"scripts.non-js.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/template'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"scripts.non-js.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 3,\n                \"filename\": \"scripts.non-js.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": false,\n                \"name\": \"id\",\n                \"val\": \"'user'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"scripts.non-js.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"scripts.non-js.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"scripts.non-js.tokens.json\",\n                        \"line\": 3,\n                        \"type\": \"Text\",\n                        \"val\": \"<%= user.name %>\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"scripts.non-js.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"h1\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"scripts.non-js.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"scripts.non-js.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"<%= user.description %>\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"scripts.non-js.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"scripts.non-js.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"div\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"scripts.non-js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 7,\n          \"filename\": \"scripts.non-js.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": false,\n          \"name\": \"id\",\n          \"val\": \"'user-template'\",\n        },\n        Object {\n          \"column\": 22,\n          \"filename\": \"scripts.non-js.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/template'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"scripts.non-js.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"scripts.non-js.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"if (foo) {\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"scripts.non-js.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"scripts.non-js.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"  bar();\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"scripts.non-js.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"scripts.non-js.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"}\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"scripts.non-js.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`scripts.tokens.json 1`] = `\nObject {\n  \"filename\": \"scripts.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"scripts.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"scripts.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"if (foo) {\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"scripts.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"scripts.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"  bar();\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"scripts.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"scripts.tokens.json\",\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"}\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"scripts.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"scripts.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"buffer\": true,\n            \"column\": 7,\n            \"filename\": \"scripts.tokens.json\",\n            \"isInline\": true,\n            \"line\": 5,\n            \"mustEscape\": false,\n            \"type\": \"Code\",\n            \"val\": \"'foo()'\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"scripts.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"scripts.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"column\": 8,\n            \"filename\": \"scripts.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"foo()\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"scripts.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"scripts.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"scripts.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"scripts.tokens.json\",\n        \"line\": 8,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"scripts.tokens.json\",\n      \"isInline\": false,\n      \"line\": 8,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`self-closing-html.tokens.json 1`] = `\nObject {\n  \"filename\": \"self-closing-html.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"self-closing-html.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"html\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"self-closing-html.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"self-closing-html.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"self-closing-html.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"self-closing-html.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 4,\n                  \"name\": \"br\",\n                  \"selfClosing\": true,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"self-closing-html.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"self-closing-html.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`single-period.tokens.json 1`] = `\nObject {\n  \"filename\": \"single-period.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"single-period.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 6,\n            \"filename\": \"single-period.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \".\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"single-period.tokens.json\",\n      \"isInline\": true,\n      \"line\": 1,\n      \"name\": \"span\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`source.tokens.json 1`] = `\nObject {\n  \"filename\": \"source.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"source.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 9,\n                \"filename\": \"source.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"preload\",\n                \"val\": \"'auto'\",\n              },\n              Object {\n                \"column\": 25,\n                \"filename\": \"source.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"autobuffer\",\n                \"val\": true,\n              },\n              Object {\n                \"column\": 37,\n                \"filename\": \"source.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"controls\",\n                \"val\": true,\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"source.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 12,\n                      \"filename\": \"source.tokens.json\",\n                      \"line\": 3,\n                      \"mustEscape\": true,\n                      \"name\": \"src\",\n                      \"val\": \"'foo'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"source.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"source.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"source\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 12,\n                      \"filename\": \"source.tokens.json\",\n                      \"line\": 4,\n                      \"mustEscape\": true,\n                      \"name\": \"src\",\n                      \"val\": \"'bar'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"source.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"source.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"source\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"source.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"audio\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"source.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`styles.tokens.json 1`] = `\nObject {\n  \"filename\": \"styles.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"styles.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"styles.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"styles.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"body {\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"styles.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"styles.tokens.json\",\n                        \"line\": 5,\n                        \"type\": \"Text\",\n                        \"val\": \"  padding: 50px;\",\n                      },\n                      Object {\n                        \"column\": 1,\n                        \"filename\": \"styles.tokens.json\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"\n\",\n                      },\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"styles.tokens.json\",\n                        \"line\": 6,\n                        \"type\": \"Text\",\n                        \"val\": \"}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"style\",\n                  \"selfClosing\": false,\n                  \"textOnly\": true,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"styles.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"head\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"styles.tokens.json\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 9,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 8,\n                      \"mustEscape\": true,\n                      \"name\": \"style\",\n                      \"val\": \"'color:red;background:green'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 8,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 8,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 9,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 9,\n                      \"mustEscape\": true,\n                      \"name\": \"style\",\n                      \"val\": \"{color: 'red', background: 'green'}\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 9,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 9,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [\n                    Object {\n                      \"column\": 8,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 10,\n                      \"type\": \"AttributeBlock\",\n                      \"val\": \"{style: 'color:red;background:green'}\",\n                    },\n                  ],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 10,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 10,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [\n                    Object {\n                      \"column\": 8,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 11,\n                      \"type\": \"AttributeBlock\",\n                      \"val\": \"{style: {color: 'red', background: 'green'}}\",\n                    },\n                  ],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 11,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 11,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"args\": null,\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 13,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [\n                          Object {\n                            \"column\": 10,\n                            \"filename\": \"styles.tokens.json\",\n                            \"line\": 13,\n                            \"type\": \"AttributeBlock\",\n                            \"val\": \"attributes\",\n                          },\n                        ],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"styles.tokens.json\",\n                          \"line\": 13,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"styles.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 13,\n                        \"name\": \"div\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"call\": false,\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"line\": 12,\n                  \"name\": \"div\",\n                  \"type\": \"Mixin\",\n                },\n                Object {\n                  \"args\": null,\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 10,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 14,\n                      \"mustEscape\": true,\n                      \"name\": \"style\",\n                      \"val\": \"'color:red;background:green'\",\n                    },\n                  ],\n                  \"block\": null,\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"line\": 14,\n                  \"name\": \"div\",\n                  \"type\": \"Mixin\",\n                },\n                Object {\n                  \"args\": null,\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 10,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 15,\n                      \"mustEscape\": true,\n                      \"name\": \"style\",\n                      \"val\": \"{color: 'red', background: 'green'}\",\n                    },\n                  ],\n                  \"block\": null,\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"line\": 15,\n                  \"name\": \"div\",\n                  \"type\": \"Mixin\",\n                },\n                Object {\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 16,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"var bg = 'green';\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 9,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 17,\n                      \"mustEscape\": true,\n                      \"name\": \"style\",\n                      \"val\": \"{color: 'red', background: bg}\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 17,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 17,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [\n                    Object {\n                      \"column\": 8,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 18,\n                      \"type\": \"AttributeBlock\",\n                      \"val\": \"{style: {color: 'red', background: bg}}\",\n                    },\n                  ],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"styles.tokens.json\",\n                    \"line\": 18,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 18,\n                  \"name\": \"div\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"args\": null,\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 10,\n                      \"filename\": \"styles.tokens.json\",\n                      \"line\": 19,\n                      \"mustEscape\": true,\n                      \"name\": \"style\",\n                      \"val\": \"{color: 'red', background: bg}\",\n                    },\n                  ],\n                  \"block\": null,\n                  \"call\": true,\n                  \"column\": 5,\n                  \"filename\": \"styles.tokens.json\",\n                  \"line\": 19,\n                  \"name\": \"div\",\n                  \"type\": \"Mixin\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"styles.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"styles.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`tag.interpolation.tokens.json 1`] = `\nObject {\n  \"filename\": \"tag.interpolation.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"tag.interpolation.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var tag = 'p'\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"tag.interpolation.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var foo = 'bar'\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"tag.interpolation.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"column\": 8,\n            \"filename\": \"tag.interpolation.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"value\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"expr\": \"tag\",\n      \"filename\": \"tag.interpolation.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"selfClosing\": false,\n      \"type\": \"InterpolatedTag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 8,\n          \"filename\": \"tag.interpolation.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": true,\n          \"name\": \"foo\",\n          \"val\": \"'bar'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"tag.interpolation.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"column\": 19,\n            \"filename\": \"tag.interpolation.tokens.json\",\n            \"line\": 6,\n            \"type\": \"Text\",\n            \"val\": \"value\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"expr\": \"tag\",\n      \"filename\": \"tag.interpolation.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"selfClosing\": false,\n      \"type\": \"InterpolatedTag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 21,\n          \"filename\": \"tag.interpolation.tokens.json\",\n          \"line\": 7,\n          \"mustEscape\": true,\n          \"name\": \"something\",\n          \"val\": true,\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"tag.interpolation.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [\n          Object {\n            \"column\": 32,\n            \"filename\": \"tag.interpolation.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"here\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"expr\": \"foo ? 'a' : 'li'\",\n      \"filename\": \"tag.interpolation.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"selfClosing\": false,\n      \"type\": \"InterpolatedTag\",\n    },\n    Object {\n      \"args\": \"icon\",\n      \"block\": Object {\n        \"filename\": \"tag.interpolation.tokens.json\",\n        \"line\": 10,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tag.interpolation.tokens.json\",\n              \"line\": 10,\n              \"nodes\": Array [\n                Object {\n                  \"alternate\": Object {\n                    \"filename\": \"tag.interpolation.tokens.json\",\n                    \"line\": 16,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [\n                          Object {\n                            \"column\": 11,\n                            \"filename\": \"tag.interpolation.tokens.json\",\n                            \"line\": 16,\n                            \"type\": \"AttributeBlock\",\n                            \"val\": \"attributes\",\n                          },\n                        ],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"tag.interpolation.tokens.json\",\n                          \"line\": 16,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [\n                                Object {\n                                  \"column\": 12,\n                                  \"filename\": \"tag.interpolation.tokens.json\",\n                                  \"line\": 17,\n                                  \"mustEscape\": false,\n                                  \"name\": \"class\",\n                                  \"val\": \"'icon'\",\n                                },\n                                Object {\n                                  \"column\": 18,\n                                  \"filename\": \"tag.interpolation.tokens.json\",\n                                  \"line\": 17,\n                                  \"mustEscape\": true,\n                                  \"name\": \"src\",\n                                  \"val\": \"icon\",\n                                },\n                              ],\n                              \"block\": Object {\n                                \"filename\": \"tag.interpolation.tokens.json\",\n                                \"line\": 17,\n                                \"nodes\": Array [],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"tag.interpolation.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 17,\n                              \"name\": \"img\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"tag.interpolation.tokens.json\",\n                              \"line\": 18,\n                              \"type\": \"MixinBlock\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"tag.interpolation.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 16,\n                        \"name\": \"span\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"consequent\": Object {\n                    \"filename\": \"tag.interpolation.tokens.json\",\n                    \"line\": 12,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [\n                          Object {\n                            \"column\": 8,\n                            \"filename\": \"tag.interpolation.tokens.json\",\n                            \"line\": 12,\n                            \"type\": \"AttributeBlock\",\n                            \"val\": \"attributes\",\n                          },\n                        ],\n                        \"attrs\": Array [],\n                        \"block\": Object {\n                          \"filename\": \"tag.interpolation.tokens.json\",\n                          \"line\": 12,\n                          \"nodes\": Array [\n                            Object {\n                              \"attributeBlocks\": Array [],\n                              \"attrs\": Array [\n                                Object {\n                                  \"column\": 12,\n                                  \"filename\": \"tag.interpolation.tokens.json\",\n                                  \"line\": 13,\n                                  \"mustEscape\": false,\n                                  \"name\": \"class\",\n                                  \"val\": \"'icon'\",\n                                },\n                                Object {\n                                  \"column\": 18,\n                                  \"filename\": \"tag.interpolation.tokens.json\",\n                                  \"line\": 13,\n                                  \"mustEscape\": true,\n                                  \"name\": \"src\",\n                                  \"val\": \"icon\",\n                                },\n                              ],\n                              \"block\": Object {\n                                \"filename\": \"tag.interpolation.tokens.json\",\n                                \"line\": 13,\n                                \"nodes\": Array [],\n                                \"type\": \"Block\",\n                              },\n                              \"column\": 9,\n                              \"filename\": \"tag.interpolation.tokens.json\",\n                              \"isInline\": true,\n                              \"line\": 13,\n                              \"name\": \"img\",\n                              \"selfClosing\": false,\n                              \"type\": \"Tag\",\n                            },\n                            Object {\n                              \"column\": 9,\n                              \"filename\": \"tag.interpolation.tokens.json\",\n                              \"line\": 14,\n                              \"type\": \"MixinBlock\",\n                            },\n                          ],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"tag.interpolation.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 12,\n                        \"name\": \"a\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"filename\": \"tag.interpolation.tokens.json\",\n                  \"line\": 11,\n                  \"test\": \"attributes.href\",\n                  \"type\": \"Conditional\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tag.interpolation.tokens.json\",\n            \"isInline\": false,\n            \"line\": 10,\n            \"name\": \"li\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"call\": false,\n      \"column\": 1,\n      \"filename\": \"tag.interpolation.tokens.json\",\n      \"line\": 9,\n      \"name\": \"item\",\n      \"type\": \"Mixin\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"tag.interpolation.tokens.json\",\n        \"line\": 20,\n        \"nodes\": Array [\n          Object {\n            \"args\": \"'contact'\",\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tag.interpolation.tokens.json\",\n              \"line\": 21,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 20,\n                  \"filename\": \"tag.interpolation.tokens.json\",\n                  \"line\": 21,\n                  \"type\": \"Text\",\n                  \"val\": \"Contact\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"tag.interpolation.tokens.json\",\n            \"line\": 21,\n            \"name\": \"item\",\n            \"type\": \"Mixin\",\n          },\n          Object {\n            \"args\": null,\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 9,\n                \"filename\": \"tag.interpolation.tokens.json\",\n                \"line\": 22,\n                \"mustEscape\": true,\n                \"name\": \"href\",\n                \"val\": \"'/contact'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"tag.interpolation.tokens.json\",\n              \"line\": 22,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 26,\n                  \"filename\": \"tag.interpolation.tokens.json\",\n                  \"line\": 22,\n                  \"type\": \"Text\",\n                  \"val\": \"Contact\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"call\": true,\n            \"column\": 3,\n            \"filename\": \"tag.interpolation.tokens.json\",\n            \"line\": 22,\n            \"name\": \"item\",\n            \"type\": \"Mixin\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"tag.interpolation.tokens.json\",\n      \"isInline\": false,\n      \"line\": 20,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`tag-blocks.tokens.json 1`] = `\nObject {\n  \"filename\": \"tag-blocks.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": true,\n      \"column\": 1,\n      \"filename\": \"tag-blocks.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Comment\",\n      \"val\": \" we should not get blocks within blocks\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"tag-blocks.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"column\": 5,\n            \"filename\": \"tag-blocks.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"We have sent an e-mail to \",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tag-blocks.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": true,\n                  \"column\": 39,\n                  \"filename\": \"tag-blocks.tokens.json\",\n                  \"isInline\": true,\n                  \"line\": 3,\n                  \"mustEscape\": true,\n                  \"type\": \"Code\",\n                  \"val\": \"this.props.email\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 33,\n            \"filename\": \"tag-blocks.tokens.json\",\n            \"isInline\": true,\n            \"line\": 3,\n            \"name\": \"strong\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 58,\n            \"filename\": \"tag-blocks.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \".  Please click the link in the e-mail\",\n          },\n          Object {\n            \"buffer\": true,\n            \"column\": 3,\n            \"filename\": \"tag-blocks.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"mustEscape\": true,\n            \"type\": \"Code\",\n            \"val\": \"'  '\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"tag-blocks.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"to confirm your e-mail address.\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"tag-blocks.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`tags.self-closing.tokens.json 1`] = `\nObject {\n  \"filename\": \"tags.self-closing.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"tags.self-closing.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"foo\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"tags.self-closing.tokens.json\",\n                \"line\": 4,\n                \"mustEscape\": true,\n                \"name\": \"bar\",\n                \"val\": \"'baz'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"foo\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"foo\",\n            \"selfClosing\": true,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"tags.self-closing.tokens.json\",\n                \"line\": 6,\n                \"mustEscape\": true,\n                \"name\": \"bar\",\n                \"val\": \"'baz'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"foo\",\n            \"selfClosing\": true,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 7,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 7,\n                  \"filename\": \"tags.self-closing.tokens.json\",\n                  \"line\": 7,\n                  \"type\": \"Text\",\n                  \"val\": \"/\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 7,\n            \"name\": \"foo\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 7,\n                \"filename\": \"tags.self-closing.tokens.json\",\n                \"line\": 8,\n                \"mustEscape\": true,\n                \"name\": \"bar\",\n                \"val\": \"'baz'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 8,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 18,\n                  \"filename\": \"tags.self-closing.tokens.json\",\n                  \"line\": 8,\n                  \"type\": \"Text\",\n                  \"val\": \"/\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 8,\n            \"name\": \"foo\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 9,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"expr\": \"'foo'\",\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 9,\n            \"selfClosing\": true,\n            \"type\": \"InterpolatedTag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 12,\n                \"filename\": \"tags.self-closing.tokens.json\",\n                \"line\": 10,\n                \"mustEscape\": true,\n                \"name\": \"bar\",\n                \"val\": \"'baz'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 10,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"expr\": \"'foo'\",\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 10,\n            \"selfClosing\": true,\n            \"type\": \"InterpolatedTag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 11,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 12,\n                  \"filename\": \"tags.self-closing.tokens.json\",\n                  \"line\": 11,\n                  \"type\": \"Text\",\n                  \"val\": \"/\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"expr\": \"'foo'\",\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 11,\n            \"selfClosing\": false,\n            \"type\": \"InterpolatedTag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 12,\n                \"filename\": \"tags.self-closing.tokens.json\",\n                \"line\": 12,\n                \"mustEscape\": true,\n                \"name\": \"bar\",\n                \"val\": \"'baz'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 12,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 23,\n                  \"filename\": \"tags.self-closing.tokens.json\",\n                  \"line\": 12,\n                  \"type\": \"Text\",\n                  \"val\": \"/\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"expr\": \"'foo'\",\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 12,\n            \"selfClosing\": false,\n            \"type\": \"InterpolatedTag\",\n          },\n          Object {\n            \"buffer\": false,\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"line\": 13,\n            \"type\": \"Comment\",\n            \"val\": \" can have a single space after them\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 14,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 6,\n                  \"filename\": \"tags.self-closing.tokens.json\",\n                  \"line\": 14,\n                  \"type\": \"Text\",\n                  \"val\": \" \",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": true,\n            \"line\": 14,\n            \"name\": \"img\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"buffer\": false,\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"line\": 15,\n            \"type\": \"Comment\",\n            \"val\": \" can have lots of white space after them\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 16,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 7,\n                  \"filename\": \"tags.self-closing.tokens.json\",\n                  \"line\": 16,\n                  \"type\": \"Text\",\n                  \"val\": \"   \",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": true,\n            \"line\": 16,\n            \"name\": \"img\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"tags.self-closing.tokens.json\",\n              \"line\": 17,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"expr\": \"\n    'foo'\n  \",\n            \"filename\": \"tags.self-closing.tokens.json\",\n            \"isInline\": false,\n            \"line\": 17,\n            \"selfClosing\": true,\n            \"type\": \"InterpolatedTag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"tags.self-closing.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"body\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`template.tokens.json 1`] = `\nObject {\n  \"filename\": \"template.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 8,\n          \"filename\": \"template.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/x-template'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"template.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"template.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"template.tokens.json\",\n                    \"line\": 3,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 8,\n                        \"filename\": \"template.tokens.json\",\n                        \"line\": 3,\n                        \"type\": \"Text\",\n                        \"val\": \"{{title}}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"template.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 3,\n                  \"name\": \"h2\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"template.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 7,\n                        \"filename\": \"template.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"{{description}}\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"template.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"name\": \"p\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"template.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"article\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"template.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 8,\n          \"filename\": \"template.tokens.json\",\n          \"line\": 6,\n          \"mustEscape\": true,\n          \"name\": \"type\",\n          \"val\": \"'text/x-template'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"template.tokens.json\",\n        \"line\": 6,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"template.tokens.json\",\n            \"line\": 7,\n            \"type\": \"Text\",\n            \"val\": \"article\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"template.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"template.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"  h2 {{title}}\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"template.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"template.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"  p {{description}}\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"template.tokens.json\",\n      \"isInline\": false,\n      \"line\": 6,\n      \"name\": \"script\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`text.tokens.json 1`] = `\nObject {\n  \"filename\": \"text.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 8,\n          \"filename\": \"text.tokens.json\",\n          \"line\": 1,\n          \"mustEscape\": true,\n          \"name\": \"value\",\n          \"val\": \"''\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"text.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 18,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"-- (selected) --\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"option\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text.tokens.json\",\n        \"line\": 7,\n        \"nodes\": Array [\n          Object {\n            \"column\": 5,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 8,\n            \"type\": \"Text\",\n            \"val\": \"foo\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 9,\n            \"type\": \"Text\",\n            \"val\": \"bar\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 10,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 4,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 10,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 11,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 4,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 11,\n            \"type\": \"Text\",\n            \"val\": \" \",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 12,\n            \"type\": \"Text\",\n            \"val\": \"baz\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 7,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text.tokens.json\",\n        \"line\": 14,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 15,\n            \"type\": \"Text\",\n            \"val\": \"foo\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 16,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 16,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 17,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 17,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 18,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 18,\n            \"type\": \"Text\",\n            \"val\": \"bar\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 19,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 19,\n            \"type\": \"Text\",\n            \"val\": \"baz\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 20,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 20,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 14,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 24,\n      \"type\": \"Text\",\n      \"val\": \"foo\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 25,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 25,\n      \"type\": \"Text\",\n      \"val\": \"\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 26,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 26,\n      \"type\": \"Text\",\n      \"val\": \"\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 27,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 27,\n      \"type\": \"Text\",\n      \"val\": \"bar\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 28,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 28,\n      \"type\": \"Text\",\n      \"val\": \"baz\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 29,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 29,\n      \"type\": \"Text\",\n      \"val\": \"\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text.tokens.json\",\n        \"line\": 30,\n        \"nodes\": Array [\n          Object {\n            \"column\": 5,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 31,\n            \"type\": \"Text\",\n            \"val\": \"foo\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 32,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 32,\n            \"type\": \"Text\",\n            \"val\": \"  bar\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 33,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 33,\n            \"type\": \"Text\",\n            \"val\": \"    baz\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 34,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 34,\n            \"type\": \"Text\",\n            \"val\": \".\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 30,\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text.tokens.json\",\n        \"line\": 36,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 37,\n            \"type\": \"Text\",\n            \"val\": \"foo\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 38,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 38,\n            \"type\": \"Text\",\n            \"val\": \"  bar\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 39,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 39,\n            \"type\": \"Text\",\n            \"val\": \"    baz\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 40,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 40,\n            \"type\": \"Text\",\n            \"val\": \".\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 41,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 1,\n            \"filename\": \"text.tokens.json\",\n            \"line\": 41,\n            \"type\": \"Text\",\n            \"val\": \"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"isInline\": false,\n      \"line\": 36,\n      \"name\": \"pre\",\n      \"selfClosing\": false,\n      \"textOnly\": true,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 43,\n      \"type\": \"Text\",\n      \"val\": \"foo\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 44,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 44,\n      \"type\": \"Text\",\n      \"val\": \"  bar\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 45,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 45,\n      \"type\": \"Text\",\n      \"val\": \"    baz\",\n    },\n    Object {\n      \"column\": 1,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 46,\n      \"type\": \"Text\",\n      \"val\": \"\n\",\n    },\n    Object {\n      \"column\": 3,\n      \"filename\": \"text.tokens.json\",\n      \"line\": 46,\n      \"type\": \"Text\",\n      \"val\": \".\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`text-block.tokens.json 1`] = `\nObject {\n  \"filename\": \"text-block.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text-block.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"column\": 7,\n            \"filename\": \"text-block.tokens.json\",\n            \"line\": 2,\n            \"type\": \"Text\",\n            \"val\": \"Username:\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 9,\n                \"filename\": \"text-block.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": true,\n                \"name\": \"type\",\n                \"val\": \"'text'\",\n              },\n              Object {\n                \"column\": 22,\n                \"filename\": \"text-block.tokens.json\",\n                \"line\": 3,\n                \"mustEscape\": true,\n                \"name\": \"name\",\n                \"val\": \"'user[name]'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"text-block.tokens.json\",\n              \"line\": 3,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"text-block.tokens.json\",\n            \"isInline\": false,\n            \"line\": 3,\n            \"name\": \"input\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text-block.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"label\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"text-block.tokens.json\",\n        \"line\": 5,\n        \"nodes\": Array [\n          Object {\n            \"column\": 7,\n            \"filename\": \"text-block.tokens.json\",\n            \"line\": 5,\n            \"type\": \"Text\",\n            \"val\": \"Password:\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 9,\n                \"filename\": \"text-block.tokens.json\",\n                \"line\": 6,\n                \"mustEscape\": true,\n                \"name\": \"type\",\n                \"val\": \"'text'\",\n              },\n              Object {\n                \"column\": 22,\n                \"filename\": \"text-block.tokens.json\",\n                \"line\": 6,\n                \"mustEscape\": true,\n                \"name\": \"name\",\n                \"val\": \"'user[pass]'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"text-block.tokens.json\",\n              \"line\": 6,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"text-block.tokens.json\",\n            \"isInline\": false,\n            \"line\": 6,\n            \"name\": \"input\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"text-block.tokens.json\",\n      \"isInline\": false,\n      \"line\": 5,\n      \"name\": \"label\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`utf8bom.tokens.json 1`] = `\nObject {\n  \"filename\": \"utf8bom.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"utf8bom.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"column\": 3,\n            \"filename\": \"utf8bom.tokens.json\",\n            \"line\": 1,\n            \"type\": \"Text\",\n            \"val\": \"\\\\\"foo\\\\\"\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"utf8bom.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"p\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`vars.tokens.json 1`] = `\nObject {\n  \"filename\": \"vars.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"vars.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var foo = 'bar'\",\n    },\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"vars.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var list = [1,2,3]\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 3,\n          \"filename\": \"vars.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"class\",\n          \"val\": \"list\",\n        },\n        Object {\n          \"column\": 15,\n          \"filename\": \"vars.tokens.json\",\n          \"line\": 3,\n          \"mustEscape\": true,\n          \"name\": \"id\",\n          \"val\": \"foo\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"vars.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"vars.tokens.json\",\n      \"isInline\": true,\n      \"line\": 3,\n      \"name\": \"a\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`while.tokens.json 1`] = `\nObject {\n  \"filename\": \"while.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"buffer\": false,\n      \"column\": 1,\n      \"filename\": \"while.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"mustEscape\": false,\n      \"type\": \"Code\",\n      \"val\": \"var x = 1;\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"while.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"block\": Object {\n              \"filename\": \"while.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [\n                Object {\n                  \"buffer\": false,\n                  \"column\": 5,\n                  \"filename\": \"while.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 4,\n                  \"mustEscape\": false,\n                  \"type\": \"Code\",\n                  \"val\": \"x++;\",\n                },\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [],\n                  \"block\": Object {\n                    \"filename\": \"while.tokens.json\",\n                    \"line\": 5,\n                    \"nodes\": Array [\n                      Object {\n                        \"buffer\": true,\n                        \"column\": 7,\n                        \"filename\": \"while.tokens.json\",\n                        \"isInline\": true,\n                        \"line\": 5,\n                        \"mustEscape\": true,\n                        \"type\": \"Code\",\n                        \"val\": \"x\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"while.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"name\": \"li\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"while.tokens.json\",\n            \"line\": 3,\n            \"test\": \"x < 10\",\n            \"type\": \"While\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"while.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"ul\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`xml.tokens.json 1`] = `\nObject {\n  \"filename\": \"xml.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"column\": 1,\n      \"filename\": \"xml.tokens.json\",\n      \"line\": 1,\n      \"type\": \"Doctype\",\n      \"val\": \"xml\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [\n        Object {\n          \"column\": 10,\n          \"filename\": \"xml.tokens.json\",\n          \"line\": 2,\n          \"mustEscape\": true,\n          \"name\": \"term\",\n          \"val\": \"'some term'\",\n        },\n      ],\n      \"block\": Object {\n        \"filename\": \"xml.tokens.json\",\n        \"line\": 2,\n        \"nodes\": Array [],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"xml.tokens.json\",\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"category\",\n      \"selfClosing\": true,\n      \"type\": \"Tag\",\n    },\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"xml.tokens.json\",\n        \"line\": 3,\n        \"nodes\": Array [\n          Object {\n            \"column\": 6,\n            \"filename\": \"xml.tokens.json\",\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"http://google.com\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"xml.tokens.json\",\n      \"isInline\": false,\n      \"line\": 3,\n      \"name\": \"link\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`yield.tokens.json 1`] = `\nObject {\n  \"filename\": \"yield.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"yield.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"yield.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"yield.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 14,\n                            \"filename\": \"yield.tokens.json\",\n                            \"line\": 4,\n                            \"mustEscape\": true,\n                            \"name\": \"src\",\n                            \"val\": \"'/caustic.js'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"yield.tokens.json\",\n                          \"line\": 4,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"yield.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 4,\n                        \"name\": \"script\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 14,\n                            \"filename\": \"yield.tokens.json\",\n                            \"line\": 5,\n                            \"mustEscape\": true,\n                            \"name\": \"src\",\n                            \"val\": \"'/app.js'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"yield.tokens.json\",\n                          \"line\": 5,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"yield.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 5,\n                        \"name\": \"script\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"file\": Object {\n                    \"column\": 13,\n                    \"filename\": \"yield.tokens.json\",\n                    \"line\": 3,\n                    \"path\": \"yield-head.pug\",\n                    \"type\": \"FileReference\",\n                  },\n                  \"filename\": \"yield.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Include\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"yield.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`yield-before-conditional.tokens.json 1`] = `\nObject {\n  \"filename\": \"yield-before-conditional.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"yield-before-conditional.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"yield-before-conditional.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"yield-before-conditional.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 14,\n                            \"filename\": \"yield-before-conditional.tokens.json\",\n                            \"line\": 4,\n                            \"mustEscape\": true,\n                            \"name\": \"src\",\n                            \"val\": \"'/caustic.js'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"yield-before-conditional.tokens.json\",\n                          \"line\": 4,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"yield-before-conditional.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 4,\n                        \"name\": \"script\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                      Object {\n                        \"attributeBlocks\": Array [],\n                        \"attrs\": Array [\n                          Object {\n                            \"column\": 14,\n                            \"filename\": \"yield-before-conditional.tokens.json\",\n                            \"line\": 5,\n                            \"mustEscape\": true,\n                            \"name\": \"src\",\n                            \"val\": \"'/app.js'\",\n                          },\n                        ],\n                        \"block\": Object {\n                          \"filename\": \"yield-before-conditional.tokens.json\",\n                          \"line\": 5,\n                          \"nodes\": Array [],\n                          \"type\": \"Block\",\n                        },\n                        \"column\": 7,\n                        \"filename\": \"yield-before-conditional.tokens.json\",\n                        \"isInline\": false,\n                        \"line\": 5,\n                        \"name\": \"script\",\n                        \"selfClosing\": false,\n                        \"type\": \"Tag\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"file\": Object {\n                    \"column\": 13,\n                    \"filename\": \"yield-before-conditional.tokens.json\",\n                    \"line\": 3,\n                    \"path\": \"yield-before-conditional-head.pug\",\n                    \"type\": \"FileReference\",\n                  },\n                  \"filename\": \"yield-before-conditional.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Include\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-before-conditional.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"yield-before-conditional.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`yield-before-conditional-head.tokens.json 1`] = `\nObject {\n  \"filename\": \"yield-before-conditional-head.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"yield-before-conditional-head.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"yield-before-conditional-head.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'/jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"yield-before-conditional-head.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-before-conditional-head.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"yield-before-conditional-head.tokens.json\",\n            \"line\": 3,\n            \"type\": \"YieldBlock\",\n          },\n          Object {\n            \"alternate\": null,\n            \"column\": 3,\n            \"consequent\": Object {\n              \"filename\": \"yield-before-conditional-head.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [\n                Object {\n                  \"attributeBlocks\": Array [],\n                  \"attrs\": Array [\n                    Object {\n                      \"column\": 12,\n                      \"filename\": \"yield-before-conditional-head.tokens.json\",\n                      \"line\": 5,\n                      \"mustEscape\": true,\n                      \"name\": \"src\",\n                      \"val\": \"'/jquery.ui.js'\",\n                    },\n                  ],\n                  \"block\": Object {\n                    \"filename\": \"yield-before-conditional-head.tokens.json\",\n                    \"line\": 5,\n                    \"nodes\": Array [],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"filename\": \"yield-before-conditional-head.tokens.json\",\n                  \"isInline\": false,\n                  \"line\": 5,\n                  \"name\": \"script\",\n                  \"selfClosing\": false,\n                  \"type\": \"Tag\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"filename\": \"yield-before-conditional-head.tokens.json\",\n            \"line\": 4,\n            \"test\": \"false\",\n            \"type\": \"Conditional\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"yield-before-conditional-head.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"head\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`yield-head.tokens.json 1`] = `\nObject {\n  \"filename\": \"yield-head.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"yield-head.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"yield-head.tokens.json\",\n                \"line\": 2,\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'/jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"yield-head.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-head.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"column\": 3,\n            \"filename\": \"yield-head.tokens.json\",\n            \"line\": 3,\n            \"type\": \"YieldBlock\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"yield-head.tokens.json\",\n                \"line\": 4,\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'/jquery.ui.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"yield-head.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-head.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"yield-head.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"head\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`yield-title.tokens.json 1`] = `\nObject {\n  \"filename\": \"yield-title.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"yield-title.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"yield-title.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"block\": Object {\n                    \"filename\": \"yield-title.tokens.json\",\n                    \"line\": 4,\n                    \"nodes\": Array [\n                      Object {\n                        \"column\": 9,\n                        \"filename\": \"yield-title.tokens.json\",\n                        \"line\": 4,\n                        \"type\": \"Text\",\n                        \"val\": \"My Title\",\n                      },\n                    ],\n                    \"type\": \"Block\",\n                  },\n                  \"column\": 5,\n                  \"file\": Object {\n                    \"column\": 13,\n                    \"filename\": \"yield-title.tokens.json\",\n                    \"line\": 3,\n                    \"path\": \"yield-title-head.pug\",\n                    \"type\": \"FileReference\",\n                  },\n                  \"filename\": \"yield-title.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"Include\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-title.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"body\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"yield-title.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"html\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n\nexports[`yield-title-head.tokens.json 1`] = `\nObject {\n  \"filename\": \"yield-title-head.tokens.json\",\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"filename\": \"yield-title-head.tokens.json\",\n        \"line\": 1,\n        \"nodes\": Array [\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [],\n            \"block\": Object {\n              \"filename\": \"yield-title-head.tokens.json\",\n              \"line\": 2,\n              \"nodes\": Array [\n                Object {\n                  \"column\": 5,\n                  \"filename\": \"yield-title-head.tokens.json\",\n                  \"line\": 3,\n                  \"type\": \"YieldBlock\",\n                },\n              ],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-title-head.tokens.json\",\n            \"isInline\": false,\n            \"line\": 2,\n            \"name\": \"title\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"yield-title-head.tokens.json\",\n                \"line\": 4,\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'/jquery.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"yield-title-head.tokens.json\",\n              \"line\": 4,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-title-head.tokens.json\",\n            \"isInline\": false,\n            \"line\": 4,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n          Object {\n            \"attributeBlocks\": Array [],\n            \"attrs\": Array [\n              Object {\n                \"column\": 10,\n                \"filename\": \"yield-title-head.tokens.json\",\n                \"line\": 5,\n                \"mustEscape\": true,\n                \"name\": \"src\",\n                \"val\": \"'/jquery.ui.js'\",\n              },\n            ],\n            \"block\": Object {\n              \"filename\": \"yield-title-head.tokens.json\",\n              \"line\": 5,\n              \"nodes\": Array [],\n              \"type\": \"Block\",\n            },\n            \"column\": 3,\n            \"filename\": \"yield-title-head.tokens.json\",\n            \"isInline\": false,\n            \"line\": 5,\n            \"name\": \"script\",\n            \"selfClosing\": false,\n            \"type\": \"Tag\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"filename\": \"yield-title-head.tokens.json\",\n      \"isInline\": false,\n      \"line\": 1,\n      \"name\": \"head\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-parser/test/__snapshots__/no-unnecessary-blocks.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`no uncessessary blocks should be added 1`] = `\nObject {\n  \"line\": 0,\n  \"nodes\": Array [\n    Object {\n      \"attributeBlocks\": Array [],\n      \"attrs\": Array [],\n      \"block\": Object {\n        \"line\": 2,\n        \"nodes\": Array [\n          Object {\n            \"column\": 5,\n            \"line\": 3,\n            \"type\": \"Text\",\n            \"val\": \"Hello\",\n          },\n          Object {\n            \"column\": 1,\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"\n\",\n          },\n          Object {\n            \"column\": 5,\n            \"line\": 4,\n            \"type\": \"Text\",\n            \"val\": \"World\",\n          },\n        ],\n        \"type\": \"Block\",\n      },\n      \"column\": 1,\n      \"isInline\": false,\n      \"line\": 2,\n      \"name\": \"div\",\n      \"selfClosing\": false,\n      \"type\": \"Tag\",\n    },\n  ],\n  \"type\": \"Block\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-parser/test/cases/attr-es2015.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":1,\"column\":50}},\"val\":\"var avatar = '219b77f9d21de75e81851b6b886057c7'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"div\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":3,\"column\":4},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":3,\"column\":15}},\"val\":\"avatar-div\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":15},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":3,\"column\":16}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":16},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":3,\"column\":88}},\"name\":\"style\",\"mustEscape\":true,\"val\":\"`background-image: url(https://www.gravatar.com/avatar/${avatar})`\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":88},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":3,\"column\":89}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attr-es2015.pug\",\"end\":{\"line\":4,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/attrs-data.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":1,\"column\":30}},\"val\":\"var user = { name: 'tobi' }\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":2,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":4},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":2,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":5},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":2,\"column\":19}},\"name\":\"data-user\",\"mustEscape\":true,\"val\":\"user\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":19},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":2,\"column\":20}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":4},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":3,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":3,\"column\":23}},\"name\":\"data-items\",\"mustEscape\":true,\"val\":\"[1,2,3]\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":23},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":3,\"column\":24}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":4},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":4,\"column\":25}},\"name\":\"data-username\",\"mustEscape\":true,\"val\":\"'tobi'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":25},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":4,\"column\":26}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":5,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":4},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":5,\"column\":42}},\"name\":\"data-escaped\",\"mustEscape\":true,\"val\":\"{message: \\\"Let's rock!\\\"}\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":42},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":5,\"column\":43}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":6,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":4},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":6,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":6,\"column\":60}},\"name\":\"data-ampersand\",\"mustEscape\":true,\"val\":\"{message: \\\"a quote: &quot; this & that\\\"}\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":60},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":6,\"column\":61}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":7,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":4},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":7,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":7,\"column\":5},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":7,\"column\":26}},\"name\":\"data-epoc\",\"mustEscape\":true,\"val\":\"new Date(0)\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":26},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":7,\"column\":27}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/attrs-data.pug\",\"end\":{\"line\":8,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/attrs.js.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"var id = 5\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":2,\"column\":35}},\"val\":\"function answer() { return 42; }\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":3,\"column\":21}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/user/' + id\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":23},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":3,\"column\":37}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'button'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":37},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":3,\"column\":38}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":4,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":4,\"column\":25}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/user/' + id\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":27},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":4,\"column\":45}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'button'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":45},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":4,\"column\":46}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":\"meta\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":5,\"column\":6}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":6},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":5,\"column\":18}},\"name\":\"key\",\"mustEscape\":true,\"val\":\"'answer'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":20},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":5,\"column\":34}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"answer()\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":34},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":5,\"column\":35}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":6,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":6,\"column\":31}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"['class1', 'class2']\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":31},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":6,\"column\":32}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":7,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":7,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":7,\"column\":12}},\"val\":\"tag-class\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":12},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":7,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":7,\"column\":13},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":7,\"column\":41}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"['class1', 'class2']\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":41},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":7,\"column\":42}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":9,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":9,\"column\":21}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/user/' + id\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":9,\"column\":22},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":9,\"column\":36}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'button'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":36},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":9,\"column\":37}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":10,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":10,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":10,\"column\":25}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/user/' + id\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":10,\"column\":26},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":10,\"column\":44}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'button'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":44},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":10,\"column\":45}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":11,\"column\":5}},\"val\":\"meta\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":11,\"column\":6}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":11,\"column\":6},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":11,\"column\":18}},\"name\":\"key\",\"mustEscape\":true,\"val\":\"'answer'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":11,\"column\":19},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":11,\"column\":33}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"answer()\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":11,\"column\":33},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":11,\"column\":34}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":12,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":12,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":12,\"column\":31}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"['class1', 'class2']\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":31},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":12,\"column\":32}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":13,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":13,\"column\":2},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":13,\"column\":12}},\"val\":\"tag-class\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":12},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":13,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":13,\"column\":13},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":13,\"column\":41}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"['class1', 'class2']\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":41},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":13,\"column\":42}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":15,\"column\":4}},\"val\":\"div\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":4},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":15,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":15,\"column\":5},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":15,\"column\":10}},\"name\":\"id\",\"mustEscape\":true,\"val\":\"id\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":10},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":15,\"column\":11}}}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":11},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":15,\"column\":36}},\"val\":\"{foo: 'bar'}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":16,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":16,\"column\":17}},\"val\":\"var bar = null\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":17,\"column\":4}},\"val\":\"div\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":17,\"column\":4},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":17,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":17,\"column\":5},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":17,\"column\":13}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"null\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":17,\"column\":14},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":17,\"column\":21}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"bar\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":17,\"column\":21},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":17,\"column\":22}}}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":17,\"column\":22},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":17,\"column\":47}},\"val\":\"{baz: 'baz'}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":18,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/attrs.js.pug\",\"end\":{\"line\":18,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/attrs.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":1,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":1,\"column\":18}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/contact'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":18},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":1,\"column\":19}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":20},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":1,\"column\":27}},\"val\":\"contact\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":2,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":2,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":2,\"column\":15}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/save'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":15},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":2,\"column\":16}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":16},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":2,\"column\":23}},\"val\":\"button\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":24},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":2,\"column\":28}},\"val\":\"save\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":3,\"column\":6}},\"name\":\"foo\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":3,\"column\":11}},\"name\":\"bar\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":3,\"column\":16}},\"name\":\"baz\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":16},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":3,\"column\":17}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":4,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":4,\"column\":22}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"'foo, bar, baz'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":24},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":4,\"column\":29}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"1\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":29},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":4,\"column\":30}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":5,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":5,\"column\":16}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"'((foo))'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":18},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":5,\"column\":34}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"(1) ? 1 : 0\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":35},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":5,\"column\":36}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"select\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":7,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":7,\"column\":9}},\"val\":\"option\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":9},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":7,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":7,\"column\":10},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":7,\"column\":21}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"'foo'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":7,\"column\":23},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":7,\"column\":31}},\"name\":\"selected\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":31},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":7,\"column\":32}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":33},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":7,\"column\":36}},\"val\":\"Foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":8,\"column\":9}},\"val\":\"option\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":9},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":8,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":8,\"column\":18}},\"name\":\"selected\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":8,\"column\":20},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":8,\"column\":31}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":31},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":8,\"column\":32}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":33},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":8,\"column\":36}},\"val\":\"Bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":9,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":9,\"column\":15}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"\\\"class:\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":15},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":9,\"column\":16}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":10,\"column\":6}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":6},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":10,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":10,\"column\":7},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":10,\"column\":21}},\"name\":\"pattern\",\"mustEscape\":true,\"val\":\"'\\\\\\\\S+'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":21},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":10,\"column\":22}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":12,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":12,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":12,\"column\":18}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/contact'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":18},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":12,\"column\":19}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":20},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":12,\"column\":27}},\"val\":\"contact\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":13,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":13,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":13,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":13,\"column\":15}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/save'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":15},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":13,\"column\":16}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":13,\"column\":16},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":13,\"column\":23}},\"val\":\"button\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":13,\"column\":24},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":13,\"column\":28}},\"val\":\"save\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":14,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":14,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":14,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":14,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":14,\"column\":6}},\"name\":\"foo\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":14,\"column\":7},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":14,\"column\":10}},\"name\":\"bar\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":14,\"column\":11},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":14,\"column\":14}},\"name\":\"baz\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":14,\"column\":14},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":14,\"column\":15}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":15,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":15,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":15,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":15,\"column\":22}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"'foo, bar, baz'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":15,\"column\":23},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":15,\"column\":28}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"1\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":28},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":15,\"column\":29}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":16,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":16,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":16,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":16,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":16,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":16,\"column\":16}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"'((foo))'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":16,\"column\":17},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":16,\"column\":33}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"(1) ? 1 : 0\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":16,\"column\":34},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":16,\"column\":35}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":17,\"column\":7}},\"val\":\"select\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":18,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":18,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":18,\"column\":9}},\"val\":\"option\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":18,\"column\":9},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":18,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":18,\"column\":10},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":18,\"column\":21}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"'foo'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":18,\"column\":22},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":18,\"column\":30}},\"name\":\"selected\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":18,\"column\":30},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":18,\"column\":31}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":18,\"column\":32},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":18,\"column\":35}},\"val\":\"Foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":19,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":19,\"column\":9}},\"val\":\"option\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":9},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":19,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":19,\"column\":10},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":19,\"column\":18}},\"name\":\"selected\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":19,\"column\":19},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":19,\"column\":30}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":30},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":19,\"column\":31}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":32},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":19,\"column\":35}},\"val\":\"Bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":20,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":20,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":20,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":20,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":20,\"column\":15}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"\\\"class:\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":20,\"column\":15},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":20,\"column\":16}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":21,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":21,\"column\":6}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":21,\"column\":6},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":21,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":21,\"column\":7},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":21,\"column\":21}},\"name\":\"pattern\",\"mustEscape\":true,\"val\":\"'\\\\\\\\S+'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":21,\"column\":21},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":21,\"column\":22}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":22,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":22,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":22,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":22,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":22,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":22,\"column\":17}},\"name\":\"terse\",\"mustEscape\":true,\"val\":\"\\\"true\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":22,\"column\":17},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":22,\"column\":18}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":23,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":23,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":23,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":23,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":23,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":23,\"column\":21}},\"name\":\"date\",\"mustEscape\":true,\"val\":\"new Date(0)\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":23,\"column\":21},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":23,\"column\":22}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":25,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":25,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":25,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":25,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":25,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":25,\"column\":8}},\"name\":\"abc\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":26,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":26,\"column\":8}},\"name\":\"def\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":26,\"column\":8},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":26,\"column\":9}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":27,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":27,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":27,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":27,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":27,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":27,\"column\":8}},\"name\":\"abc\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":28,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":28,\"column\":8}},\"name\":\"def\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":28,\"column\":8},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":28,\"column\":9}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":29,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":29,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":29,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":29,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":29,\"column\":8}},\"name\":\"abc\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":30,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":30,\"column\":6}},\"name\":\"def\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":30,\"column\":6},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":30,\"column\":7}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":31,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":31,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":31,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":31,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":31,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":31,\"column\":8}},\"name\":\"abc\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":32,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":32,\"column\":7}},\"name\":\"def\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":32,\"column\":7},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":32,\"column\":8}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":33,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":33,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":33,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":33,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":33,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":33,\"column\":8}},\"name\":\"abc\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":34,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":34,\"column\":6}},\"name\":\"def\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":34,\"column\":6},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":34,\"column\":7}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":35,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":35,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":35,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":35,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":35,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":35,\"column\":8}},\"name\":\"abc\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":36,\"column\":5},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":36,\"column\":8}},\"name\":\"def\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":36,\"column\":8},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":36,\"column\":9}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":38,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":38,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":38,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":38,\"column\":41}},\"val\":\"var attrs = {foo: 'bar', bar: '<baz>'}\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":40,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":40,\"column\":4}},\"val\":\"div\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":40,\"column\":4},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":40,\"column\":22}},\"val\":\"attrs\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":42,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":42,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":42,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":42,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":42,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":42,\"column\":12}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"'foo'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":42,\"column\":13},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":42,\"column\":24}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"\\\"bar\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":42,\"column\":24},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":42,\"column\":25}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":43,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":43,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":43,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":43,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":43,\"column\":2},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":43,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":43,\"column\":3},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":43,\"column\":12}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"'foo'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":43,\"column\":13},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":43,\"column\":24}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":43,\"column\":24},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":43,\"column\":25}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":44,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/attrs.pug\",\"end\":{\"line\":44,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/attrs.unescaped.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":1,\"column\":30}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/x-template'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":30},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":1,\"column\":31}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":2,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":6},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":2,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":7},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":2,\"column\":32}},\"name\":\"id\",\"mustEscape\":false,\"val\":\"'user-<%= user.id %>'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":32},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":2,\"column\":33}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"h1\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":3,\"column\":25}},\"val\":\"<%= user.title %>\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":3,\"column\":25},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":3,\"column\":25}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":3,\"column\":25},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":3,\"column\":25}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":25},\"filename\":\"/cases/attrs.unescaped.pug\",\"end\":{\"line\":3,\"column\":25}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/basic.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"h1\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":3,\"column\":13}},\"val\":\"Title\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":3,\"column\":13}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":3,\"column\":13}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/basic.pug\",\"end\":{\"line\":3,\"column\":13}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/blanks.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":6},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":6,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":6},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":8,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":6},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":8,\"column\":9}},\"val\":\"baz\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/blanks.pug\",\"end\":{\"line\":9,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/block-code.tokens.json",
    "content": "{\"type\":\"blockcode\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":1,\"column\":2}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":2},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":1,\"column\":2}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":2,\"column\":32}},\"val\":\"list = [\\\"uno\\\", \\\"dos\\\", \\\"tres\\\",\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":3,\"column\":38}},\"val\":\"        \\\"cuatro\\\", \\\"cinco\\\", \\\"seis\\\"];\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":38},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":3,\"column\":38}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":4,\"column\":70}},\"val\":\" Without a block, the element is accepted and no code is generated\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"blockcode\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":5,\"column\":2}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":6,\"column\":18}},\"val\":\"item\",\"key\":null,\"code\":\"list\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":7,\"column\":3}},\"val\":2}\n{\"type\":\"blockcode\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":7,\"column\":4}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":7,\"column\":4},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":7,\"column\":4}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":8,\"column\":28}},\"val\":\"string = item.charAt(0)\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":9,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":9,\"column\":5}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":10,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":5},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":10,\"column\":23}},\"val\":\"  .toUpperCase() +\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":11,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":11,\"column\":19}},\"val\":\"item.slice(1);\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":11,\"column\":19},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":11,\"column\":19}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":12,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":12,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":12,\"column\":5},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":12,\"column\":13}},\"val\":\"string\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/block-code.pug\",\"end\":{\"line\":13,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/block-expansion.shorthands.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":1,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":5},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":15}},\"val\":\"list-item\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":2,\"column\":15},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":17}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":17},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":21}},\"val\":\"foo\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":2,\"column\":21},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":23}}}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":2,\"column\":23},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":27}},\"val\":\"bar\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":28},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":31}},\"val\":\"baz\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":2,\"column\":31},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":31}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":31},\"filename\":\"/cases/block-expansion.shorthands.pug\",\"end\":{\"line\":2,\"column\":31}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/block-expansion.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":1,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"li\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":2,\"column\":5},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":7},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":8}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":17}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'#'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":17},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":18}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":19},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":2,\"column\":22}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":\"li\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":7},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":8}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":9},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":17}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'#'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":17},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":18}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":19},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":3,\"column\":22}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":5,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":5,\"column\":6}},\"val\":\"baz\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":6},\"filename\":\"/cases/block-expansion.pug\",\"end\":{\"line\":5,\"column\":6}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/blockquote.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"figure\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":2,\"column\":13}},\"val\":\"blockquote\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":7},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":3,\"column\":123}},\"val\":\"Try to define yourself by what you do, and you&#8217;ll burnout every time. You are. That is enough. I rest in that.\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"figcaption\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":14},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":4,\"column\":47}},\"val\":\"from @thefray at 1:43pm on May 10\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":47},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":4,\"column\":47}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":47},\"filename\":\"/cases/blockquote.pug\",\"end\":{\"line\":4,\"column\":47}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/blocks-in-blocks.tokens.json",
    "content": "{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":1,\"column\":48}},\"val\":\"./auxiliary/blocks-in-blocks-layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":3,\"column\":11}},\"val\":\"body\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":\"h1\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":6},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":4,\"column\":12}},\"val\":\"Page 2\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/blocks-in-blocks.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/blocks-in-if.tokens.json",
    "content": "{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":1,\"column\":49}},\"val\":\" see https://github.com/pugjs/pug/issues/1589\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":3,\"column\":17}},\"val\":\"var ajax = true\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":5,\"column\":12}},\"val\":\"if( ajax )\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":6,\"column\":5}},\"val\":4}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":6,\"column\":46}},\"val\":\" return only contents if ajax requests\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":7,\"column\":5}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":7,\"column\":5},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":7,\"column\":19}},\"val\":\"contents\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":8,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":9},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":8,\"column\":10}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":11},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":8,\"column\":24}},\"val\":\"ajax contents\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":10,\"column\":6}},\"val\":\"else\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":11,\"column\":5}},\"val\":4}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":11,\"column\":24}},\"val\":\" return all html\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":12,\"column\":5}}}\n{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":12,\"column\":5},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":12,\"column\":17}},\"val\":\"html\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":13,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":5},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":13,\"column\":9}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":14,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":9},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":14,\"column\":13}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":15,\"column\":13}},\"val\":12}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":15,\"column\":13},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":15,\"column\":17}},\"val\":\"meta\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":17},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":15,\"column\":18}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":15,\"column\":19},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":15,\"column\":33}},\"name\":\"charset\",\"mustEscape\":true,\"val\":\"'utf8'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":34},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":15,\"column\":35}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":16,\"column\":13}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":13},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":16,\"column\":18}},\"val\":\"title\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":16,\"column\":19},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":16,\"column\":25}},\"val\":\"sample\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":17,\"column\":13}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":13},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":17,\"column\":17}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":18,\"column\":17}},\"val\":16}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":18,\"column\":17},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":18,\"column\":31}},\"val\":\"contents\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":19,\"column\":21}},\"val\":20}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":21},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":19,\"column\":22}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":23},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":19,\"column\":35}},\"val\":\"all contetns\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/blocks-in-if.pug\",\"end\":{\"line\":20,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/case-blocks.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":3,\"column\":22}},\"val\":\"var friends = 1\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"case\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":4,\"column\":17}},\"val\":\"friends\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":5,\"column\":7}},\"val\":6}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"0\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":6,\"column\":10}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":11},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":6,\"column\":30}},\"val\":\"you have no friends\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":7,\"column\":7}}}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":7,\"column\":7},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":7,\"column\":13}},\"val\":\"1\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":8,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":9},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":8,\"column\":10}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":11},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":8,\"column\":28}},\"val\":\"you have a friend\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":9,\"column\":7}}}\n{\"type\":\"default\",\"loc\":{\"start\":{\"line\":9,\"column\":7},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":9,\"column\":14}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":9},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":10}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":11},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":20}},\"val\":\"you have \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":10,\"column\":20},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":30}},\"mustEscape\":true,\"buffer\":true,\"val\":\"friends\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":30},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":38}},\"val\":\" friends\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":38},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":38}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":38},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":38}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":38},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":38}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":38},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":38}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":10,\"column\":38},\"filename\":\"/cases/case-blocks.pug\",\"end\":{\"line\":10,\"column\":38}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/case.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":3,\"column\":22}},\"val\":\"var friends = 1\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"case\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":4,\"column\":17}},\"val\":\"friends\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":5,\"column\":7}},\"val\":6}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"0\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":5,\"column\":15}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":15},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":5,\"column\":16}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":17},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":5,\"column\":36}},\"val\":\"you have no friends\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":6,\"column\":7}}}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":6,\"column\":13}},\"val\":\"1\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":6,\"column\":13},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":6,\"column\":15}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":15},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":6,\"column\":16}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":17},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":6,\"column\":34}},\"val\":\"you have a friend\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":7,\"column\":7}}}\n{\"type\":\"default\",\"loc\":{\"start\":{\"line\":7,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":7,\"column\":14}}}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":7,\"column\":14},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":7,\"column\":16}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":16},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":7,\"column\":17}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":18},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":7,\"column\":27}},\"val\":\"you have \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":7,\"column\":27},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":7,\"column\":37}},\"mustEscape\":true,\"buffer\":true,\"val\":\"friends\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":37},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":7,\"column\":45}},\"val\":\" friends\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":8,\"column\":5}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":8,\"column\":22}},\"val\":\"var friends = 0\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":9,\"column\":5}}}\n{\"type\":\"case\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":9,\"column\":17}},\"val\":\"friends\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":10,\"column\":7}},\"val\":6}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":10,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":10,\"column\":13}},\"val\":\"0\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":11,\"column\":7}}}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":11,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":11,\"column\":13}},\"val\":\"1\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":12,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":9},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":12,\"column\":10}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":11},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":12,\"column\":36}},\"val\":\"you have very few friends\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":13,\"column\":7}}}\n{\"type\":\"default\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":13,\"column\":14}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":14,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":9},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":14,\"column\":10}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":14,\"column\":11},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":14,\"column\":20}},\"val\":\"you have \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":14,\"column\":20},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":14,\"column\":30}},\"mustEscape\":true,\"buffer\":true,\"val\":\"friends\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":14,\"column\":30},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":14,\"column\":38}},\"val\":\" friends\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":16,\"column\":5}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":16,\"column\":5}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":16,\"column\":5},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":16,\"column\":27}},\"val\":\"var friend = 'Tim:G'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":17,\"column\":5}}}\n{\"type\":\"case\",\"loc\":{\"start\":{\"line\":17,\"column\":5},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":17,\"column\":16}},\"val\":\"friend\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":18,\"column\":7}},\"val\":6}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":18,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":18,\"column\":19}},\"val\":\"'Tim:G'\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":18,\"column\":19},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":18,\"column\":24}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":18,\"column\":24},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":18,\"column\":25}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":18,\"column\":26},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":18,\"column\":44}},\"val\":\"Friend is a string\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":19,\"column\":7}}}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":19,\"column\":7},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":19,\"column\":22}},\"val\":\"{tim: 'g'}\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":19,\"column\":22},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":19,\"column\":24}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":24},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":19,\"column\":25}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":26},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":19,\"column\":45}},\"val\":\"Friend is an object\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/case.pug\",\"end\":{\"line\":20,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/classes-empty.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":2},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":1,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":1,\"column\":11}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"''\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":11},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":1,\"column\":12}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":2,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":2},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":2,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":2,\"column\":13}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"null\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":13},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":2,\"column\":14}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":2},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":3,\"column\":18}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"undefined\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":18},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":3,\"column\":19}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":19},\"filename\":\"/cases/classes-empty.pug\",\"end\":{\"line\":3,\"column\":19}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/classes.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":2},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":1,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":1,\"column\":30}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"['foo', 'bar', 'baz']\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":30},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":1,\"column\":31}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":5,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":5,\"column\":2},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":5,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":6},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":5,\"column\":18}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":18},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":5,\"column\":19}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":5,\"column\":19},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":5,\"column\":23}},\"val\":\"baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":9,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":9,\"column\":2},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":9,\"column\":14}},\"val\":\"foo-bar_baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":11,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":11,\"column\":2},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":11,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":11,\"column\":3},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":11,\"column\":43}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"{foo: true, bar: false, baz: true}\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":11,\"column\":43},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":11,\"column\":44}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":13,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":13,\"column\":2},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":13,\"column\":7}},\"val\":\"-foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":14,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":14,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":14,\"column\":2},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":14,\"column\":7}},\"val\":\"3foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/classes.pug\",\"end\":{\"line\":15,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/code.conditionals.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":2,\"column\":12}},\"val\":\"if (true)\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":3,\"column\":8}},\"val\":\"foo\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\"else\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":5,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":5,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":7,\"column\":14}},\"val\":\"if (true) {\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":8,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":8,\"column\":8}},\"val\":\"foo\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":9,\"column\":11}},\"val\":\"} else {\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":10,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":10,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":10,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":11,\"column\":4}},\"val\":\"}\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":13,\"column\":8}},\"val\":\"true\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":14,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":14,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":14,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":14,\"column\":8}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":15,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":15,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":15,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":15,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":15,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":16,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":16,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":16,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":16,\"column\":8}},\"val\":\"baz\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":17,\"column\":5}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":18,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":18,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":18,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":18,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":18,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":20,\"column\":12}},\"val\":\"!(true)\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":21,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":21,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":21,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":21,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":21,\"column\":8}},\"val\":\"foo\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":22,\"column\":1}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":22,\"column\":5}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":23,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":23,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":23,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":23,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":23,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":25,\"column\":1}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":25,\"column\":12}},\"val\":\"'nested'\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":26,\"column\":3}},\"val\":2}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":26,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":26,\"column\":13}},\"val\":\"'works'\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":27,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":27,\"column\":5},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":27,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":27,\"column\":7},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":27,\"column\":10}},\"val\":\"yay\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":29,\"column\":23}},\"val\":\" allow empty blocks\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":30,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":30,\"column\":1}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":30,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":30,\"column\":9}},\"val\":\"false\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":31,\"column\":1}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":31,\"column\":5}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":32,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":32,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":32,\"column\":7}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":33,\"column\":1}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":33,\"column\":8}},\"val\":\"true\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":34,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":34,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":34,\"column\":7}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":35,\"column\":1}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":35,\"column\":5}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":36,\"column\":1}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":36,\"column\":6}},\"val\":\"bing\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":38,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":38,\"column\":1}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":38,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":38,\"column\":9}},\"val\":\"false\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":39,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":39,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":39,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":39,\"column\":8}},\"val\":\"bing\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":40,\"column\":1}}}\n{\"type\":\"else-if\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":40,\"column\":14}},\"val\":\"false\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":41,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":41,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":41,\"column\":7}},\"val\":\"bar\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":42,\"column\":1}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":42,\"column\":5}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":43,\"column\":1},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":43,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":43,\"column\":3},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":43,\"column\":7}},\"val\":\"foo\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":43,\"column\":7},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":43,\"column\":7}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":43,\"column\":7},\"filename\":\"/cases/code.conditionals.pug\",\"end\":{\"line\":43,\"column\":7}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/code.escape.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/code.escape.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":2},\"filename\":\"/cases/code.escape.pug\",\"end\":{\"line\":1,\"column\":14}},\"val\":\"'<script>'\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.escape.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.escape.pug\",\"end\":{\"line\":2,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":2},\"filename\":\"/cases/code.escape.pug\",\"end\":{\"line\":2,\"column\":15}},\"val\":\"'<script>'\",\"mustEscape\":false,\"buffer\":true}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":15},\"filename\":\"/cases/code.escape.pug\",\"end\":{\"line\":2,\"column\":15}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/code.iteration.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":2,\"column\":22}},\"val\":\"var items = [1,2,3]\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":5,\"column\":34}},\"val\":\"items.forEach(function(item){\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":6,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":6,\"column\":13}},\"val\":\"item\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":\"})\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":9,\"column\":22}},\"val\":\"var items = [1,2,3]\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":11,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":12,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":12,\"column\":23}},\"val\":\"item\",\"key\":\"i\",\"code\":\"items\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":13,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":5},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":13,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":13,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":13,\"column\":8},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":13,\"column\":25}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'item-' + i\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":25},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":13,\"column\":26}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":13,\"column\":26},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":13,\"column\":32}},\"val\":\"item\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":15,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":16,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":16,\"column\":3},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":16,\"column\":24}},\"val\":\"item\",\"key\":\"i\",\"code\":\"items\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":17,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":5},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":17,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":17,\"column\":7},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":17,\"column\":13}},\"val\":\"item\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":19,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":19,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":19,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":20,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":20,\"column\":3},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":20,\"column\":22}},\"val\":\"$item\",\"key\":null,\"code\":\"items\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":21,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":21,\"column\":5},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":21,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":21,\"column\":7},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":21,\"column\":14}},\"val\":\"$item\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":23,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":23,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":23,\"column\":23}},\"val\":\"var nums = [1, 2, 3]\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":24,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":24,\"column\":32}},\"val\":\"var letters = ['a', 'b', 'c']\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":26,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":26,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":27,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":27,\"column\":3},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":27,\"column\":19}},\"val\":\"l\",\"key\":null,\"code\":\"letters\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":28,\"column\":5}},\"val\":4}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":28,\"column\":5},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":28,\"column\":18}},\"val\":\"n\",\"key\":null,\"code\":\"nums\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":29,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":29,\"column\":7},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":29,\"column\":9}},\"val\":\"li\"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":29,\"column\":10},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":29,\"column\":14}},\"mustEscape\":true,\"buffer\":true,\"val\":\"n\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":29,\"column\":14},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":29,\"column\":16}},\"val\":\": \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":29,\"column\":16},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":29,\"column\":20}},\"mustEscape\":true,\"buffer\":true,\"val\":\"l\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":31,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":31,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":31,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":31,\"column\":16}},\"val\":\"var count = 1\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":32,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":32,\"column\":66}},\"val\":\"var counter = function() { return [count++, count++, count++] }\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":33,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":33,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":34,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":34,\"column\":3},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":34,\"column\":21}},\"val\":\"n\",\"key\":null,\"code\":\"counter()\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":35,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":35,\"column\":5},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":35,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":35,\"column\":8},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":35,\"column\":12}},\"mustEscape\":true,\"buffer\":true,\"val\":\"n\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":36,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":36,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/code.iteration.pug\",\"end\":{\"line\":36,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/code.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":1,\"column\":8}},\"val\":\"null\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":2,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":2,\"column\":13}},\"val\":\"undefined\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":3,\"column\":6}},\"val\":\"''\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":4,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":\"0\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":5,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":5,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"false\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":6,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":6,\"column\":11}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"null\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":11},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":6,\"column\":12}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":7,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":7,\"column\":16}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"undefined\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":16},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":7,\"column\":17}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":8,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":8,\"column\":9}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"''\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":9},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":8,\"column\":10}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":9,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":9,\"column\":8}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"0\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":8},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":9,\"column\":9}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":10,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":2},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":10,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":10,\"column\":12}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"false\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":12},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":10,\"column\":13}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":10,\"column\":13},\"filename\":\"/cases/code.pug\",\"end\":{\"line\":10,\"column\":13}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/comments-in-case.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"html\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":3}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":4},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":4,\"column\":20}},\"val\":\"var s = 'this'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":5,\"column\":4}}}\n{\"type\":\"case\",\"loc\":{\"start\":{\"line\":5,\"column\":4},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":5,\"column\":10}},\"val\":\"s\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":6,\"column\":6}},\"val\":5}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":6,\"column\":6},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":6,\"column\":17}},\"val\":\" Comment\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":7,\"column\":6}}}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":7,\"column\":6},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":7,\"column\":17}},\"val\":\"'this'\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":8,\"column\":8}},\"val\":7}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":8},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":8,\"column\":9}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":8,\"column\":20}},\"val\":\"It's this!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":9,\"column\":6}}}\n{\"type\":\"when\",\"loc\":{\"start\":{\"line\":9,\"column\":6},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":9,\"column\":17}},\"val\":\"'that'\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":8}},\"val\":7}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":9}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":10},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":20}},\"val\":\"It's that!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":20},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":20}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":20},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":20}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":20},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":20}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":20},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":20}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":10,\"column\":20},\"filename\":\"/cases/comments-in-case.pug\",\"end\":{\"line\":10,\"column\":20}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/comments.source.tokens.json",
    "content": "{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":1,\"column\":4}},\"val\":\"\",\"buffer\":false}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":4},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":1,\"column\":4}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"s/s.\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":3,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":4,\"column\":35}},\"val\":\" test/cases/comments.source.pug\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":6,\"column\":4}},\"val\":\"\",\"buffer\":false}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":6,\"column\":4},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":6,\"column\":4}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":7,\"column\":33}},\"val\":\"test/cases/comments.source.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":8,\"column\":7}},\"val\":\"when\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":9,\"column\":5}},\"val\":\"()\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":9,\"column\":5}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/comments.source.pug\",\"end\":{\"line\":9,\"column\":5}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/comments.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\" foo\",\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\" bar\",\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":6},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"one\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\" baz\",\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":7,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":6},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":7,\"column\":9}},\"val\":\"two\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":9,\"column\":3}},\"val\":\"\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":10,\"column\":5}},\"val\":\"ul\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":11,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":11,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":11,\"column\":11}},\"val\":\"  li foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":12,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":13,\"column\":9}},\"val\":\" block\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":13,\"column\":9},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":13,\"column\":9}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":14,\"column\":19}},\"val\":\"// inline follow\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":15,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":15,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":15,\"column\":11}},\"val\":\"li three\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":16,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":16,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":16,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":17,\"column\":9}},\"val\":\" block\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":17,\"column\":9},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":17,\"column\":9}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":18,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":18,\"column\":29}},\"val\":\"// inline followed by tags\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":19,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":19,\"column\":5}},\"val\":\"ul\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":20,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":20,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":20,\"column\":12}},\"val\":\"  li four\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":21,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":21,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":21,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":22,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":22,\"column\":13}},\"val\":\"if IE lt 9\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":22,\"column\":13},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":22,\"column\":13}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":23,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":23,\"column\":12}},\"val\":\"// inline\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":24,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":24,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":24,\"column\":25}},\"val\":\"script(src='/lame.js')\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":25,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":25,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":25,\"column\":16}},\"val\":\"// end-inline\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":26,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":26,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":26,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":27,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":27,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":27,\"column\":3},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":27,\"column\":7}},\"val\":\"five\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":29,\"column\":5}},\"val\":\"foo\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":29,\"column\":6},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":29,\"column\":22}},\"val\":\"// not a comment\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":29,\"column\":22},\"filename\":\"/cases/comments.pug\",\"end\":{\"line\":29,\"column\":22}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/doctype.custom.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/doctype.custom.pug\",\"end\":{\"line\":1,\"column\":21}},\"val\":\"custom stuff\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":1,\"column\":21},\"filename\":\"/cases/doctype.custom.pug\",\"end\":{\"line\":1,\"column\":21}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/doctype.default.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":1,\"column\":8}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\"h1\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":8},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"Title\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":4,\"column\":13}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":4,\"column\":13}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/doctype.default.pug\",\"end\":{\"line\":4,\"column\":13}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/doctype.keyword.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/doctype.keyword.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"html\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":1,\"column\":13},\"filename\":\"/cases/doctype.keyword.pug\",\"end\":{\"line\":1,\"column\":13}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/each.else.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":2,\"column\":17}},\"val\":\"var users = []\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":5,\"column\":20}},\"val\":\"user\",\"key\":null,\"code\":\"users\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":6,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":6,\"column\":18}},\"val\":\"user.name\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":8,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":8,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":8},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":8,\"column\":17}},\"val\":\"no users!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":11,\"column\":70}},\"val\":\"var users = [{ name: 'tobi', friends: ['loki'] }, { name: 'loki' }]\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":13,\"column\":9}},\"val\":\"users\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":14,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":14,\"column\":5}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":15,\"column\":5}},\"val\":4}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":15,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":15,\"column\":22}},\"val\":\"user\",\"key\":null,\"code\":\"users\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":16,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":7},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":16,\"column\":9}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":16,\"column\":9},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":16,\"column\":20}},\"val\":\"user.name\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":17,\"column\":5}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":17,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":17,\"column\":9}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":18,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":18,\"column\":7},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":18,\"column\":9}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":18,\"column\":10},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":18,\"column\":19}},\"val\":\"no users!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":20,\"column\":39}},\"val\":\"var user = { name: 'tobi', age: 10 }\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":22,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":22,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":23,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":23,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":23,\"column\":24}},\"val\":\"val\",\"key\":\"key\",\"code\":\"user\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":24,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":24,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":24,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":24,\"column\":8},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":24,\"column\":14}},\"mustEscape\":true,\"buffer\":true,\"val\":\"key\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":24,\"column\":14},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":24,\"column\":16}},\"val\":\": \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":24,\"column\":16},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":24,\"column\":22}},\"mustEscape\":true,\"buffer\":true,\"val\":\"val\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":25,\"column\":3}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":25,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":25,\"column\":7}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":26,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":26,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":26,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":26,\"column\":8},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":26,\"column\":28}},\"val\":\"user has no details!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":28,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":28,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":28,\"column\":16}},\"val\":\"var user = {}\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":30,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":30,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":30,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":30,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":31,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":31,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":31,\"column\":25}},\"val\":\"prop\",\"key\":\"key\",\"code\":\"user\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":32,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":32,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":32,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":32,\"column\":8},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":32,\"column\":14}},\"mustEscape\":true,\"buffer\":true,\"val\":\"key\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":32,\"column\":14},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":32,\"column\":16}},\"val\":\": \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":32,\"column\":16},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":32,\"column\":22}},\"mustEscape\":true,\"buffer\":true,\"val\":\"val\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":33,\"column\":3}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":33,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":33,\"column\":7}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":34,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":34,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":34,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":34,\"column\":8},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":34,\"column\":28}},\"val\":\"user has no details!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":36,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":36,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":36,\"column\":33}},\"val\":\"var user = Object.create(null)\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":37,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":37,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":37,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":37,\"column\":21}},\"val\":\"user.name = 'tobi'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":39,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":39,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":39,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":39,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":40,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":40,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":40,\"column\":24}},\"val\":\"val\",\"key\":\"key\",\"code\":\"user\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":41,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":41,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":41,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":41,\"column\":8},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":41,\"column\":14}},\"mustEscape\":true,\"buffer\":true,\"val\":\"key\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":41,\"column\":14},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":41,\"column\":16}},\"val\":\": \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":41,\"column\":16},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":41,\"column\":22}},\"mustEscape\":true,\"buffer\":true,\"val\":\"val\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":42,\"column\":3}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":42,\"column\":3},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":42,\"column\":7}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":43,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":43,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":43,\"column\":5},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":43,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":43,\"column\":8},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":43,\"column\":28}},\"val\":\"user has no details!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":44,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":44,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/each.else.pug\",\"end\":{\"line\":44,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/escape-chars.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/escape-chars.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/escape-chars.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/escape-chars.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/escape-chars.pug\",\"end\":{\"line\":2,\"column\":18}},\"val\":\"var re = /\\\\d+/;\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":2,\"column\":18},\"filename\":\"/cases/escape-chars.pug\",\"end\":{\"line\":2,\"column\":18}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":18},\"filename\":\"/cases/escape-chars.pug\",\"end\":{\"line\":2,\"column\":18}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/escape-test.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"html\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":3,\"column\":9}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":9},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":4,\"column\":14}},\"val\":\"title\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":15},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":4,\"column\":26}},\"val\":\"escape-test\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":6,\"column\":17}},\"val\":\"textarea\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":7,\"column\":13}},\"val\":12}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":7,\"column\":13},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":7,\"column\":108}},\"val\":\"var txt = '<param name=\\\"flashvars\\\" value=\\\"a=&quot;value_a&quot;&b=&quot;value_b&quot;&c=3\\\"/>'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":8,\"column\":13}}}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":8,\"column\":15},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":8,\"column\":21}},\"mustEscape\":true,\"buffer\":true,\"val\":\"txt\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/escape-test.pug\",\"end\":{\"line\":9,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/escaping-class-attribute.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":1,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":4},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":1,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":5},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":1,\"column\":22}},\"name\":\"attr\",\"mustEscape\":true,\"val\":\"\\\"<%= bar %>\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":22},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":1,\"column\":23}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":2,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":4},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":2,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":5},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":2,\"column\":23}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"\\\"<%= bar %>\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":23},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":2,\"column\":24}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":4},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":3,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":3,\"column\":23}},\"name\":\"attr\",\"mustEscape\":false,\"val\":\"\\\"<%= bar %>\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":23},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":3,\"column\":24}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":4},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":4,\"column\":24}},\"name\":\"class\",\"mustEscape\":false,\"val\":\"\\\"<%= bar %>\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":24},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":4,\"column\":25}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":5,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":4},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":5,\"column\":33}},\"name\":\"class\",\"mustEscape\":false,\"val\":\"\\\"<%= bar %> lol rofl\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":33},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":5,\"column\":34}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":6,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":4},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":6,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":6,\"column\":45}},\"name\":\"class\",\"mustEscape\":false,\"val\":\"\\\"<%= bar %> lol rofl <%= lmao %>\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":45},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":6,\"column\":46}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/escaping-class-attribute.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filter-in-include.tokens.json",
    "content": "{\"type\":\"include\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filter-in-include.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/filter-in-include.pug\",\"end\":{\"line\":1,\"column\":42}},\"val\":\"./auxiliary/filter-in-include.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filter-in-include.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filter-in-include.pug\",\"end\":{\"line\":2,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters-empty.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":1,\"column\":41}},\"val\":\"var users = [{ name: 'tobi', age: 2 }]\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":3,\"column\":9}},\"val\":\"fb:users\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":4,\"column\":20}},\"val\":\"user\",\"key\":null,\"code\":\"users\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":5,\"column\":12}},\"val\":\"fb:user\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":12},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":5,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":5,\"column\":25}},\"name\":\"age\",\"mustEscape\":true,\"val\":\"user.age\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":25},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":5,\"column\":26}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":6}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":6,\"column\":13}},\"val\":\"cdata\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters-empty.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.coffeescript.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":1,\"column\":30}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/javascript'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":30},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":1,\"column\":31}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":2,\"column\":17}},\"val\":\"coffee-script\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":2,\"column\":17},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":2,\"column\":17}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":3,\"column\":18}},\"val\":\"regexp = /\\\\n/\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":18},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":3,\"column\":18}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":4,\"column\":17}},\"val\":\"coffee-script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":17},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":4,\"column\":18}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":18},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":4,\"column\":29}},\"name\":\"minify\",\"mustEscape\":true,\"val\":\"true\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":29},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":4,\"column\":30}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":4,\"column\":30},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":4,\"column\":30}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":5,\"column\":11}},\"val\":\"math =\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":6,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":6,\"column\":39}},\"val\":\"  square: (value) -> value * value\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":6,\"column\":39},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":6,\"column\":39}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":39},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":6,\"column\":39}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":39},\"filename\":\"/cases/filters.coffeescript.pug\",\"end\":{\"line\":6,\"column\":39}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.custom.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":3,\"column\":12}},\"val\":\"custom\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":12},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":3,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":3,\"column\":22}},\"name\":\"opt\",\"mustEscape\":true,\"val\":\"'val'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":23},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":3,\"column\":28}},\"name\":\"num\",\"mustEscape\":true,\"val\":\"2\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":28},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":3,\"column\":29}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":29},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":3,\"column\":29}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"Line 1\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"Line 2\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":6,\"column\":1}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":7,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":7},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":7,\"column\":13}},\"val\":\"Line 4\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":7,\"column\":13},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":7,\"column\":13}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":13},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":7,\"column\":13}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":13},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":7,\"column\":13}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":13},\"filename\":\"/cases/filters.custom.pug\",\"end\":{\"line\":7,\"column\":13}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.include.custom.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":3,\"column\":8}},\"val\":\"pre\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":14}}}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":4,\"column\":14},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":21}},\"val\":\"custom\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":21},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":22}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":22},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":31}},\"name\":\"opt\",\"mustEscape\":true,\"val\":\"'val'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":32},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":37}},\"name\":\"num\",\"mustEscape\":true,\"val\":\"2\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":37},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":38}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":4,\"column\":39},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":4,\"column\":65}},\"val\":\"filters.include.custom.pug\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.include.custom.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.include.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":3,\"column\":12},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":3,\"column\":24}},\"val\":\"markdown-it\"}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":3,\"column\":25},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":3,\"column\":32}},\"val\":\"some.md\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"script\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":5,\"column\":7}},\"val\":6}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":5,\"column\":14}}}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":5,\"column\":14},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":5,\"column\":28}},\"val\":\"coffee-script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":28},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":5,\"column\":29}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":29},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":5,\"column\":40}},\"name\":\"minify\",\"mustEscape\":true,\"val\":\"true\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":40},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":5,\"column\":41}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":5,\"column\":42},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":5,\"column\":70}},\"val\":\"include-filter-coffee.coffee\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":6,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":6,\"column\":11}},\"val\":\"script\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":6}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":7,\"column\":7},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":14}}}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":7,\"column\":14},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":20}},\"val\":\"cdata\"}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":7,\"column\":20},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":34}},\"val\":\"coffee-script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":34},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":35}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":7,\"column\":35},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":47}},\"name\":\"minify\",\"mustEscape\":true,\"val\":\"false\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":47},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":48}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":7,\"column\":49},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":7,\"column\":77}},\"val\":\"include-filter-coffee.coffee\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/filters.include.pug\",\"end\":{\"line\":8,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.inline.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":10}},\"val\":\"before \"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":1,\"column\":10},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":12}}}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":1,\"column\":12},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":18}},\"val\":\"cdata\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":19},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":25}},\"val\":\"inside\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":1,\"column\":25},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":26}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":26},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":32}},\"val\":\" after\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":1,\"column\":32},\"filename\":\"/cases/filters.inline.pug\",\"end\":{\"line\":1,\"column\":32}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.less.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":3,\"column\":10}},\"val\":\"style\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":10},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":3,\"column\":11}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":11},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":3,\"column\":26}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"\\\"text/css\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":26},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":3,\"column\":27}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":4,\"column\":12}},\"val\":\"less\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":4,\"column\":12},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":4,\"column\":12}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":5,\"column\":20}},\"val\":\"@pad: 15px;\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":6,\"column\":9}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":6,\"column\":15}},\"val\":\"body {\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":7,\"column\":9}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":9},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":7,\"column\":25}},\"val\":\"  padding: @pad;\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":8,\"column\":9}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":9},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":8,\"column\":10}},\"val\":\"}\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":8,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":8,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":8,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":8,\"column\":10}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/filters.less.pug\",\"end\":{\"line\":8,\"column\":10}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.markdown.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":3,\"column\":17}},\"val\":\"markdown-it\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":17},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":3,\"column\":17}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":4,\"column\":42}},\"val\":\"This is _some_ awesome **markdown**\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"whoop.\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":5,\"column\":13}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":5,\"column\":13}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":5,\"column\":13}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/filters.markdown.pug\",\"end\":{\"line\":5,\"column\":13}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.nested.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":2,\"column\":9}},\"val\":\"cdata\"}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":2,\"column\":19}},\"val\":\"uglify-js\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":2,\"column\":19},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":2,\"column\":19}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":3,\"column\":18}},\"val\":\"(function() {\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":4,\"column\":26}},\"val\":\"  console.log('test')\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"})()\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":5,\"column\":9}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":7,\"column\":3}},\"val\":2}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":7,\"column\":9}},\"val\":\"cdata\"}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":7,\"column\":9},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":7,\"column\":19}},\"val\":\"uglify-js\"}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":7,\"column\":19},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":7,\"column\":33}},\"val\":\"coffee-script\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":7,\"column\":33},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":7,\"column\":33}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":8,\"column\":8}},\"val\":\"(->\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":9,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":9,\"column\":25}},\"val\":\"  console.log 'test'\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":10,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":5},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":10,\"column\":8}},\"val\":\")()\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":10,\"column\":8}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":10,\"column\":8}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/filters.nested.pug\",\"end\":{\"line\":10,\"column\":8}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.stylus.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":3,\"column\":10}},\"val\":\"style\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":10},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":3,\"column\":11}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":11},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":3,\"column\":26}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"\\\"text/css\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":26},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":3,\"column\":27}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":4,\"column\":14}},\"val\":\"stylus\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":4,\"column\":14},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":4,\"column\":14}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"body\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":6,\"column\":9}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":6,\"column\":24}},\"val\":\"  padding: 50px\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":6,\"column\":24},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":6,\"column\":24}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/filters.stylus.pug\",\"end\":{\"line\":8,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/filters.verbatim.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":2,\"column\":2}},\"val\":1}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":2},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"div\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":3,\"column\":12}},\"val\":\"verbatim\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":12},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":4,\"column\":40}},\"val\":\"filters are applied at compile time\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":5,\"column\":41}},\"val\":\"with no #[b interpolation] at #{all}\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":5,\"column\":41},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":5,\"column\":41}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":41},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":5,\"column\":41}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":41},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":5,\"column\":41}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":41},\"filename\":\"/cases/filters.verbatim.pug\",\"end\":{\"line\":5,\"column\":41}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/html.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":1,\"column\":30}},\"val\":\"var version = 1449104952939\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":\"<ul>\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":4,\"column\":15}},\"val\":\"<li>foo</li>\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":5,\"column\":15}},\"val\":\"<li>bar</li>\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":6,\"column\":15}},\"val\":\"<li>baz</li>\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":7,\"column\":6}},\"val\":\"</ul>\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":9,\"column\":31}},\"val\":\"<!--build:js /js/app.min.js?v=\"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":9,\"column\":31},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":9,\"column\":41}},\"mustEscape\":true,\"buffer\":true,\"val\":\"version\"}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":9,\"column\":41},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":9,\"column\":44}},\"val\":\"-->\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":10,\"column\":16}},\"val\":\"<!--endbuild-->\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":12,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":12,\"column\":39}},\"val\":\"You can <em>embed</em> html as well.\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":13,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":13,\"column\":2}},\"val\":\"p\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":13,\"column\":2},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":13,\"column\":4}}}\n{\"type\":\"text-html\",\"loc\":{\"start\":{\"line\":13,\"column\":4},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":13,\"column\":59}},\"val\":\"<strong>Even</strong> as the body of a block expansion.\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":14,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/html.pug\",\"end\":{\"line\":14,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/html5.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"html\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":2,\"column\":6}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":6},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":2,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":7},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":2,\"column\":22}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'checkbox'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":24},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":2,\"column\":31}},\"name\":\"checked\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":31},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":2,\"column\":32}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":3,\"column\":6}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":6},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":3,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":7},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":3,\"column\":22}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'checkbox'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":24},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":3,\"column\":36}},\"name\":\"checked\",\"mustEscape\":true,\"val\":\"true\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":36},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":3,\"column\":37}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":4,\"column\":6}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":6},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":4,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":4,\"column\":22}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'checkbox'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":24},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":4,\"column\":37}},\"name\":\"checked\",\"mustEscape\":true,\"val\":\"false\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":37},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":4,\"column\":38}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":38},\"filename\":\"/cases/html5.pug\",\"end\":{\"line\":4,\"column\":38}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include-extends-from-root.tokens.json",
    "content": "{\"type\":\"include\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/include-extends-from-root.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/include-extends-from-root.pug\",\"end\":{\"line\":1,\"column\":41}},\"val\":\"/auxiliary/extends-from-root.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-extends-from-root.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-extends-from-root.pug\",\"end\":{\"line\":2,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include-extends-of-common-template.tokens.json",
    "content": "{\"type\":\"include\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/include-extends-of-common-template.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/include-extends-of-common-template.pug\",\"end\":{\"line\":1,\"column\":44}},\"val\":\"auxiliary/extends-empty-block-1.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-extends-of-common-template.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-extends-of-common-template.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/include-extends-of-common-template.pug\",\"end\":{\"line\":2,\"column\":44}},\"val\":\"auxiliary/extends-empty-block-2.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include-extends-of-common-template.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include-extends-of-common-template.pug\",\"end\":{\"line\":3,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include-extends-relative.tokens.json",
    "content": "{\"type\":\"include\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/include-extends-relative.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/include-extends-relative.pug\",\"end\":{\"line\":1,\"column\":48}},\"val\":\"../cases/auxiliary/extends-relative.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-extends-relative.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-extends-relative.pug\",\"end\":{\"line\":2,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include-only-text-body.tokens.json",
    "content": "{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/include-only-text-body.pug\",\"end\":{\"line\":1,\"column\":19}},\"val\":\"The message is \\\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-only-text-body.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"yield\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-only-text-body.pug\",\"end\":{\"line\":2,\"column\":6}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include-only-text-body.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/include-only-text-body.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"\\\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/include-only-text-body.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/include-only-text-body.pug\",\"end\":{\"line\":4,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include-only-text.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":3,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":4,\"column\":14}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":4,\"column\":15},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":4,\"column\":41}},\"val\":\"include-only-text-body.pug\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":5,\"column\":11}},\"val\":\"em\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":12},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":5,\"column\":23}},\"val\":\"hello world\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/include-only-text.pug\",\"end\":{\"line\":6,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include-with-text-head.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":2,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":2,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":10},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":2,\"column\":32}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/javascript'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":32},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":2,\"column\":33}}}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":2,\"column\":33},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":2,\"column\":34}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":2,\"column\":34},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":2,\"column\":34}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":3,\"column\":26}},\"val\":\"alert('hello world');\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":26},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":3,\"column\":26}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":3,\"column\":26},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":3,\"column\":26}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":26},\"filename\":\"/cases/include-with-text-head.pug\",\"end\":{\"line\":3,\"column\":26}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include-with-text.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":2,\"column\":10}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":11},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":2,\"column\":37}},\"val\":\"include-with-text-head.pug\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":3,\"column\":11}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":11},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":12},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":3,\"column\":29}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/caustic.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":29},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":3,\"column\":30}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":11},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":4,\"column\":12}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":12},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":4,\"column\":25}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/app.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":25},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":4,\"column\":26}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/include-with-text.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include.script.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":1,\"column\":20}},\"val\":\"pet-template\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":20},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":1,\"column\":21}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":21},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":1,\"column\":43}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/x-template'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":43},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":1,\"column\":44}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":2,\"column\":10}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":11},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":2,\"column\":28}},\"val\":\"auxiliary/pet.pug\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include.script.pug\",\"end\":{\"line\":3,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/include.yield.nested.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":2,\"column\":35}},\"val\":\"auxiliary/yield-nested.pug\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":3,\"column\":17}},\"val\":\"some content\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":4,\"column\":18}},\"val\":\"and some more\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/include.yield.nested.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/includes-with-ext-js.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":1,\"column\":4}},\"val\":\"pre\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"code\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":3,\"column\":36}},\"val\":\"javascript-new-lines.js\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/includes-with-ext-js.pug\",\"end\":{\"line\":4,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/includes.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":2,\"column\":29}},\"val\":\"auxiliary/mixins.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":6,\"column\":5}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":7,\"column\":3}},\"val\":2}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":7,\"column\":10}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":7,\"column\":11},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":7,\"column\":31}},\"val\":\"auxiliary/smile.html\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":8,\"column\":10}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":8,\"column\":11},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":8,\"column\":33}},\"val\":\"auxiliary/escapes.html\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":9,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":9},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":9,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":9,\"column\":10},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":9,\"column\":32}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"\\\"text/javascript\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":32},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":9,\"column\":33}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":10,\"column\":5}},\"val\":4}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":10,\"column\":5},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":10,\"column\":12}}}\n{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":10,\"column\":12},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":10,\"column\":21}},\"val\":\"verbatim\"}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":10,\"column\":22},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":10,\"column\":45}},\"val\":\"auxiliary/includable.js\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/includes.pug\",\"end\":{\"line\":11,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.alert-dialog.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":2,\"column\":29}},\"val\":\"auxiliary/dialog.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":4,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":\"h1\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":6},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":5,\"column\":12}},\"val\":\"Alert!\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":6,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":6,\"column\":18}},\"val\":\"I'm an alert!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.alert-dialog.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.defaults.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":3,\"column\":15}},\"val\":\"head\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":4,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":14},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":4,\"column\":29}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":29},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":4,\"column\":30}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":5,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":14},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":5,\"column\":32}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'keymaster.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":32},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":5,\"column\":33}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":13}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":13},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":14},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":30}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'caustic.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":30},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":31}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":31},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":31}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":31},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":31}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":31},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":31}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":31},\"filename\":\"/cases/inheritance.defaults.pug\",\"end\":{\"line\":6,\"column\":31}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.extend.include.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":2,\"column\":7}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":2,\"column\":36}},\"val\":\"auxiliary/layout.include.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"head\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":5,\"column\":25}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":25},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":5,\"column\":26}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":7,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":8,\"column\":5}},\"val\":\"h2\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":6},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":8,\"column\":10}},\"val\":\"Page\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":9,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":9,\"column\":17}},\"val\":\"Some content\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":11,\"column\":21}},\"val\":\"window-content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":12,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":12,\"column\":5}},\"val\":\"h2\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":6},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":12,\"column\":13}},\"val\":\"Awesome\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":13,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":3},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":13,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":13,\"column\":5},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":13,\"column\":39}},\"val\":\"Now we can extend included blocks!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":14,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/inheritance.extend.include.pug\",\"end\":{\"line\":14,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.extend.mixins.block.tokens.json",
    "content": "{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":1,\"column\":7}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":1,\"column\":52}},\"val\":\"auxiliary/inheritance.extend.mixin.block.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":3,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":4,\"column\":17}},\"val\":\"Hello World!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.block.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.extend.mixins.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":2,\"column\":7}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":2,\"column\":28}},\"val\":\"auxiliary/layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":4,\"column\":21}},\"val\":\"article\",\"args\":\"title\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":5,\"column\":11}},\"val\":\"title\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":6,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"h1\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":6,\"column\":14}},\"val\":\"title\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":7,\"column\":8}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":9,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":10,\"column\":3}},\"val\":2}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":10,\"column\":34}},\"val\":\"article\",\"args\":\"\\\"The meaning of life\\\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":11,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":11,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":11,\"column\":7},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":11,\"column\":19}},\"val\":\"Foo bar baz!\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/inheritance.extend.mixins.pug\",\"end\":{\"line\":12,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.extend.recursive.tokens.json",
    "content": "{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":1,\"column\":59}},\"val\":\"/auxiliary/inheritance.extend.recursive-parent.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":3,\"column\":13}},\"val\":\"parent\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\"h4\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":8},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"child\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":4,\"column\":13}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/inheritance.extend.recursive.pug\",\"end\":{\"line\":4,\"column\":13}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.extend.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":2,\"column\":7}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":2,\"column\":28}},\"val\":\"auxiliary/layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"head\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":5,\"column\":25}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":25},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":5,\"column\":26}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":7,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":8,\"column\":5}},\"val\":\"h2\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":6},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":8,\"column\":10}},\"val\":\"Page\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":9,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":9,\"column\":17}},\"val\":\"Some content\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/inheritance.extend.pug\",\"end\":{\"line\":10,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.extend.whitespace.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":2,\"column\":7}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":2,\"column\":28}},\"val\":\"auxiliary/layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"head\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":6,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":6,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":10},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":6,\"column\":25}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":25},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":6,\"column\":26}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":8,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":12,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":12,\"column\":5}},\"val\":\"h2\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":6},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":12,\"column\":10}},\"val\":\"Page\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":13,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":3},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":13,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":13,\"column\":5},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":13,\"column\":17}},\"val\":\"Some content\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":14,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/inheritance.extend.whitespace.pug\",\"end\":{\"line\":14,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inheritance.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":2,\"column\":29}},\"val\":\"auxiliary/layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"head\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":5,\"column\":25}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":25},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":5,\"column\":26}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":7,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":8,\"column\":5}},\"val\":\"h2\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":6},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":8,\"column\":10}},\"val\":\"Page\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":9,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":9,\"column\":17}},\"val\":\"Some content\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/inheritance.pug\",\"end\":{\"line\":10,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inline-block-comment.tokens.json",
    "content": "{\"type\":\"block\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":1,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":1,\"column\":15},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":1,\"column\":40}},\"val\":\" Main content goes here\",\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":2,\"column\":15}},\"val\":\"content\",\"mode\":\"append\"}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":2,\"column\":16},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":2,\"column\":46}},\"val\":\" adding something to content\",\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":3,\"column\":16}},\"val\":\"content\",\"mode\":\"prepend\"}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":3,\"column\":17},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":3,\"column\":60}},\"val\":\" adding something to other end of content\",\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/inline-block-comment.pug\",\"end\":{\"line\":4,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/inline-tag.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":1,\"column\":8}},\"val\":\"bing \"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":1,\"column\":10}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":10},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":1,\"column\":16}},\"val\":\"strong\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":17},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":1,\"column\":20}},\"val\":\"foo\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":1,\"column\":20},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":1,\"column\":21}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":21},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":1,\"column\":26}},\"val\":\" bong\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":3,\"column\":2},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\"bing\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":\"\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":5,\"column\":11}},\"val\":\"strong\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":12},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":5,\"column\":15}},\"val\":\"foo\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":5,\"column\":15},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":5,\"column\":16}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":16},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":5,\"column\":16}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":6,\"column\":3}},\"val\":\"\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":6,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":6,\"column\":11}},\"val\":\"strong\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":6,\"column\":11},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":6,\"column\":20}},\"val\":\"'[foo]'\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":6,\"column\":20},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":6,\"column\":21}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":21},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":6,\"column\":21}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":7,\"column\":3}},\"val\":\"\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":7,\"column\":5}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":7,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":7,\"column\":23}},\"val\":\"var foo = 'foo]'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":7,\"column\":23},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":7,\"column\":24}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":24},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":7,\"column\":24}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":8,\"column\":7}},\"val\":\"bong\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":9,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":10,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":11,\"column\":3}},\"val\":2}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":11,\"column\":9}},\"val\":\"bing\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":12,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":12,\"column\":5}},\"val\":\"\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":12,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":12,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":7},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":12,\"column\":13}},\"val\":\"strong\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":14},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":12,\"column\":17}},\"val\":\"foo\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":12,\"column\":17},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":12,\"column\":18}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":18},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":12,\"column\":18}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":13,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":13,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":13,\"column\":5}},\"val\":\"\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":13,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":13,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":13,\"column\":13}},\"val\":\"strong\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":13,\"column\":13},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":13,\"column\":22}},\"val\":\"'[foo]'\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":13,\"column\":22},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":13,\"column\":23}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":13,\"column\":23},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":13,\"column\":23}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":14,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":14,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":14,\"column\":5}},\"val\":\"\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":14,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":14,\"column\":7}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":14,\"column\":7},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":14,\"column\":25}},\"val\":\"var foo = 'foo]'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":14,\"column\":25},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":14,\"column\":26}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":14,\"column\":26},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":14,\"column\":26}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":15,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":15,\"column\":5},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":15,\"column\":9}},\"val\":\"bong\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":17,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":17,\"column\":2},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":17,\"column\":3}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":17,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":17,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":18,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":18,\"column\":21}},\"val\":\"#[strong escaped]\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":3},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":6}},\"val\":\"#[\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":19,\"column\":6},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":8}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":8},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":14}},\"val\":\"strong\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":15},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":22}},\"val\":\"escaped\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":19,\"column\":22},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":23}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":23},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":23}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":19,\"column\":23},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":23}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":19,\"column\":23},\"filename\":\"/cases/inline-tag.pug\",\"end\":{\"line\":19,\"column\":23}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/intepolated-elements.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":3}},\"val\":\"\"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":5},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":6}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":1,\"column\":6},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":10}},\"val\":\"rho\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":10},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":11}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":11},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":19}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'#'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":21},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":42}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'rho--modifier'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":42},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":43}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":44},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":60}},\"val\":\"with inline link\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":1,\"column\":60},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":61}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":61},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":1,\"column\":61}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":13}},\"val\":\"Some text \"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":2,\"column\":13},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":15}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":15},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":16}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":16},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":20}},\"val\":\"rho\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":20},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":21}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":21},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":29}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'#'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":31},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":52}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'rho--modifier'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":52},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":53}}}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":2,\"column\":53},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":54}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":54},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":2,\"column\":54}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":13}},\"val\":\"Some text \"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":15}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":15},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":16}},\"val\":\"a\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":3,\"column\":16},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":20}},\"val\":\"rho\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":20},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":21}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":21},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":29}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'#'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":31},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":52}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'rho--modifier'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":52},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":53}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":54},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":70}},\"val\":\"with inline link\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":3,\"column\":70},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":71}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":71},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":71}},\"val\":\"\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":71},\"filename\":\"/cases/intepolated-elements.pug\",\"end\":{\"line\":3,\"column\":71}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/interpolated-mixin.tokens.json",
    "content": "{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":1,\"column\":18}},\"val\":\"linkit\",\"args\":\"url\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":2,\"column\":4}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":4},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":2,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":5},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":2,\"column\":13}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"url\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":13},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":2,\"column\":14}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":14},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":2,\"column\":19}},\"val\":\"url\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":19}},\"val\":\"This also works \"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":4,\"column\":19},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":21}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":4,\"column\":21},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":51}},\"val\":\"linkit\",\"args\":\"'http://www.bing.com'\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":4,\"column\":51},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":52}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":52},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":70}},\"val\":\" so hurrah for Pug\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":70},\"filename\":\"/cases/interpolated-mixin.pug\",\"end\":{\"line\":4,\"column\":70}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/interpolation.escape.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":2,\"column\":15}},\"val\":\"var id = 42;\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"some\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"#{text}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\"here\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":5},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":7,\"column\":11}},\"val\":\"My ID \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":7,\"column\":11},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":7,\"column\":31}},\"mustEscape\":true,\"buffer\":true,\"val\":\"\\\"is {\\\" + id + \\\"}\\\"\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":31},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":7,\"column\":31}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":31},\"filename\":\"/cases/interpolation.escape.pug\",\"end\":{\"line\":7,\"column\":31}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/layout.append.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":2,\"column\":42}},\"val\":\"../fixtures/append/app-layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":4,\"column\":18}},\"val\":\"head\",\"mode\":\"append\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":5,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'foo.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":22},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":5,\"column\":23}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":6,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":10},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":6,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'bar.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":22},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":6,\"column\":23}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.append.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/layout.append.without-block.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":2,\"column\":56}},\"val\":\"../fixtures/append-without-block/app-layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":4,\"column\":12}},\"val\":\"head\",\"mode\":\"append\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":5,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'foo.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":22},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":5,\"column\":23}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":6,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":10},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":6,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'bar.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":22},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":6,\"column\":23}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.append.without-block.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/layout.multi.append.prepend.block.tokens.json",
    "content": "{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":1,\"column\":60}},\"val\":\"../fixtures/multi-append-prepend-block/redefine.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":3,\"column\":15}},\"val\":\"content\",\"mode\":\"append\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":4,\"column\":2}},\"val\":1}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":2},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"first\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":4,\"column\":9},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":4,\"column\":16}},\"val\":\"append\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":17},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":4,\"column\":46}},\"val\":\"Something appended to content\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":6,\"column\":16}},\"val\":\"content\",\"mode\":\"prepend\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":7,\"column\":2}},\"val\":1}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":2},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":7,\"column\":3}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":7,\"column\":9}},\"val\":\"first\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":7,\"column\":9},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":7,\"column\":17}},\"val\":\"prepend\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":18},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":7,\"column\":48}},\"val\":\"Something prepended to content\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":9,\"column\":15}},\"val\":\"content\",\"mode\":\"append\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":10,\"column\":2}},\"val\":1}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":2},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":10,\"column\":3}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":10,\"column\":8}},\"val\":\"last\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":10,\"column\":15}},\"val\":\"append\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":16},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":10,\"column\":45}},\"val\":\"Last append must be most last\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":12,\"column\":16}},\"val\":\"content\",\"mode\":\"prepend\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":13,\"column\":2}},\"val\":1}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":2},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":13,\"column\":3}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":13,\"column\":3},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":13,\"column\":8}},\"val\":\"last\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":13,\"column\":8},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":13,\"column\":16}},\"val\":\"prepend\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":13,\"column\":17},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":13,\"column\":48}},\"val\":\"Last prepend must appear at top\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":15,\"column\":12}},\"val\":\"head\",\"mode\":\"append\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":16,\"column\":2}},\"val\":1}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":2},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":16,\"column\":8}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":16,\"column\":8},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":16,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":16,\"column\":9},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":16,\"column\":24}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":16,\"column\":24},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":16,\"column\":25}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":18,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":18,\"column\":13}},\"val\":\"head\",\"mode\":\"prepend\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":19,\"column\":2}},\"val\":1}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":2},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":19,\"column\":8}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":8},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":19,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":19,\"column\":9},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":19,\"column\":21}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'foo.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":21},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":19,\"column\":22}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/layout.multi.append.prepend.block.pug\",\"end\":{\"line\":20,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/layout.prepend.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":2,\"column\":43}},\"val\":\"../fixtures/prepend/app-layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":4,\"column\":19}},\"val\":\"head\",\"mode\":\"prepend\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":5,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'foo.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":22},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":5,\"column\":23}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":6,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":10},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":6,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'bar.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":22},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":6,\"column\":23}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.prepend.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/layout.prepend.without-block.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":2,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":2,\"column\":57}},\"val\":\"../fixtures/prepend-without-block/app-layout.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":4,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"head\",\"mode\":\"prepend\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":5,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'foo.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":22},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":5,\"column\":23}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":6,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":10},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":6,\"column\":22}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'bar.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":22},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":6,\"column\":23}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/layout.prepend.without-block.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin-at-end-of-file.tokens.json",
    "content": "{\"type\":\"include\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":1,\"column\":45}},\"val\":\"./auxiliary/mixin-at-end-of-file.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":3,\"column\":9}},\"val\":\"slide\",\"args\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":4,\"column\":25}},\"val\":\"some awesome content\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-at-end-of-file.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin-block-with-space.tokens.json",
    "content": "{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":1,\"column\":12}},\"val\":\"m\",\"args\":\"id\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":2,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":3,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":\"m\",\"args\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":6,\"column\":3}},\"val\":2}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":6,\"column\":28}},\"val\":\"This text should appear\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":28},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":6,\"column\":28}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":28},\"filename\":\"/cases/mixin-block-with-space.pug\",\"end\":{\"line\":6,\"column\":28}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin-hoist.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":2,\"column\":12}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":\"h1\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":3,\"column\":12}},\"val\":\"title\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":6,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":7,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":7,\"column\":5},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":7,\"column\":9}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/mixin-hoist.pug\",\"end\":{\"line\":8,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin-via-include.tokens.json",
    "content": "{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixin-via-include.pug\",\"end\":{\"line\":1,\"column\":65}},\"val\":\" regression test for https://github.com/pugjs/pug/issues/1435\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin-via-include.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin-via-include.pug\",\"end\":{\"line\":3,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":3,\"column\":9},\"filename\":\"/cases/mixin-via-include.pug\",\"end\":{\"line\":3,\"column\":38}},\"val\":\"../fixtures/mixin-include.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-via-include.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin-via-include.pug\",\"end\":{\"line\":5,\"column\":6}},\"val\":\"bang\",\"args\":null}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":6},\"filename\":\"/cases/mixin-via-include.pug\",\"end\":{\"line\":5,\"column\":6}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin.attrs.tokens.json",
    "content": "{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":1,\"column\":22}},\"val\":\"centered\",\"args\":\"title\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":2,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":6},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":2,\"column\":15}},\"val\":\"centered\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":15},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":2,\"column\":16}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":16},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":2,\"column\":32}},\"name\":\"id\",\"mustEscape\":true,\"val\":\"attributes.id\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":32},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":2,\"column\":33}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":3,\"column\":17}},\"val\":\"if (title)\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"h1\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":9},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":4,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":10},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":4,\"column\":32}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"attributes.class\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":32},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":4,\"column\":33}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":33},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":4,\"column\":40}},\"val\":\"title\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":6,\"column\":5}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":6,\"column\":27}},\"val\":\"if (attributes.href)\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":6}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":7,\"column\":7},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":7,\"column\":14}},\"val\":\"footer\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":8,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":9},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":8,\"column\":10}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":10},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":8,\"column\":11}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":8,\"column\":11},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":8,\"column\":31}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"attributes.href\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":31},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":8,\"column\":32}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":33},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":8,\"column\":37}},\"val\":\"Back\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":10,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":10,\"column\":18}},\"val\":\"main\",\"args\":\"title\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":11,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":11,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":11,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":11,\"column\":6},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":11,\"column\":14}},\"val\":\"stretch\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":12,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":12,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":12,\"column\":21}},\"val\":\"centered\",\"args\":\"title\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":12,\"column\":21},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":12,\"column\":31}},\"val\":\"highlight\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":31},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":12,\"column\":54}},\"val\":\"attributes\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":13,\"column\":7}},\"val\":6}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":13,\"column\":12}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":15,\"column\":13}},\"val\":\"bottom\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":16,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":16,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":16,\"column\":6},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":16,\"column\":13}},\"val\":\"bottom\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":16,\"column\":13},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":16,\"column\":36}},\"val\":\"attributes\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":17,\"column\":5}},\"val\":4}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":17,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":17,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":19,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":19,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":19,\"column\":5}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":20,\"column\":3}},\"val\":2}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":20,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":20,\"column\":12}},\"val\":\"centered\",\"args\":null}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":20,\"column\":12},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":20,\"column\":18}},\"val\":\"First\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":20,\"column\":19},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":20,\"column\":30}},\"val\":\"Hello World\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":21,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":21,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":21,\"column\":25}},\"val\":\"centered\",\"args\":\"'Section 1'\"}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":21,\"column\":25},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":21,\"column\":32}},\"val\":\"Second\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":22,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":22,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":22,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":22,\"column\":7},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":22,\"column\":30}},\"val\":\"Some important content.\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":23,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":25}},\"val\":\"centered\",\"args\":\"'Section 2'\"}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":23,\"column\":25},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":31}},\"val\":\"Third\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":23,\"column\":31},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":35}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":23,\"column\":35},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":36}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":23,\"column\":36},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":52}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'menu.html'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":23,\"column\":54},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":65}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":23,\"column\":65},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":23,\"column\":66}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":24,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":24,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":24,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":24,\"column\":7},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":24,\"column\":35}},\"val\":\"Even more important content.\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":25,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":25,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":25,\"column\":21}},\"val\":\"main\",\"args\":\"'Section 3'\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":25,\"column\":21},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":25,\"column\":22}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":25,\"column\":22},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":25,\"column\":30}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'#'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":25,\"column\":30},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":25,\"column\":31}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":26,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":26,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":26,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":26,\"column\":7},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":26,\"column\":20}},\"val\":\"Last content.\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":27,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":10}},\"val\":\"bottom\",\"args\":null}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":27,\"column\":10},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":14}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":27,\"column\":14},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":15}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":27,\"column\":15},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":26}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":27,\"column\":28},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":38}},\"name\":\"name\",\"mustEscape\":true,\"val\":\"'end'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":27,\"column\":40},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":49}},\"name\":\"id\",\"mustEscape\":true,\"val\":\"'Last'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":27,\"column\":51},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":66}},\"name\":\"data-attr\",\"mustEscape\":true,\"val\":\"'baz'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":27,\"column\":66},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":27,\"column\":67}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":28,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":28,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":28,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":28,\"column\":7},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":28,\"column\":24}},\"val\":\"Some final words.\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":29,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":29,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":29,\"column\":10}},\"val\":\"bottom\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":29,\"column\":10},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":29,\"column\":11}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":29,\"column\":11},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":29,\"column\":37}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"['class1', 'class2']\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":29,\"column\":37},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":29,\"column\":38}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":31,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":31,\"column\":10}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":32,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":32,\"column\":6},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":12}},\"val\":\"thing\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":32,\"column\":12},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":32,\"column\":13},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":24}},\"name\":\"attr1\",\"mustEscape\":true,\"val\":\"'foo'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":32,\"column\":26},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":37}},\"name\":\"attr2\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":32,\"column\":37},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":38}}}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":32,\"column\":38},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":32,\"column\":61}},\"val\":\"attributes\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":34,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":34,\"column\":20}},\"val\":\"var val = '<biz>'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":35,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":35,\"column\":31}},\"val\":\"var classes = ['foo', 'bar']\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":5}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":36,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":6}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":36,\"column\":6},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":17}},\"name\":\"attr3\",\"mustEscape\":true,\"val\":\"'baz'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":36,\"column\":18},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":30}},\"name\":\"data-foo\",\"mustEscape\":true,\"val\":\"val\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":36,\"column\":31},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":44}},\"name\":\"data-bar\",\"mustEscape\":false,\"val\":\"val\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":36,\"column\":45},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":58}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"classes\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":36,\"column\":58},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":59}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":36,\"column\":59},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":36,\"column\":65}},\"val\":\"thunk\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":38,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":38,\"column\":1}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":38,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":38,\"column\":30}},\"val\":\" Regression test for #1424\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":39,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":39,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":39,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":39,\"column\":32}},\"val\":\"work_filmstrip_item\",\"args\":\"work\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":40,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":40,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":40,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":40,\"column\":6},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":40,\"column\":29}},\"val\":\"attributes\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":40,\"column\":29},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":40,\"column\":35}},\"val\":\"work\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":41,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":41,\"column\":29}},\"val\":\"work_filmstrip_item\",\"args\":\"'work'\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":41,\"column\":29},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":41,\"column\":30}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":41,\"column\":30},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":41,\"column\":54}},\"name\":\"data-profile\",\"mustEscape\":true,\"val\":\"'profile'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":41,\"column\":56},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":41,\"column\":82}},\"name\":\"data-creator-name\",\"mustEscape\":true,\"val\":\"'name'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":41,\"column\":82},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":41,\"column\":83}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":43,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":43,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":43,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":43,\"column\":39}},\"val\":\"my-mixin\",\"args\":\"arg1, arg2, arg3, arg4\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":44,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":44,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":44,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":44,\"column\":4},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":44,\"column\":10}},\"val\":\"arg1\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":45,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":45,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":45,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":45,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":45,\"column\":4},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":45,\"column\":10}},\"val\":\"arg2\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":46,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":46,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":46,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":46,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":46,\"column\":4},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":46,\"column\":10}},\"val\":\"arg3\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":47,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":47,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":47,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":47,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":47,\"column\":4},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":47,\"column\":10}},\"val\":\"arg4\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":49,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":49,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":49,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":49,\"column\":5}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":49,\"column\":5},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":49,\"column\":6}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":50,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":50,\"column\":14}},\"name\":\"attr3\",\"mustEscape\":true,\"val\":\"\\\"qux\\\"\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":51,\"column\":3},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":51,\"column\":14}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"\\\"baz\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":52,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":52,\"column\":2}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":54,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":54,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":54,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":59,\"column\":2}},\"val\":\"my-mixin\",\"args\":\"\\n'1',\\n      '2',\\n  '3',\\n      '4'\\n\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":60,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":60,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":60,\"column\":1},\"filename\":\"/cases/mixin.attrs.pug\",\"end\":{\"line\":60,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin.block-tag-behaviour.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":2,\"column\":20}},\"val\":\"article\",\"args\":\"name\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":3,\"column\":10}},\"val\":\"section\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":3,\"column\":10},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":3,\"column\":18}},\"val\":\"article\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\"h1\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"name\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":7,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":8,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":9,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":9,\"column\":20}},\"val\":\"article\",\"args\":\"'Foo'\"}\n{\"type\":\":\",\"loc\":{\"start\":{\"line\":9,\"column\":20},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":9,\"column\":22}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":22},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":9,\"column\":23}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":24},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":9,\"column\":39}},\"val\":\"I'm article foo\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":11,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":11,\"column\":20}},\"val\":\"article\",\"args\":\"name\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":12,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":12,\"column\":10}},\"val\":\"section\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":12,\"column\":10},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":12,\"column\":18}},\"val\":\"article\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":13,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":5},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":13,\"column\":7}},\"val\":\"h1\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":13,\"column\":13}},\"val\":\"name\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":14,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":5},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":14,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":15,\"column\":7}},\"val\":6}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":15,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":15,\"column\":12}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":17,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":18,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":18,\"column\":3},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":18,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":19,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":19,\"column\":5},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":19,\"column\":26}},\"val\":\"article\",\"args\":\"'Something'\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":19,\"column\":26},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":19,\"column\":27}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":19,\"column\":27},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":19,\"column\":27}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":20,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":20,\"column\":24}},\"val\":\"I'm a much longer\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":21,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":21,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":21,\"column\":25}},\"val\":\"text-only article,\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":22,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":22,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":22,\"column\":24}},\"val\":\"but you can still\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":23,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":23,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":23,\"column\":23}},\"val\":\"inline html tags\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":24,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":24,\"column\":7},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":24,\"column\":25}},\"val\":\"in me if you want.\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":24,\"column\":25},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":24,\"column\":25}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":24,\"column\":25},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":24,\"column\":25}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":24,\"column\":25},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":24,\"column\":25}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":24,\"column\":25},\"filename\":\"/cases/mixin.block-tag-behaviour.pug\",\"end\":{\"line\":24,\"column\":25}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin.blocks.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":3,\"column\":27}},\"val\":\"form\",\"args\":\"method, action\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\"form\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":4,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":8},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":4,\"column\":21}},\"name\":\"method\",\"mustEscape\":true,\"val\":\"method\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":23},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":4,\"column\":36}},\"name\":\"action\",\"mustEscape\":true,\"val\":\"action\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":36},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":4,\"column\":37}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":4}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":5,\"column\":44}},\"val\":\"var csrf_token_from_somewhere = 'hey'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":6,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":6,\"column\":10}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":10},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":6,\"column\":11}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":11},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":6,\"column\":24}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'hidden'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":26},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":6,\"column\":38}},\"name\":\"name\",\"mustEscape\":true,\"val\":\"'_csrf'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":40},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":6,\"column\":71}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"csrf_token_from_somewhere\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":71},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":6,\"column\":72}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":7,\"column\":5}}}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":7,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":7,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":9,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":10,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":10,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":11,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":11,\"column\":28}},\"val\":\"form\",\"args\":\"'GET', '/search'\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":12,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":7},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":12,\"column\":12}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":12},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":12,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":12,\"column\":13},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":12,\"column\":24}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":12,\"column\":26},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":12,\"column\":38}},\"name\":\"name\",\"mustEscape\":true,\"val\":\"'query'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":12,\"column\":40},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":12,\"column\":60}},\"name\":\"placeholder\",\"mustEscape\":true,\"val\":\"'Search'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":60},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":12,\"column\":61}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":13,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":13,\"column\":12}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":12},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":13,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":13,\"column\":13},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":13,\"column\":26}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'submit'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":13,\"column\":28},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":13,\"column\":42}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"'Search'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":42},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":13,\"column\":43}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":15,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":15,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":16,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":16,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":17,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":17,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":17,\"column\":29}},\"val\":\"form\",\"args\":\"'POST', '/search'\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":18,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":18,\"column\":7},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":18,\"column\":12}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":18,\"column\":12},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":18,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":18,\"column\":13},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":18,\"column\":24}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":18,\"column\":26},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":18,\"column\":38}},\"name\":\"name\",\"mustEscape\":true,\"val\":\"'query'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":18,\"column\":40},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":18,\"column\":60}},\"name\":\"placeholder\",\"mustEscape\":true,\"val\":\"'Search'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":18,\"column\":60},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":18,\"column\":61}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":19,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":7},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":19,\"column\":12}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":12},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":19,\"column\":13}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":19,\"column\":13},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":19,\"column\":26}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'submit'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":19,\"column\":28},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":19,\"column\":42}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"'Search'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":42},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":19,\"column\":43}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":21,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":21,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":21,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":21,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":22,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":22,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":22,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":23,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":23,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":23,\"column\":29}},\"val\":\"form\",\"args\":\"'POST', '/search'\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":25,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":25,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":25,\"column\":12}},\"val\":\"bar\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":26,\"column\":3}},\"val\":2}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":26,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":26,\"column\":7}},\"val\":\"bar\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":27,\"column\":5}},\"val\":4}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":27,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":27,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":29,\"column\":12}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":30,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":30,\"column\":3}},\"val\":2}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":30,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":30,\"column\":7}},\"val\":\"foo\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":31,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":31,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":31,\"column\":9}},\"val\":\"bar\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":32,\"column\":7}},\"val\":6}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":32,\"column\":7},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":32,\"column\":12}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":34,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":34,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":34,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":34,\"column\":5}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":35,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":35,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":35,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":35,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":35,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":35,\"column\":8}},\"val\":\"one\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":36,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":36,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":36,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":36,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":36,\"column\":8}},\"val\":\"two\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":37,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":37,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":37,\"column\":3},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":37,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":37,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":37,\"column\":10}},\"val\":\"three\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":40,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":40,\"column\":10}},\"val\":\"baz\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":41,\"column\":5}},\"val\":4}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":41,\"column\":5},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":41,\"column\":9}},\"val\":\"baz\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":42,\"column\":9}},\"val\":8}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":42,\"column\":9},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":42,\"column\":14}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":44,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":44,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":44,\"column\":7}},\"val\":\"baz\",\"args\":\"\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":44,\"column\":7},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":44,\"column\":14}},\"val\":\"'123'\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":44,\"column\":14},\"filename\":\"/cases/mixin.blocks.pug\",\"end\":{\"line\":44,\"column\":14}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixin.merge.tokens.json",
    "content": "{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":1,\"column\":10}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":2,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":4},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":2,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":2,\"column\":31}},\"val\":\"attributes\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":32},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":2,\"column\":35}},\"val\":\"One\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":3,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":3,\"column\":4},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":3,\"column\":8}},\"val\":\"baz\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":3,\"column\":13}},\"val\":\"quux\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":3,\"column\":36}},\"val\":\"attributes\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":37},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":3,\"column\":40}},\"val\":\"Two\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":4},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":4,\"column\":27}},\"val\":\"attributes\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":28},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":4,\"column\":33}},\"val\":\"Three\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":4}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":5,\"column\":4},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":8},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":31}},\"val\":\"attributes\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":31},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":32}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":32},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":43}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"\\\"baz\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":43},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":44}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":45},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":5,\"column\":49}},\"val\":\"Four\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":7,\"column\":5}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":8,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":8,\"column\":7},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":8,\"column\":13}},\"val\":\"hello\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":9,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":9,\"column\":7},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":9,\"column\":13}},\"val\":\"world\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":10,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":10,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":10,\"column\":7},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":10,\"column\":13}},\"val\":\"hello\"}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":10,\"column\":13},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":10,\"column\":19}},\"val\":\"world\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":11,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":11,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":11,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":11,\"column\":7},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":11,\"column\":13}},\"val\":\"hello\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":11,\"column\":13},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":11,\"column\":19}},\"val\":\"world\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":12,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":12,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":7},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":12,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":12,\"column\":8},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":12,\"column\":21}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"\\\"hello\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":21},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":12,\"column\":22}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":13,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":13,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":13,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":13,\"column\":13}},\"val\":\"hello\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":13},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":13,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":13,\"column\":14},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":13,\"column\":27}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"\\\"world\\\"\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":27},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":13,\"column\":28}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":14,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":14,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":15,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":15,\"column\":3},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":15,\"column\":7}},\"val\":\"foo\",\"args\":null}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":7},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":15,\"column\":36}},\"val\":\"{class: \\\"hello\\\"}\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":36},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":15,\"column\":36}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":15,\"column\":36},\"filename\":\"/cases/mixin.merge.pug\",\"end\":{\"line\":15,\"column\":36}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixins-unused.tokens.json",
    "content": "{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixins-unused.pug\",\"end\":{\"line\":1,\"column\":19}},\"val\":\"never-called\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixins-unused.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/mixins-unused.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"wtf\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/mixins-unused.pug\",\"end\":{\"line\":2,\"column\":51}},\"val\":\"This isn't something we ever want to output\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixins-unused.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixins-unused.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":\"body\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/mixins-unused.pug\",\"end\":{\"line\":3,\"column\":5}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixins.rest-args.tokens.json",
    "content": "{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":1,\"column\":26}},\"val\":\"list\",\"args\":\"tag, ...items\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":2,\"column\":9}},\"val\":\"tag\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"each\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":3,\"column\":23}},\"val\":\"item\",\"key\":null,\"code\":\"items\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":9},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":4,\"column\":15}},\"val\":\"item\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":6,\"column\":24}},\"val\":\"list\",\"args\":\"'ul', 1, 2, 3, 4\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixins.rest-args.pug\",\"end\":{\"line\":7,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/mixins.tokens.json",
    "content": "{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":1,\"column\":26}},\"val\":\"comment\",\"args\":\"title, str\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":2,\"column\":11}},\"val\":\"comment\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"h2\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":7},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":3,\"column\":14}},\"val\":\"title\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":4,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":4,\"column\":6},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"body\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":11},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":4,\"column\":16}},\"val\":\"str\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":7,\"column\":27}},\"val\":\"comment\",\"args\":\"title, str\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":8,\"column\":11}},\"val\":\"comment\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":9,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":9,\"column\":7}},\"val\":\"h2\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":9,\"column\":7},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":9,\"column\":14}},\"val\":\"title\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":10,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":10,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":10,\"column\":6},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":10,\"column\":11}},\"val\":\"body\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":10,\"column\":11},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":10,\"column\":16}},\"val\":\"str\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":12,\"column\":1}}}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":12,\"column\":6}},\"val\":\"user\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":13,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":13,\"column\":5}},\"val\":\"h1\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":13,\"column\":6},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":13,\"column\":10}},\"val\":\"Tobi\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":14,\"column\":3}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":14,\"column\":12}},\"val\":\"comments\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":15,\"column\":5}},\"val\":4}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":15,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":16,\"column\":42}},\"val\":\"comment\",\"args\":\"'This',\\n            (('is regular, javascript'))\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":18,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":18,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":18,\"column\":11}},\"val\":\"list\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":19,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":19,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":19,\"column\":5}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":20,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":20,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":20,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":20,\"column\":8},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":20,\"column\":11}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":21,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":21,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":21,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":21,\"column\":8},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":21,\"column\":11}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":22,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":22,\"column\":5},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":22,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":22,\"column\":8},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":22,\"column\":11}},\"val\":\"baz\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":24,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":24,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":24,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":24,\"column\":5}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":25,\"column\":3}},\"val\":2}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":25,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":25,\"column\":10}},\"val\":\"list\",\"args\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":26,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":26,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":26,\"column\":11}},\"val\":\"list\",\"args\":\"\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":28,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":28,\"column\":18}},\"val\":\"foobar\",\"args\":\"str\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":29,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":29,\"column\":3},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":29,\"column\":6}},\"val\":\"div\"}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":29,\"column\":6},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":29,\"column\":20}},\"val\":\"interpolation\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":29,\"column\":20},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":29,\"column\":42}},\"val\":\"str + 'interpolated'\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":31,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":31,\"column\":21}},\"val\":\"var suffix = \\\"bar\\\"\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":32,\"column\":1}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":32,\"column\":31}},\"val\":\"#{'foo' + suffix}\",\"args\":\"'This is '\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":33,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/mixins.pug\",\"end\":{\"line\":33,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/namespaces.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"fb:user:role\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":14},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":1,\"column\":23}},\"val\":\"Something\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":2,\"column\":4}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":4},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":2,\"column\":5}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":5},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":2,\"column\":17}},\"name\":\"fb:foo\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":17},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":2,\"column\":18}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":18},\"filename\":\"/cases/namespaces.pug\",\"end\":{\"line\":2,\"column\":18}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/nesting.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":1,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":6},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"a\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":6},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"b\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":5,\"column\":7}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":6,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":6,\"column\":11}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":12},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":6,\"column\":13}},\"val\":\"c\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":7,\"column\":9}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":9},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":7,\"column\":11}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":12},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":7,\"column\":13}},\"val\":\"d\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":8,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":6},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":8,\"column\":7}},\"val\":\"e\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":8,\"column\":7},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":8,\"column\":7}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":8,\"column\":7},\"filename\":\"/cases/nesting.pug\",\"end\":{\"line\":8,\"column\":7}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/pipeless-comments.tokens.json",
    "content": "{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":1,\"column\":3}},\"val\":\"\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":1,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":2,\"column\":12}},\"val\":\"     .foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":3,\"column\":8}},\"val\":\"\\t.bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\".hey\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":4,\"column\":7}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/pipeless-comments.pug\",\"end\":{\"line\":4,\"column\":7}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/pipeless-filters.tokens.json",
    "content": "{\"type\":\"filter\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"markdown-it\"}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":13},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":1,\"column\":13}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":2,\"column\":18}},\"val\":\"    code sample\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":3,\"column\":1}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":4,\"column\":12}},\"val\":\"# Heading\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":4,\"column\":12},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":4,\"column\":12}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":12},\"filename\":\"/cases/pipeless-filters.pug\",\"end\":{\"line\":4,\"column\":12}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/pipeless-tag.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":1,\"column\":4}},\"val\":\"pre\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":1,\"column\":4},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":1,\"column\":5}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":5},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":1,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":2,\"column\":9}},\"val\":\"  what\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":6}},\"val\":\"is \"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":3,\"column\":6},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":16}},\"mustEscape\":true,\"buffer\":true,\"val\":\"'going'\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":16},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":17}},\"val\":\" \"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":3,\"column\":17},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":19}}}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":3,\"column\":21},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":28}},\"mustEscape\":true,\"buffer\":true,\"val\":\"'on'\"}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":3,\"column\":28},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":29}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":29},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":29}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":29},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":29}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":29},\"filename\":\"/cases/pipeless-tag.pug\",\"end\":{\"line\":3,\"column\":29}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/pre.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":1,\"column\":4}},\"val\":\"pre\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":1,\"column\":4},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":1,\"column\":5}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":5},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":1,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":2,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":3,\"column\":6}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":4,\"column\":6}},\"val\":\"baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":5,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":6,\"column\":4}},\"val\":\"pre\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":7,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":\"code\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":7,\"column\":7},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":7,\"column\":8}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":7,\"column\":8},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":7,\"column\":8}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":8,\"column\":8}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":9,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":9,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":10,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":5},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":10,\"column\":8}},\"val\":\"baz\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":10,\"column\":8}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":10,\"column\":8}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/pre.pug\",\"end\":{\"line\":10,\"column\":8}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/quotes.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/quotes.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/quotes.pug\",\"end\":{\"line\":1,\"column\":8}},\"val\":\"\\\"foo\\\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/quotes.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/quotes.pug\",\"end\":{\"line\":2,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/quotes.pug\",\"end\":{\"line\":2,\"column\":8}},\"val\":\"'foo'\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/quotes.pug\",\"end\":{\"line\":2,\"column\":8}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/regression.1794.tokens.json",
    "content": "{\"type\":\"extends\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":1,\"column\":9},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":1,\"column\":37}},\"val\":\"./auxiliary/1794-extends.pug\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"block\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":3,\"column\":14}},\"val\":\"content\",\"mode\":\"replace\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":4,\"column\":3}},\"val\":2}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":4,\"column\":10}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":4,\"column\":11},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":4,\"column\":39}},\"val\":\"./auxiliary/1794-include.pug\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":39},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":4,\"column\":39}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":39},\"filename\":\"/cases/regression.1794.pug\",\"end\":{\"line\":4,\"column\":39}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/regression.784.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/regression.784.pug\",\"end\":{\"line\":1,\"column\":36}},\"val\":\"var url = 'http://www.google.com'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/regression.784.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/regression.784.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"url\"}\n{\"type\":\"interpolated-code\",\"loc\":{\"start\":{\"line\":2,\"column\":6},\"filename\":\"/cases/regression.784.pug\",\"end\":{\"line\":2,\"column\":57}},\"mustEscape\":true,\"buffer\":true,\"val\":\"url.replace('http://', '').replace(/^www\\\\./, '')\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":57},\"filename\":\"/cases/regression.784.pug\",\"end\":{\"line\":2,\"column\":57}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/script.whitespace.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":2,\"column\":13}},\"val\":\"if (foo) {\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":\"  \"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"  bar();\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":5,\"column\":3}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":6,\"column\":4}},\"val\":\"}\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":6,\"column\":4},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":6,\"column\":4}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":4},\"filename\":\"/cases/script.whitespace.pug\",\"end\":{\"line\":6,\"column\":4}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/scripts.non-js.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":1,\"column\":21}},\"val\":\"user-template\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":21},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":1,\"column\":22}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":22},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":1,\"column\":42}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/template'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":42},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":1,\"column\":43}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":2,\"column\":8}},\"val\":\"user\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"h1\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":3,\"column\":24}},\"val\":\"<%= user.name %>\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":4,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":4,\"column\":30}},\"val\":\"<%= user.description %>\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"id\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":21}},\"val\":\"user-template\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":21},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":22}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":22},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":42}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/template'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":42},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":43}}}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":6,\"column\":43},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":44}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":6,\"column\":44},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":6,\"column\":44}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":7,\"column\":13}},\"val\":\"if (foo) {\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":8,\"column\":11}},\"val\":\"  bar();\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":9,\"column\":4}},\"val\":\"}\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":9,\"column\":4},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":9,\"column\":4}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":9,\"column\":4},\"filename\":\"/cases/scripts.non-js.pug\",\"end\":{\"line\":9,\"column\":4}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/scripts.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":2,\"column\":13}},\"val\":\"if (foo) {\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":3,\"column\":11}},\"val\":\"  bar();\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":4,\"column\":4}},\"val\":\"}\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":4,\"column\":4},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":4,\"column\":4}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":5,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":5,\"column\":17}},\"val\":\"'foo()'\",\"mustEscape\":false,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":8},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":6,\"column\":13}},\"val\":\"foo()\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":8,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":8,\"column\":4}},\"val\":\"div\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":8,\"column\":4},\"filename\":\"/cases/scripts.pug\",\"end\":{\"line\":8,\"column\":4}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/self-closing-html.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"html\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":\"br\"}\n{\"type\":\"slash\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":4,\"column\":8}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/self-closing-html.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/single-period.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/single-period.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"span\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":6},\"filename\":\"/cases/single-period.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\".\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/single-period.pug\",\"end\":{\"line\":1,\"column\":7}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/source.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":2,\"column\":8}},\"val\":\"audio\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":8},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":2,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":2,\"column\":23}},\"name\":\"preload\",\"mustEscape\":true,\"val\":\"'auto'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":25},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":2,\"column\":35}},\"name\":\"autobuffer\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":37},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":2,\"column\":45}},\"name\":\"controls\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":45},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":2,\"column\":46}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":3,\"column\":11}},\"val\":\"source\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":11},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":12},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":3,\"column\":21}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'foo'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":21},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":3,\"column\":22}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"source\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":11},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":12}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":12},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":21}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":21},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":22}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":22},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":22}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":22},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":22}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":4,\"column\":22},\"filename\":\"/cases/source.pug\",\"end\":{\"line\":4,\"column\":22}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/styles.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":3,\"column\":10}},\"val\":\"style\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":3,\"column\":10},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":3,\"column\":11}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":3,\"column\":11},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":3,\"column\":11}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"body {\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":5,\"column\":23}},\"val\":\"  padding: 50px;\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":6,\"column\":7}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":6,\"column\":8}},\"val\":\"}\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":6,\"column\":8},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":6,\"column\":8}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":7,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":8,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":8,\"column\":8}},\"val\":\"div\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":8},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":8,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":8,\"column\":9},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":8,\"column\":43}},\"name\":\"style\",\"mustEscape\":true,\"val\":\"'color:red;background:green'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":43},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":8,\"column\":44}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":9,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":9,\"column\":8}},\"val\":\"div\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":8},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":9,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":9,\"column\":9},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":9,\"column\":50}},\"name\":\"style\",\"mustEscape\":true,\"val\":\"{color: 'red', background: 'green'}\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":9,\"column\":50},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":9,\"column\":51}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":10,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":10,\"column\":8}},\"val\":\"div\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":8},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":10,\"column\":58}},\"val\":\"{style: 'color:red;background:green'}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":11,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":11,\"column\":8}},\"val\":\"div\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":11,\"column\":8},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":11,\"column\":65}},\"val\":\"{style: {color: 'red', background: 'green'}}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":12,\"column\":5}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":12,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":12,\"column\":16}},\"val\":\"div\",\"args\":null}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":13,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":7},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":13,\"column\":10}},\"val\":\"div\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":10},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":13,\"column\":33}},\"val\":\"attributes\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":14,\"column\":5}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":14,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":14,\"column\":9}},\"val\":\"div\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":14,\"column\":9},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":14,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":14,\"column\":10},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":14,\"column\":44}},\"name\":\"style\",\"mustEscape\":true,\"val\":\"'color:red;background:green'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":14,\"column\":44},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":14,\"column\":45}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":15,\"column\":5}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":15,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":15,\"column\":9}},\"val\":\"div\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":9},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":15,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":15,\"column\":10},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":15,\"column\":51}},\"name\":\"style\",\"mustEscape\":true,\"val\":\"{color: 'red', background: 'green'}\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":15,\"column\":51},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":15,\"column\":52}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":16,\"column\":5}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":16,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":16,\"column\":24}},\"val\":\"var bg = 'green';\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":17,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":17,\"column\":8}},\"val\":\"div\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":17,\"column\":8},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":17,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":17,\"column\":9},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":17,\"column\":45}},\"name\":\"style\",\"mustEscape\":true,\"val\":\"{color: 'red', background: bg}\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":17,\"column\":45},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":17,\"column\":46}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":18,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":18,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":18,\"column\":8}},\"val\":\"div\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":18,\"column\":8},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":18,\"column\":60}},\"val\":\"{style: {color: 'red', background: bg}}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":19,\"column\":5}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":19,\"column\":5},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":19,\"column\":9}},\"val\":\"div\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":9},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":19,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":19,\"column\":10},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":19,\"column\":46}},\"name\":\"style\",\"mustEscape\":true,\"val\":\"{color: 'red', background: bg}\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":19,\"column\":46},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":19,\"column\":47}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/styles.pug\",\"end\":{\"line\":20,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/tag-blocks.tokens.json",
    "content": "{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":1,\"column\":42}},\"val\":\" we should not get blocks within blocks\",\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":2,\"column\":4}},\"val\":\"div\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":3,\"column\":31}},\"val\":\"We have sent an e-mail to \"}\n{\"type\":\"start-pug-interpolation\",\"loc\":{\"start\":{\"line\":3,\"column\":31},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":3,\"column\":33}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":33},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":3,\"column\":39}},\"val\":\"strong\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":39},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":3,\"column\":57}},\"val\":\"this.props.email\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"end-pug-interpolation\",\"loc\":{\"start\":{\"line\":3,\"column\":57},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":3,\"column\":58}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":58},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":3,\"column\":96}},\"val\":\".  Please click the link in the e-mail\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"'  '\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":5,\"column\":36}},\"val\":\"to confirm your e-mail address.\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/tag-blocks.pug\",\"end\":{\"line\":6,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/tag.interpolation.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":2,\"column\":16}},\"val\":\"var tag = 'p'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":3,\"column\":18}},\"val\":\"var foo = 'bar'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":5,\"column\":7}},\"val\":\"tag\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":8},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"value\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"tag\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":6,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":8},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":6,\"column\":17}},\"name\":\"foo\",\"mustEscape\":true,\"val\":\"'bar'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":17},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":6,\"column\":18}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":6,\"column\":19},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":6,\"column\":24}},\"val\":\"value\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":7,\"column\":20}},\"val\":\"foo ? 'a' : 'li'\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":20},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":7,\"column\":21}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":7,\"column\":21},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":7,\"column\":30}},\"name\":\"something\",\"mustEscape\":true,\"val\":true}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":7,\"column\":30},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":7,\"column\":31}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":32},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":7,\"column\":36}},\"val\":\"here\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":9,\"column\":1}}}\n{\"type\":\"mixin\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":9,\"column\":17}},\"val\":\"item\",\"args\":\"icon\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":10,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":10,\"column\":5}},\"val\":\"li\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":11,\"column\":5}},\"val\":4}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":11,\"column\":5},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":11,\"column\":23}},\"val\":\"attributes.href\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":12,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":12,\"column\":7},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":12,\"column\":8}},\"val\":\"a\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":8},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":12,\"column\":31}},\"val\":\"attributes\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":13,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":13,\"column\":9},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":13,\"column\":12}},\"val\":\"img\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":13,\"column\":12},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":13,\"column\":17}},\"val\":\"icon\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":17},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":13,\"column\":18}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":13,\"column\":18},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":13,\"column\":26}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"icon\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":13,\"column\":26},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":13,\"column\":27}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":14,\"column\":9}}}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":14,\"column\":9},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":14,\"column\":14}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":15,\"column\":5}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":15,\"column\":5}}}\n{\"type\":\"else\",\"loc\":{\"start\":{\"line\":15,\"column\":5},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":15,\"column\":9}},\"val\":\"\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":16,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":7},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":16,\"column\":11}},\"val\":\"span\"}\n{\"type\":\"&attributes\",\"loc\":{\"start\":{\"line\":16,\"column\":11},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":16,\"column\":34}},\"val\":\"attributes\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":17,\"column\":9}},\"val\":8}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":17,\"column\":9},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":17,\"column\":12}},\"val\":\"img\"}\n{\"type\":\"class\",\"loc\":{\"start\":{\"line\":17,\"column\":12},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":17,\"column\":17}},\"val\":\"icon\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":17,\"column\":17},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":17,\"column\":18}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":17,\"column\":18},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":17,\"column\":26}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"icon\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":17,\"column\":26},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":17,\"column\":27}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":18,\"column\":9}}}\n{\"type\":\"mixin-block\",\"loc\":{\"start\":{\"line\":18,\"column\":9},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":18,\"column\":14}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":20,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":21,\"column\":3}},\"val\":2}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":21,\"column\":3},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":21,\"column\":19}},\"val\":\"item\",\"args\":\"'contact'\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":21,\"column\":20},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":21,\"column\":27}},\"val\":\"Contact\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":22,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":22,\"column\":3}}}\n{\"type\":\"call\",\"loc\":{\"start\":{\"line\":22,\"column\":3},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":22,\"column\":8}},\"val\":\"item\",\"args\":null}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":22,\"column\":8},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":22,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":22,\"column\":9},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":22,\"column\":24}},\"name\":\"href\",\"mustEscape\":true,\"val\":\"'/contact'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":22,\"column\":24},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":22,\"column\":25}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":22,\"column\":26},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":22,\"column\":33}},\"val\":\"Contact\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":23,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/tag.interpolation.pug\",\"end\":{\"line\":23,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/tags.self-closing.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":2,\"column\":5}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":3,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":4,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":6},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":4,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":4,\"column\":16}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"'baz'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":16},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":4,\"column\":17}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":5,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"slash\",\"loc\":{\"start\":{\"line\":5,\"column\":6},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":6,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":6,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":6},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":6,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":6,\"column\":16}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"'baz'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":16},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":6,\"column\":17}}}\n{\"type\":\"slash\",\"loc\":{\"start\":{\"line\":6,\"column\":17},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":6,\"column\":18}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":7,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":7,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":7},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":7,\"column\":8}},\"val\":\"/\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":8,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":6},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":8,\"column\":7}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":8,\"column\":7},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":8,\"column\":16}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"'baz'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":8,\"column\":16},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":8,\"column\":17}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":18},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":8,\"column\":19}},\"val\":\"/\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":9,\"column\":11}},\"val\":\"'foo'\"}\n{\"type\":\"slash\",\"loc\":{\"start\":{\"line\":9,\"column\":11},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":9,\"column\":12}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":10,\"column\":3}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":10,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":10,\"column\":11}},\"val\":\"'foo'\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":11},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":10,\"column\":12}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":10,\"column\":12},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":10,\"column\":21}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"'baz'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":10,\"column\":21},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":10,\"column\":22}}}\n{\"type\":\"slash\",\"loc\":{\"start\":{\"line\":10,\"column\":22},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":10,\"column\":23}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":11,\"column\":3}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":11,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":11,\"column\":11}},\"val\":\"'foo'\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":11,\"column\":12},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":11,\"column\":13}},\"val\":\"/\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":12,\"column\":3}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":12,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":12,\"column\":11}},\"val\":\"'foo'\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":11},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":12,\"column\":12}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":12,\"column\":12},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":12,\"column\":21}},\"name\":\"bar\",\"mustEscape\":true,\"val\":\"'baz'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":12,\"column\":21},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":12,\"column\":22}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":23},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":12,\"column\":24}},\"val\":\"/\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":13,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":13,\"column\":3}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":13,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":13,\"column\":41}},\"val\":\" can have a single space after them\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":14,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":14,\"column\":6}},\"val\":\"img\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":14,\"column\":6},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":14,\"column\":7}},\"val\":\" \"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":15,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":15,\"column\":3}}}\n{\"type\":\"comment\",\"loc\":{\"start\":{\"line\":15,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":15,\"column\":46}},\"val\":\" can have lots of white space after them\",\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":16,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":16,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":16,\"column\":6}},\"val\":\"img\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":16,\"column\":7},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":16,\"column\":10}},\"val\":\"   \"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":17,\"column\":3}}}\n{\"type\":\"interpolation\",\"loc\":{\"start\":{\"line\":17,\"column\":3},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":19,\"column\":4}},\"val\":\"\\n    'foo'\\n  \"}\n{\"type\":\"slash\",\"loc\":{\"start\":{\"line\":19,\"column\":4},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":19,\"column\":5}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/tags.self-closing.pug\",\"end\":{\"line\":20,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/template.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":1,\"column\":30}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/x-template'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":30},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":1,\"column\":31}}}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":2,\"column\":10}},\"val\":\"article\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":3,\"column\":7}},\"val\":\"h2\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":3,\"column\":17}},\"val\":\"{{title}}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":4,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":4,\"column\":6}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":4,\"column\":22}},\"val\":\"{{description}}\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":7}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":7},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":8},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":30}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text/x-template'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":30},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":31}}}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":6,\"column\":31},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":32}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":6,\"column\":32},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":6,\"column\":32}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":7,\"column\":3},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":7,\"column\":10}},\"val\":\"article\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":8,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":3},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":8,\"column\":17}},\"val\":\"  h2 {{title}}\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":3},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":9,\"column\":22}},\"val\":\"  p {{description}}\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":9,\"column\":22},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":9,\"column\":22}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":9,\"column\":22},\"filename\":\"/cases/template.pug\",\"end\":{\"line\":9,\"column\":22}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/text-block.tokens.json",
    "content": "{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":2,\"column\":6}},\"val\":\"label\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":2,\"column\":7},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":2,\"column\":16}},\"val\":\"Username:\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":3,\"column\":8}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":8},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":3,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":9},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":3,\"column\":20}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":22},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":3,\"column\":39}},\"name\":\"name\",\"mustEscape\":true,\"val\":\"'user[name]'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":39},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":3,\"column\":40}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":5,\"column\":6}},\"val\":\"label\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":5,\"column\":16}},\"val\":\"Password:\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":6,\"column\":3},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":8}},\"val\":\"input\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":8},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":9}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":9},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":20}},\"name\":\"type\",\"mustEscape\":true,\"val\":\"'text'\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":6,\"column\":22},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":39}},\"name\":\"name\",\"mustEscape\":true,\"val\":\"'user[pass]'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":6,\"column\":39},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":40}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":40},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":40}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":40},\"filename\":\"/cases/text-block.pug\",\"end\":{\"line\":6,\"column\":40}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/text.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":1,\"column\":7}},\"val\":\"option\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":7},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":1,\"column\":8}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":1,\"column\":8},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":1,\"column\":16}},\"name\":\"value\",\"mustEscape\":true,\"val\":\"''\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":1,\"column\":16},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":1,\"column\":17}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":18},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":1,\"column\":34}},\"val\":\"-- (selected) --\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":5,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":5,\"column\":2},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":7,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":7,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":7,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":8,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":8,\"column\":3}},\"val\":2}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":8,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":8,\"column\":8}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":9,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":9,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":9,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":9,\"column\":8}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":10,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":10,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":10,\"column\":4},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":10,\"column\":4}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":11,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":11,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":11,\"column\":4},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":11,\"column\":5}},\"val\":\" \"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":12,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":12,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":12,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":12,\"column\":8}},\"val\":\"baz\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":14,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":14,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":14,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":14,\"column\":2},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":14,\"column\":3}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":14,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":14,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":15,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":15,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":16,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":16,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":16,\"column\":1}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":17,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":17,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":17,\"column\":1}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":18,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":18,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":18,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":18,\"column\":6}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":19,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":19,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":19,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":19,\"column\":6}},\"val\":\"baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":20,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":20,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":20,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":21,\"column\":1}}}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":21,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":21,\"column\":2}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":23,\"column\":1}}}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":23,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":23,\"column\":2}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":23,\"column\":2},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":23,\"column\":2}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":24,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":24,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":25,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":25,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":25,\"column\":1}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":26,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":26,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":26,\"column\":1}},\"val\":\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":27,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":27,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":27,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":27,\"column\":6}},\"val\":\"bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":28,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":28,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":28,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":28,\"column\":6}},\"val\":\"baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":29,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":29,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":29,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":30,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":30,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":30,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":30,\"column\":4}},\"val\":\"pre\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":31,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":31,\"column\":3}},\"val\":2}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":31,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":31,\"column\":8}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":32,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":32,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":32,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":32,\"column\":10}},\"val\":\"  bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":33,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":33,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":33,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":33,\"column\":12}},\"val\":\"    baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":34,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":34,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":34,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":34,\"column\":6}},\"val\":\".\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":36,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":36,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":36,\"column\":4}},\"val\":\"pre\"}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":36,\"column\":4},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":36,\"column\":5}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":36,\"column\":5},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":36,\"column\":5}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":37,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":37,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":38,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":38,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":38,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":38,\"column\":8}},\"val\":\"  bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":39,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":39,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":39,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":39,\"column\":10}},\"val\":\"    baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":40,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":40,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":40,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":40,\"column\":4}},\"val\":\".\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":41,\"column\":1}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":41,\"column\":1}},\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":41,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":41,\"column\":1}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":42,\"column\":1}}}\n{\"type\":\"dot\",\"loc\":{\"start\":{\"line\":42,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":42,\"column\":2}}}\n{\"type\":\"start-pipeless-text\",\"loc\":{\"start\":{\"line\":42,\"column\":2},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":42,\"column\":2}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":43,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":43,\"column\":6}},\"val\":\"foo\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":44,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":44,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":44,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":44,\"column\":8}},\"val\":\"  bar\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":45,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":45,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":45,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":45,\"column\":10}},\"val\":\"    baz\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":46,\"column\":1},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":46,\"column\":3}}}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":46,\"column\":3},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":46,\"column\":4}},\"val\":\".\"}\n{\"type\":\"end-pipeless-text\",\"loc\":{\"start\":{\"line\":46,\"column\":4},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":46,\"column\":4}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":46,\"column\":4},\"filename\":\"/cases/text.pug\",\"end\":{\"line\":46,\"column\":4}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/utf8bom.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/utf8bom.pug\",\"end\":{\"line\":1,\"column\":2}},\"val\":\"p\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":1,\"column\":3},\"filename\":\"/cases/utf8bom.pug\",\"end\":{\"line\":1,\"column\":8}},\"val\":\"\\\"foo\\\"\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/utf8bom.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/utf8bom.pug\",\"end\":{\"line\":2,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/vars.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":1,\"column\":18}},\"val\":\"var foo = 'bar'\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":2,\"column\":21}},\"val\":\"var list = [1,2,3]\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":3,\"column\":2}},\"val\":\"a\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":2},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":3,\"column\":13}},\"name\":\"class\",\"mustEscape\":true,\"val\":\"list\"}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":3,\"column\":15},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":3,\"column\":21}},\"name\":\"id\",\"mustEscape\":true,\"val\":\"foo\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":3,\"column\":21},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":3,\"column\":22}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":22},\"filename\":\"/cases/vars.pug\",\"end\":{\"line\":3,\"column\":22}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/while.tokens.json",
    "content": "{\"type\":\"code\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":1,\"column\":13}},\"val\":\"var x = 1;\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":\"ul\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":3,\"column\":3}},\"val\":2}\n{\"type\":\"while\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":3,\"column\":15}},\"val\":\"x < 10\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":4,\"column\":5}},\"val\":4}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":4,\"column\":5},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"x++;\",\"mustEscape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":5,\"column\":5}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":5,\"column\":7}},\"val\":\"li\"}\n{\"type\":\"code\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":5,\"column\":10}},\"val\":\"x\",\"mustEscape\":true,\"buffer\":true}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/while.pug\",\"end\":{\"line\":6,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/xml.tokens.json",
    "content": "{\"type\":\"doctype\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":1,\"column\":12}},\"val\":\"xml\"}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":2,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":2,\"column\":9}},\"val\":\"category\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":2,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":10},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":2,\"column\":26}},\"name\":\"term\",\"mustEscape\":true,\"val\":\"'some term'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":26},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":2,\"column\":27}}}\n{\"type\":\"slash\",\"loc\":{\"start\":{\"line\":2,\"column\":27},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":2,\"column\":28}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":3,\"column\":1}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":\"link\"}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":3,\"column\":6},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":3,\"column\":23}},\"val\":\"http://google.com\"}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":3,\"column\":23},\"filename\":\"/cases/xml.pug\",\"end\":{\"line\":3,\"column\":23}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/yield-before-conditional-head.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":2,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":2,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":10},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":2,\"column\":26}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":26},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":2,\"column\":27}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"yield\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":3,\"column\":8}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"if\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":4,\"column\":11}},\"val\":\"false\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":5,\"column\":5}},\"val\":4}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":5},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":5,\"column\":11}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":11},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":5,\"column\":12}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":12},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":5,\"column\":31}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/jquery.ui.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":31},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":5,\"column\":32}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-before-conditional-head.pug\",\"end\":{\"line\":6,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/yield-before-conditional.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":3,\"column\":46}},\"val\":\"yield-before-conditional-head.pug\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":4,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":14},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":4,\"column\":31}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/caustic.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":31},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":4,\"column\":32}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":5,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":14},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":5,\"column\":27}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/app.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":27},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":5,\"column\":28}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-before-conditional.pug\",\"end\":{\"line\":6,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/yield-head.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":2,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":9},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":2,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":2,\"column\":10},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":2,\"column\":26}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":2,\"column\":26},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":2,\"column\":27}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":3,\"column\":3}}}\n{\"type\":\"yield\",\"loc\":{\"start\":{\"line\":3,\"column\":3},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":3,\"column\":8}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":9},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":4,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":10},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":4,\"column\":29}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/jquery.ui.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":29},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":4,\"column\":30}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-head.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/yield-title-head.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"head\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":2,\"column\":8}},\"val\":\"title\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"yield\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":3,\"column\":10}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":4,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":3},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":4,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":9},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":4,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":10},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":4,\"column\":26}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/jquery.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":26},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":4,\"column\":27}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":5,\"column\":3}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":3},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":5,\"column\":9}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":9},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":5,\"column\":10}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":10},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":5,\"column\":29}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/jquery.ui.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":29},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":5,\"column\":30}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield-title-head.pug\",\"end\":{\"line\":6,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/yield-title.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":3,\"column\":33}},\"val\":\"yield-title-head.pug\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"text\",\"loc\":{\"start\":{\"line\":4,\"column\":9},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":4,\"column\":17}},\"val\":\"My Title\"}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":5,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield-title.pug\",\"end\":{\"line\":5,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/cases/yield.tokens.json",
    "content": "{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":1,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":1,\"column\":5}},\"val\":\"html\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":2,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":2,\"column\":3}},\"val\":2}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":2,\"column\":3},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":2,\"column\":7}},\"val\":\"body\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":3,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":3,\"column\":5}},\"val\":4}\n{\"type\":\"include\",\"loc\":{\"start\":{\"line\":3,\"column\":5},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":3,\"column\":12}}}\n{\"type\":\"path\",\"loc\":{\"start\":{\"line\":3,\"column\":13},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":3,\"column\":27}},\"val\":\"yield-head.pug\"}\n{\"type\":\"indent\",\"loc\":{\"start\":{\"line\":4,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":4,\"column\":7}},\"val\":6}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":4,\"column\":7},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":4,\"column\":13}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":13},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":4,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":4,\"column\":14},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":4,\"column\":31}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/caustic.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":4,\"column\":31},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":4,\"column\":32}}}\n{\"type\":\"newline\",\"loc\":{\"start\":{\"line\":5,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":5,\"column\":7}}}\n{\"type\":\"tag\",\"loc\":{\"start\":{\"line\":5,\"column\":7},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":5,\"column\":13}},\"val\":\"script\"}\n{\"type\":\"start-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":13},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":5,\"column\":14}}}\n{\"type\":\"attribute\",\"loc\":{\"start\":{\"line\":5,\"column\":14},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":5,\"column\":27}},\"name\":\"src\",\"mustEscape\":true,\"val\":\"'/app.js'\"}\n{\"type\":\"end-attributes\",\"loc\":{\"start\":{\"line\":5,\"column\":27},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":5,\"column\":28}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"outdent\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":6,\"column\":1}}}\n{\"type\":\"eos\",\"loc\":{\"start\":{\"line\":6,\"column\":1},\"filename\":\"/cases/yield.pug\",\"end\":{\"line\":6,\"column\":1}}}"
  },
  {
    "path": "packages/pug-parser/test/index.test.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar parse = require('../');\n\nvar testCases = fs.readdirSync(__dirname + '/cases').filter(function(name) {\n  return /\\.tokens\\.json$/.test(name);\n});\n\nfunction parseNewlineJson(str) {\n  return str\n    .split('\\n')\n    .filter(Boolean)\n    .map(JSON.parse);\n}\n\nfunction read(path) {\n  return fs.readFileSync(__dirname + '/cases/' + path, 'utf8');\n}\n\ntestCases.forEach(function(filename) {\n  test(filename, () => {\n    var actualAst = parse(parseNewlineJson(read(filename)), {\n      filename: filename,\n    });\n    expect(actualAst).toMatchSnapshot();\n  });\n});\n"
  },
  {
    "path": "packages/pug-parser/test/no-unnecessary-blocks.test.js",
    "content": "'use strict';\n\nvar lex = require('pug-lexer');\nvar parse = require('../');\n\nconst input = `\ndiv\n  | Hello\n  | World\n`;\n\ntest('no uncessessary blocks should be added', () => {\n  expect(parse(lex(input))).toMatchSnapshot();\n});\n"
  },
  {
    "path": "packages/pug-runtime/.gitignore",
    "content": "/lib\n"
  },
  {
    "path": "packages/pug-runtime/CHANGELOG.md",
    "content": "# Change Log\nAll notable changes to this project will be documented in this file.\nThis project adheres to [Semantic Versioning](http://semver.org/).\n\n## 2.0.2\n### Changed\n- `require('fs')` calls will now be ignored by browser bundlers, through using\n  `browser` field in `package.json`. Fallbacks for cases where `fs` module is\n  not available were already in place prior to this release.\n\n## 2.0.1\n### Changed\n- This package has been renamed to pug-runtime.\n- `attrs()` has been optimized.\n\n## 2.0.0\n### Changed\n- `classes()` has been optimized, making it more than 9x faster.\n- `style()` has been optimized, making it 3-9x faster in average cases.\n- `escape()` has been optimized again, now with another 1-4x boost from the\n  last release.\n- `attrs()`, `attr()`, and `merge()` also got some minor improvements.\n  Although not benchmarked, we expect the new versions to perform better than\n  last release.\n\n### Deprecated\n- Internal variables, or variables or functions that were not exported but\n  visible through `require('pug-runtime/build')`, will not be visible through\n  `require('pug-runtime/build')` anymore.\n- `pug_encode_html_rules` and `pug_encode_char`, two internal variables, have\n  now been removed. Please note that any further changes to these internal\n  variables will not come with a major bump.\n\n### Added\n- A new module `require('pug-runtime/wrap')` is added to ease testing\n  client-side templates.\n\n## 1.1.0 - 2015-07-09\n### Changed\n- `escape()` has been optimized, making it about 20-30% faster. The new\n  implementation is inspired by the one from EJS.\n\n## 1.0.0 - 2014-12-28\n### Added\n- Initial release\n"
  },
  {
    "path": "packages/pug-runtime/LICENSE",
    "content": "Copyright (c) 2014 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-runtime/README.md",
    "content": "# pug-runtime\n\nThe runtime components for the pug templating language\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-runtime/master.svg)](https://travis-ci.org/pugjs/pug-runtime)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-runtime)](https://david-dm.org/pugjs/pug?path=packages/pug-runtime)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-runtime)](https://david-dm.org/pugjs/pug?path=packages/pug-runtime&type=dev)\n[![NPM version](https://img.shields.io/npm/v/pug-runtime.svg)](https://www.npmjs.org/package/pug-runtime)\n\n## Installation\n\n    npm install pug-runtime\n\n## Usage\n\n\nYou can call runtime methods directly using `runtime.method`.  This is particularly useful when compiling to deal with things that are already known at compile time.\n\n```js\nvar runtime = require('pug-runtime');\n\nassert(runtime.attr('foo', 'bar', true, true) === ' foo=\"bar\"');\n```\n\nYou can also build a string with a given list of functions available as `pug_method` by calling `build(arrayOfMethods)`.  This is useful for inlining runtime functions within the compiled templates.\n\n```js\nvar build = require('pug-runtime/build');\nvar src = build(['attr']);\n\nvar attr = Function('', src + ';return pug_attr;')();\nassert(attr('foo', 'bar', true, true) === ' foo=\"bar\"');\n```\n\nWhen testing code compiled for the browser in Node.js, it is necessary to make the runtime available. To do so, one can use `require('pug-runtime/wrap')`:\n\n```js\nvar pug = require('pug');\nvar wrap = require('pug-runtime/wrap');\n\nvar pugSrc = 'p= content';\n// By default compileClient automatically embeds the needed runtime functions,\n// rendering this module useless.\nvar compiledCode = pug.compileClient(pugSrc, {\n  externalRuntime: true\n});\n//=> 'function template (locals) { ... pug.escape() ... }'\n\nvar templateFunc = wrap(compiledCode);\ntemplateFunc({content: 'Hey!'});\n//=> '<p>Hey!</p>'\n\n// Change template function name to 'heyTemplate'\ncompiledCode = pug.compileClient(pugSrc, {\n  externalRuntime: true,\n  name: 'heyTemplate'\n});\n//=> 'function heyTemplate (locals) { ... }'\n\ntemplateFunc = wrap(compiledCode, 'heyTemplate');\ntemplateFunc({content: 'Hey!'});\n//=> '<p>Hey!</p>'\n```\n\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-runtime/build.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar dependencies = require('./lib/dependencies.js');\nvar internals = require('./lib/internals.js');\nvar sources = require('./lib/sources.js');\n\nmodule.exports = build;\n\nfunction build(functions) {\n  var fns = [];\n  functions = functions.filter(function(fn) {\n    return !internals[fn];\n  });\n  for (var i = 0; i < functions.length; i++) {\n    if (fns.indexOf(functions[i]) === -1) {\n      fns.push(functions[i]);\n      functions.push.apply(functions, dependencies[functions[i]]);\n    }\n  }\n  return fns\n    .sort()\n    .map(function(name) {\n      return sources[name];\n    })\n    .join('\\n');\n}\n"
  },
  {
    "path": "packages/pug-runtime/index.js",
    "content": "'use strict';\n\nvar pug_has_own_property = Object.prototype.hasOwnProperty;\n\n/**\n * Merge two attribute objects giving precedence\n * to values in object `b`. Classes are special-cased\n * allowing for arrays and merging/joining appropriately\n * resulting in a string.\n *\n * @param {Object} a\n * @param {Object} b\n * @return {Object} a\n * @api private\n */\n\nexports.merge = pug_merge;\nfunction pug_merge(a, b) {\n  if (arguments.length === 1) {\n    var attrs = a[0];\n    for (var i = 1; i < a.length; i++) {\n      attrs = pug_merge(attrs, a[i]);\n    }\n    return attrs;\n  }\n\n  for (var key in b) {\n    if (key === 'class') {\n      var valA = a[key] || [];\n      a[key] = (Array.isArray(valA) ? valA : [valA]).concat(b[key] || []);\n    } else if (key === 'style') {\n      var valA = pug_style(a[key]);\n      valA = valA && valA[valA.length - 1] !== ';' ? valA + ';' : valA;\n      var valB = pug_style(b[key]);\n      valB = valB && valB[valB.length - 1] !== ';' ? valB + ';' : valB;\n      a[key] = valA + valB;\n    } else {\n      a[key] = b[key];\n    }\n  }\n\n  return a;\n}\n\n/**\n * Process array, object, or string as a string of classes delimited by a space.\n *\n * If `val` is an array, all members of it and its subarrays are counted as\n * classes. If `escaping` is an array, then whether or not the item in `val` is\n * escaped depends on the corresponding item in `escaping`. If `escaping` is\n * not an array, no escaping is done.\n *\n * If `val` is an object, all the keys whose value is truthy are counted as\n * classes. No escaping is done.\n *\n * If `val` is a string, it is counted as a class. No escaping is done.\n *\n * @param {(Array.<string>|Object.<string, boolean>|string)} val\n * @param {?Array.<string>} escaping\n * @return {String}\n */\nexports.classes = pug_classes;\nfunction pug_classes_array(val, escaping) {\n  var classString = '',\n    className,\n    padding = '',\n    escapeEnabled = Array.isArray(escaping);\n  for (var i = 0; i < val.length; i++) {\n    className = pug_classes(val[i]);\n    if (!className) continue;\n    escapeEnabled && escaping[i] && (className = pug_escape(className));\n    classString = classString + padding + className;\n    padding = ' ';\n  }\n  return classString;\n}\nfunction pug_classes_object(val) {\n  var classString = '',\n    padding = '';\n  for (var key in val) {\n    if (key && val[key] && pug_has_own_property.call(val, key)) {\n      classString = classString + padding + key;\n      padding = ' ';\n    }\n  }\n  return classString;\n}\nfunction pug_classes(val, escaping) {\n  if (Array.isArray(val)) {\n    return pug_classes_array(val, escaping);\n  } else if (val && typeof val === 'object') {\n    return pug_classes_object(val);\n  } else {\n    return val || '';\n  }\n}\n\n/**\n * Convert object or string to a string of CSS styles delimited by a semicolon.\n *\n * @param {(Object.<string, string>|string)} val\n * @return {String}\n */\n\nexports.style = pug_style;\nfunction pug_style(val) {\n  if (!val) return '';\n  if (typeof val === 'object') {\n    var out = '';\n    for (var style in val) {\n      /* istanbul ignore else */\n      if (pug_has_own_property.call(val, style)) {\n        out = out + style + ':' + val[style] + ';';\n      }\n    }\n    return out;\n  } else {\n    return val + '';\n  }\n}\n\n/**\n * Render the given attribute.\n *\n * @param {String} key\n * @param {String} val\n * @param {Boolean} escaped\n * @param {Boolean} terse\n * @return {String}\n */\nexports.attr = pug_attr;\nfunction pug_attr(key, val, escaped, terse) {\n  if (\n    val === false ||\n    val == null ||\n    (!val && (key === 'class' || key === 'style'))\n  ) {\n    return '';\n  }\n  if (val === true) {\n    return ' ' + (terse ? key : key + '=\"' + key + '\"');\n  }\n  var type = typeof val;\n  if (\n    (type === 'object' || type === 'function') &&\n    typeof val.toJSON === 'function'\n  ) {\n    val = val.toJSON();\n  }\n  if (typeof val !== 'string') {\n    val = JSON.stringify(val);\n    if (!escaped && val.indexOf('\"') !== -1) {\n      return ' ' + key + \"='\" + val.replace(/'/g, '&#39;') + \"'\";\n    }\n  }\n  if (escaped) val = pug_escape(val);\n  return ' ' + key + '=\"' + val + '\"';\n}\n\n/**\n * Render the given attributes object.\n *\n * @param {Object} obj\n * @param {Object} terse whether to use HTML5 terse boolean attributes\n * @return {String}\n */\nexports.attrs = pug_attrs;\nfunction pug_attrs(obj, terse) {\n  var attrs = '';\n\n  for (var key in obj) {\n    if (pug_has_own_property.call(obj, key)) {\n      var val = obj[key];\n\n      if ('class' === key) {\n        val = pug_classes(val);\n        attrs = pug_attr(key, val, false, terse) + attrs;\n        continue;\n      }\n      if ('style' === key) {\n        val = pug_style(val);\n      }\n      attrs += pug_attr(key, val, false, terse);\n    }\n  }\n\n  return attrs;\n}\n\n/**\n * Escape the given string of `html`.\n *\n * @param {String} html\n * @return {String}\n * @api private\n */\n\nvar pug_match_html = /[\"&<>]/;\nexports.escape = pug_escape;\nfunction pug_escape(_html) {\n  var html = '' + _html;\n  var regexResult = pug_match_html.exec(html);\n  if (!regexResult) return _html;\n\n  var result = '';\n  var i, lastIndex, escape;\n  for (i = regexResult.index, lastIndex = 0; i < html.length; i++) {\n    switch (html.charCodeAt(i)) {\n      case 34:\n        escape = '&quot;';\n        break;\n      case 38:\n        escape = '&amp;';\n        break;\n      case 60:\n        escape = '&lt;';\n        break;\n      case 62:\n        escape = '&gt;';\n        break;\n      default:\n        continue;\n    }\n    if (lastIndex !== i) result += html.substring(lastIndex, i);\n    lastIndex = i + 1;\n    result += escape;\n  }\n  if (lastIndex !== i) return result + html.substring(lastIndex, i);\n  else return result;\n}\n\n/**\n * Re-throw the given `err` in context to the\n * the pug in `filename` at the given `lineno`.\n *\n * @param {Error} err\n * @param {String} filename\n * @param {String} lineno\n * @param {String} str original source\n * @api private\n */\n\nexports.rethrow = pug_rethrow;\nfunction pug_rethrow(err, filename, lineno, str) {\n  if (!(err instanceof Error)) throw err;\n  if ((typeof window != 'undefined' || !filename) && !str) {\n    err.message += ' on line ' + lineno;\n    throw err;\n  }\n  var context, lines, start, end;\n  try {\n    str = str || require('fs').readFileSync(filename, {encoding: 'utf8'});\n    context = 3;\n    lines = str.split('\\n');\n    start = Math.max(lineno - context, 0);\n    end = Math.min(lines.length, lineno + context);\n  } catch (ex) {\n    err.message +=\n      ' - could not read from ' + filename + ' (' + ex.message + ')';\n    pug_rethrow(err, null, lineno);\n    return;\n  }\n\n  // Error context\n  context = lines\n    .slice(start, end)\n    .map(function(line, i) {\n      var curr = i + start + 1;\n      return (curr == lineno ? '  > ' : '    ') + curr + '| ' + line;\n    })\n    .join('\\n');\n\n  // Alter exception message\n  err.path = filename;\n  try {\n    err.message =\n      (filename || 'Pug') +\n      ':' +\n      lineno +\n      '\\n' +\n      context +\n      '\\n\\n' +\n      err.message;\n  } catch (e) {}\n  throw err;\n}\n"
  },
  {
    "path": "packages/pug-runtime/package.json",
    "content": "{\n  \"name\": \"pug-runtime\",\n  \"version\": \"2.0.5\",\n  \"description\": \"The runtime components for the pug templating language\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"devDependencies\": {\n    \"uglify-js\": \"^2.6.1\"\n  },\n  \"files\": [\n    \"build.js\",\n    \"index.js\",\n    \"lib/dependencies.js\",\n    \"lib/internals.js\",\n    \"lib/sources.js\",\n    \"wrap.js\"\n  ],\n  \"scripts\": {\n    \"prepublish\": \"node prepublish\",\n    \"pretest\": \"npm run prepublish\",\n    \"build\": \"node prepublish\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-runtime\"\n  },\n  \"browser\": {\n    \"fs\": false\n  },\n  \"author\": \"ForbesLindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-runtime/prepublish.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar uglify = require('uglify-js');\nvar runtime = require('./');\n\ntry {\n  fs.mkdirSync(__dirname + '/lib');\n} catch (ex) {\n  if (ex.code !== 'EEXIST') throw ex;\n}\nvar source = fs.readFileSync(__dirname + '/index.js', 'utf8');\nvar ast = uglify.parse(source);\n\nvar dependencies = {};\nvar internals = {dependencies: true, internals: true};\nvar sources = {};\nast.body.forEach(function(node) {\n  var name;\n  switch (node.TYPE) {\n    case 'Defun':\n      name = node.name.name;\n      break;\n    case 'Var':\n      name = node.definitions[0].name.name;\n      break;\n  }\n  if (!name || !/^pug\\_/.test(name)) return;\n  name = name.replace(/^pug\\_/, '');\n\n  var src = uglify.minify(source.substring(node.start.pos, node.end.endpos), {\n    fromString: true,\n  }).code;\n  sources[name] = src;\n\n  dependencies[name] = [];\n  if (node.TYPE === 'Defun') {\n    var ast = uglify.parse(src);\n    ast.figure_out_scope();\n    var globals = ast.globals.map(function(val, key) {\n      return key;\n    });\n    dependencies[name] = globals\n      .filter(function(key) {\n        return /^pug\\_/.test(key);\n      })\n      .map(function(key) {\n        return key.replace(/^pug\\_/, '');\n      });\n  }\n\n  if (!runtime[name]) internals[name] = true;\n});\n\nObject.keys(dependencies).forEach(function(fn) {\n  dependencies[fn] = dependencies[fn].sort();\n});\n\nfs.writeFileSync(\n  __dirname + '/lib/dependencies.js',\n  'module.exports = ' + JSON.stringify(dependencies, null, 2) + '\\n'\n);\nfs.writeFileSync(\n  __dirname + '/lib/internals.js',\n  'module.exports = ' + JSON.stringify(internals, null, 2) + '\\n'\n);\nfs.writeFileSync(\n  __dirname + '/lib/sources.js',\n  'module.exports = ' + JSON.stringify(sources, null, 2) + '\\n'\n);\n"
  },
  {
    "path": "packages/pug-runtime/test/index.test.js",
    "content": "'use strict';\n\nvar runtime = require('../');\nvar build = require('../build');\nvar wrap = require('../wrap');\n\nfunction addTest(name, fn) {\n  test(name, function() {\n    fn(runtime[name]);\n    fn(Function('', build([name]) + ';return pug_' + name + ';')());\n    fn(wrap('function t() {return pug.' + name + ';}', 't')());\n  });\n}\n\naddTest('attr', function(attr) {\n  // (key, val, escaped, terse)\n  var stringToJSON = String.prototype.toJSON;\n\n  String.prototype.toJSON = function() {\n    return JSON.stringify(this);\n  };\n\n  // Boolean Attributes\n  expect(attr('key', true, true, true)).toBe(' key');\n  expect(attr('key', true, false, true)).toBe(' key');\n  expect(attr('key', true, true, false)).toBe(' key=\"key\"');\n  expect(attr('key', true, false, false)).toBe(' key=\"key\"');\n  expect(attr('key', false, true, true)).toBe('');\n  expect(attr('key', false, false, true)).toBe('');\n  expect(attr('key', false, true, false)).toBe('');\n  expect(attr('key', false, false, false)).toBe('');\n  expect(attr('key', null, true, true)).toBe('');\n  expect(attr('key', null, false, true)).toBe('');\n  expect(attr('key', null, true, false)).toBe('');\n  expect(attr('key', null, false, false)).toBe('');\n  expect(attr('key', undefined, true, true)).toBe('');\n  expect(attr('key', undefined, false, true)).toBe('');\n  expect(attr('key', undefined, true, false)).toBe('');\n  expect(attr('key', undefined, false, false)).toBe('');\n\n  // Date Attributes\n  expect(attr('key', new Date('2014-12-28T16:46:06.962Z'), true, true)).toBe(\n    ' key=\"2014-12-28T16:46:06.962Z\"'\n  );\n  expect(attr('key', new Date('2014-12-28T16:46:06.962Z'), false, true)).toBe(\n    ' key=\"2014-12-28T16:46:06.962Z\"'\n  );\n  expect(attr('key', new Date('2014-12-28T16:46:06.962Z'), true, false)).toBe(\n    ' key=\"2014-12-28T16:46:06.962Z\"'\n  );\n  expect(attr('key', new Date('2014-12-28T16:46:06.962Z'), false, false)).toBe(\n    ' key=\"2014-12-28T16:46:06.962Z\"'\n  );\n\n  // Custom JSON Attributes\n  expect(\n    attr(\n      'key',\n      {\n        toJSON: function() {\n          return 'bar';\n        },\n      },\n      true,\n      false\n    )\n  ).toBe(' key=\"bar\"');\n  expect(\n    attr(\n      'key',\n      {\n        toJSON: function() {\n          return {foo: 'bar'};\n        },\n      },\n      true,\n      false\n    )\n  ).toBe(' key=\"{&quot;foo&quot;:&quot;bar&quot;}\"');\n\n  // JSON Attributes\n  expect(attr('key', {foo: 'bar'}, true, true)).toBe(\n    ' key=\"{&quot;foo&quot;:&quot;bar&quot;}\"'\n  );\n  expect(attr('key', {foo: 'bar'}, false, true)).toBe(' key=\\'{\"foo\":\"bar\"}\\'');\n  expect(attr('key', {foo: \"don't\"}, true, true)).toBe(\n    ' key=\"{&quot;foo&quot;:&quot;don\\'t&quot;}\"'\n  );\n  expect(attr('key', {foo: \"don't\"}, false, true)).toBe(\n    ' key=\\'{\"foo\":\"don&#39;t\"}\\''\n  );\n\n  // Number attributes\n  expect(attr('key', 500, true, true)).toBe(' key=\"500\"');\n  expect(attr('key', 500, false, true)).toBe(' key=\"500\"');\n  expect(attr('key', 500, true, false)).toBe(' key=\"500\"');\n  expect(attr('key', 500, false, false)).toBe(' key=\"500\"');\n\n  // String attributes\n  expect(attr('key', 'foo', true, true)).toBe(' key=\"foo\"');\n  expect(attr('key', 'foo', false, true)).toBe(' key=\"foo\"');\n  expect(attr('key', 'foo', true, false)).toBe(' key=\"foo\"');\n  expect(attr('key', 'foo', false, false)).toBe(' key=\"foo\"');\n  expect(attr('key', 'foo>bar', true, true)).toBe(' key=\"foo&gt;bar\"');\n  expect(attr('key', 'foo>bar', false, true)).toBe(' key=\"foo>bar\"');\n  expect(attr('key', 'foo>bar', true, false)).toBe(' key=\"foo&gt;bar\"');\n  expect(attr('key', 'foo>bar', false, false)).toBe(' key=\"foo>bar\"');\n\n  String.prototype.toJSON = stringToJSON;\n});\n\naddTest('attrs', function(attrs) {\n  // (obj, terse)\n  expect(attrs({foo: 'bar'}, true)).toBe(' foo=\"bar\"');\n  expect(attrs({foo: 'bar'}, false)).toBe(' foo=\"bar\"');\n  expect(attrs({foo: 'bar', hoo: 'boo'}, true)).toBe(' foo=\"bar\" hoo=\"boo\"');\n  expect(attrs({foo: 'bar', hoo: 'boo'}, false)).toBe(' foo=\"bar\" hoo=\"boo\"');\n  expect(attrs({foo: ''}, true)).toBe(' foo=\"\"');\n  expect(attrs({foo: ''}, false)).toBe(' foo=\"\"');\n  expect(attrs({class: ''}, true)).toBe('');\n  expect(attrs({class: ''}, false)).toBe('');\n  expect(attrs({class: ['foo', {bar: true}]}, true)).toBe(' class=\"foo bar\"');\n  expect(attrs({class: ['foo', {bar: true}]}, false)).toBe(' class=\"foo bar\"');\n  expect(attrs({class: ['foo', {bar: true}], foo: 'bar'}, true)).toBe(\n    ' class=\"foo bar\" foo=\"bar\"'\n  );\n  expect(attrs({foo: 'bar', class: ['foo', {bar: true}]}, false)).toBe(\n    ' class=\"foo bar\" foo=\"bar\"'\n  );\n  expect(attrs({style: 'foo: bar;'}, true)).toBe(' style=\"foo: bar;\"');\n  expect(attrs({style: 'foo: bar;'}, false)).toBe(' style=\"foo: bar;\"');\n  expect(attrs({style: {foo: 'bar'}}, true)).toBe(' style=\"foo:bar;\"');\n  expect(attrs({style: {foo: 'bar'}}, false)).toBe(' style=\"foo:bar;\"');\n});\n\naddTest('classes', function(classes) {\n  expect(classes(['foo', 'bar'])).toBe('foo bar');\n  expect(\n    classes([\n      ['foo', 'bar'],\n      ['baz', 'bash'],\n    ])\n  ).toBe('foo bar baz bash');\n  expect(classes([['foo', 'bar'], {baz: true, bash: false}])).toBe(\n    'foo bar baz'\n  );\n  expect(\n    classes([['fo<o', 'bar'], {'ba>z': true, bash: false}], [true, false])\n  ).toBe('fo&lt;o bar ba>z');\n});\n\naddTest('escape', function(escape) {\n  expect(escape('foo')).toBe('foo');\n  expect(escape(10)).toBe(10);\n  expect(escape('foo<bar')).toBe('foo&lt;bar');\n  expect(escape('foo&<bar')).toBe('foo&amp;&lt;bar');\n  expect(escape('foo&<>bar')).toBe('foo&amp;&lt;&gt;bar');\n  expect(escape('foo&<>\"bar')).toBe('foo&amp;&lt;&gt;&quot;bar');\n  expect(escape('foo&<>\"bar\"')).toBe('foo&amp;&lt;&gt;&quot;bar&quot;');\n});\n\naddTest('merge', function(merge) {\n  expect(merge({foo: 'bar'}, {baz: 'bash'})).toEqual({foo: 'bar', baz: 'bash'});\n  expect(merge([{foo: 'bar'}, {baz: 'bash'}, {bing: 'bong'}])).toEqual({\n    foo: 'bar',\n    baz: 'bash',\n    bing: 'bong',\n  });\n  expect(merge({class: 'bar'}, {class: 'bash'})).toEqual({\n    class: ['bar', 'bash'],\n  });\n  expect(merge({class: ['bar']}, {class: 'bash'})).toEqual({\n    class: ['bar', 'bash'],\n  });\n  expect(merge({class: 'bar'}, {class: ['bash']})).toEqual({\n    class: ['bar', 'bash'],\n  });\n  expect(merge({class: 'bar'}, {class: null})).toEqual({class: ['bar']});\n  expect(merge({class: null}, {class: ['bar']})).toEqual({class: ['bar']});\n  expect(merge({}, {class: ['bar']})).toEqual({class: ['bar']});\n  expect(merge({class: ['bar']}, {})).toEqual({class: ['bar']});\n\n  expect(merge({style: 'foo:bar'}, {style: 'baz:bash'})).toEqual({\n    style: 'foo:bar;baz:bash;',\n  });\n  expect(merge({style: 'foo:bar;'}, {style: 'baz:bash'})).toEqual({\n    style: 'foo:bar;baz:bash;',\n  });\n  expect(merge({style: {foo: 'bar'}}, {style: 'baz:bash'})).toEqual({\n    style: 'foo:bar;baz:bash;',\n  });\n  expect(merge({style: {foo: 'bar'}}, {style: {baz: 'bash'}})).toEqual({\n    style: 'foo:bar;baz:bash;',\n  });\n  expect(merge({style: 'foo:bar'}, {style: null})).toEqual({style: 'foo:bar;'});\n  expect(merge({style: 'foo:bar;'}, {style: null})).toEqual({\n    style: 'foo:bar;',\n  });\n  expect(merge({style: {foo: 'bar'}}, {style: null})).toEqual({\n    style: 'foo:bar;',\n  });\n  expect(merge({style: null}, {style: 'baz:bash'})).toEqual({\n    style: 'baz:bash;',\n  });\n  expect(merge({style: null}, {style: 'baz:bash'})).toEqual({\n    style: 'baz:bash;',\n  });\n  expect(merge({style: null}, {style: 'baz:bash'})).toEqual({\n    style: 'baz:bash;',\n  });\n  expect(merge({}, {style: 'baz:bash'})).toEqual({style: 'baz:bash;'});\n  expect(merge({}, {style: 'baz:bash'})).toEqual({style: 'baz:bash;'});\n  expect(merge({}, {style: 'baz:bash'})).toEqual({style: 'baz:bash;'});\n});\n\naddTest('style', function(style) {\n  expect(style(null)).toBe('');\n  expect(style('')).toBe('');\n  expect(style('foo: bar')).toBe('foo: bar');\n  expect(style('foo: bar;')).toBe('foo: bar;');\n  expect(style({foo: 'bar'})).toBe('foo:bar;');\n  expect(style({foo: 'bar', baz: 'bash'})).toBe('foo:bar;baz:bash;');\n});\n\ndescribe('rethrow', () => {\n  it('should rethrow error', () => {\n    const err = new Error();\n    try {\n      runtime.rethrow(err, 'foo.pug', 3);\n    } catch (e) {\n      expect(e).toBe(err);\n      return;\n    }\n\n    throw new Error('expected rethrow to throw');\n  });\n\n  it('should rethrow error with str', () => {\n    const err = new Error();\n    try {\n      runtime.rethrow(err, 'foo.pug', 3, 'hello world');\n    } catch (e) {\n      expect(e).toBe(err);\n      expect(e.message.trim()).toBe(\n        `\nfoo.pug:3\n    1| hello world`.trim()\n      );\n      return;\n    }\n\n    throw new Error('expected rethrow to throw');\n  });\n\n  it('should handle bad arguments gracefully', () => {\n    const err = new Error('hello world');\n    const str = {not: 'a string'};\n    try {\n      runtime.rethrow(err, 'foo.pug', 3, str);\n    } catch (e) {\n      expect(e).toBe(err);\n      expect(e.message).toBe(\n        'hello world - could not read from foo.pug (str.split is not a function) on line 3'\n      );\n      return;\n    }\n\n    throw new Error('expected rethrow to throw');\n  });\n});\n"
  },
  {
    "path": "packages/pug-runtime/wrap.js",
    "content": "var runtime = require('./');\n\nmodule.exports = wrap;\nfunction wrap(template, templateName) {\n  templateName = templateName || 'template';\n  return Function(\n    'pug',\n    template + '\\n' + 'return ' + templateName + ';'\n  )(runtime);\n}\n"
  },
  {
    "path": "packages/pug-strip-comments/CHANGELOG.md",
    "content": "# Change Log\nAll notable changes to this project will be documented in this file.\nThis project adheres to [Semantic Versioning](http://semver.org/).\n\n## 1.0.1 - 2016-08-10\n### Changed\n- Project name is changed to Pug\n- Otherwise unchanged from 1.0.0\n\n## 1.0.0 - 2015-08-10\n### Added\n- Initial stable release – unchanged from 0.0.1\n\n## 0.0.1 - 2015-08-10\n### Added\n- Initial release\n"
  },
  {
    "path": "packages/pug-strip-comments/LICENSE",
    "content": "Copyright (c) 2021 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-strip-comments/LICENSE.md",
    "content": "Copyright (c) 2015 Tiancheng “Timothy” Gu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "packages/pug-strip-comments/README.md",
    "content": "# pug-strip-comments\n\nStrips comments from Pug token stream\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-strip-comments/master.svg)](https://travis-ci.org/pugjs/pug-strip-comments)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-strip-comments)](https://david-dm.org/pugjs/pug?path=packages/pug-strip-comments)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-strip-comments)](https://david-dm.org/pugjs/pug?path=packages/pug-strip-comments&type=dev)\n[![NPM version](https://img.shields.io/npm/v/pug-strip-comments.svg)](https://www.npmjs.org/package/pug-strip-comments)\n\n## Installation\n\n    npm install pug-strip-comments\n\n## Usage\n\n```js\nvar lex = require('pug-lexer');\nvar stripComments = require('pug-strip-comments');\n\nvar tokens = lex('//- unbuffered\\n// buffered');\n// [ { type: 'comment', line: 1, val: ' unbuffered', buffer: false },\n//   { type: 'newline', line: 2 },\n//   { type: 'comment', line: 2, val: ' buffered', buffer: true },\n//   { type: 'eos', line: 2 } ]\n\n// Only strip unbuffered comments (default)\nstripComments(tokens, { filename: 'pug' });\n// [ { type: 'newline', line: 2 },\n//   { type: 'comment', line: 2, val: ' buffered', buffer: true },\n//   { type: 'eos', line: 2 } ]\n\n// Only strip buffered comments (when you want to play a joke on your coworkers)\nstripComments(tokens, { filename: 'pug', stripUnbuffered: false, stripBuffered: true });\n// [ { type: 'comment', line: 1, val: ' unbuffered', buffer: false },\n//   { type: 'newline', line: 2 },\n//   { type: 'eos', line: 2 } ]\n\n// Strip both (if you want Pug VERY clean)\nstripComments(tokens, { filename: 'pug', stripBuffered: true });\n// [ { type: 'newline', line: 2 },\n//   { type: 'eos', line: 2 } ]\n```\n\n## License\n\nMIT\n"
  },
  {
    "path": "packages/pug-strip-comments/index.js",
    "content": "'use strict';\n\nvar error = require('pug-error');\n\nmodule.exports = stripComments;\n\nfunction unexpectedToken(type, occasion, filename, line) {\n  var msg = '`' + type + '` encountered when ' + occasion;\n  throw error('UNEXPECTED_TOKEN', msg, {filename: filename, line: line});\n}\n\nfunction stripComments(input, options) {\n  options = options || {};\n\n  // Default: strip unbuffered comments and leave buffered ones alone\n  var stripUnbuffered = options.stripUnbuffered !== false;\n  var stripBuffered = options.stripBuffered === true;\n  var filename = options.filename;\n\n  var out = [];\n  // If we have encountered a comment token and are not sure if we have gotten\n  // out of the comment or not\n  var inComment = false;\n  // If we are sure that we are in a block comment and all tokens except\n  // `end-pipeless-text` should be ignored\n  var inPipelessText = false;\n\n  return input.filter(function(tok) {\n    switch (tok.type) {\n      case 'comment':\n        if (inComment) {\n          unexpectedToken(\n            'comment',\n            'already in a comment',\n            filename,\n            tok.line\n          );\n        } else {\n          inComment = tok.buffer ? stripBuffered : stripUnbuffered;\n          return !inComment;\n        }\n      case 'start-pipeless-text':\n        if (!inComment) return true;\n        if (inPipelessText) {\n          unexpectedToken(\n            'start-pipeless-text',\n            'already in pipeless text mode',\n            filename,\n            tok.line\n          );\n        }\n        inPipelessText = true;\n        return false;\n      case 'end-pipeless-text':\n        if (!inComment) return true;\n        if (!inPipelessText) {\n          unexpectedToken(\n            'end-pipeless-text',\n            'not in pipeless text mode',\n            filename,\n            tok.line\n          );\n        }\n        inPipelessText = false;\n        inComment = false;\n        return false;\n      // There might be a `text` right after `comment` but before\n      // `start-pipeless-text`. Treat it accordingly.\n      case 'text':\n        return !inComment;\n      default:\n        if (inPipelessText) return false;\n        inComment = false;\n        return true;\n    }\n  });\n}\n"
  },
  {
    "path": "packages/pug-strip-comments/package.json",
    "content": "{\n  \"name\": \"pug-strip-comments\",\n  \"version\": \"1.0.4\",\n  \"description\": \"Strip comments from a Pug token stream (from the lexer)\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"dependencies\": {\n    \"pug-error\": \"^1.3.3\"\n  },\n  \"devDependencies\": {\n    \"line-json\": \"^2.0.0\"\n  },\n  \"files\": [\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-strip-comments\"\n  },\n  \"author\": \"Timothy Gu <timothygu99@gmail.com>\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-strip-comments/test/__snapshots__/index.test.js.snap",
    "content": "// Jest Snapshot v1, https://goo.gl/fbAQLP\n\nexports[`comment-in-comment.input.json 1`] = `\nObject {\n  \"code\": \"PUG:UNEXPECTED_TOKEN\",\n  \"line\": 2,\n  \"msg\": \"\\`comment\\` encountered when already in a comment\",\n}\n`;\n\nexports[`comments.input.json 1`] = `\nArray [\n  Object {\n    \"line\": 2,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"line\": 2,\n    \"type\": \"comment\",\n    \"val\": \" foo\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 3,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"line\": 4,\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"buffer\": true,\n    \"line\": 4,\n    \"type\": \"comment\",\n    \"val\": \" bar\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 5,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"text\",\n    \"val\": \"one\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"line\": 6,\n    \"type\": \"comment\",\n    \"val\": \" baz\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"text\",\n    \"val\": \"two\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"buffer\": true,\n    \"line\": 9,\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"text\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"line\": 11,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 11,\n    \"type\": \"text\",\n    \"val\": \"  li foo\",\n  },\n  Object {\n    \"line\": 12,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 12,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 12,\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"line\": 13,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"line\": 13,\n    \"type\": \"comment\",\n    \"val\": \" block\",\n  },\n  Object {\n    \"line\": 13,\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"line\": 14,\n    \"type\": \"text\",\n    \"val\": \"// inline follow\",\n  },\n  Object {\n    \"line\": 15,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 15,\n    \"type\": \"text\",\n    \"val\": \"li three\",\n  },\n  Object {\n    \"line\": 16,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 16,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 16,\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"line\": 17,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"line\": 17,\n    \"type\": \"comment\",\n    \"val\": \" block\",\n  },\n  Object {\n    \"line\": 17,\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"line\": 18,\n    \"type\": \"text\",\n    \"val\": \"// inline followed by tags\",\n  },\n  Object {\n    \"line\": 19,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 19,\n    \"type\": \"text\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"line\": 20,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 20,\n    \"type\": \"text\",\n    \"val\": \"  li four\",\n  },\n  Object {\n    \"line\": 21,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 21,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 21,\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"line\": 22,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": true,\n    \"line\": 22,\n    \"type\": \"comment\",\n    \"val\": \"if IE lt 9\",\n  },\n  Object {\n    \"line\": 22,\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"line\": 23,\n    \"type\": \"text\",\n    \"val\": \"// inline\",\n  },\n  Object {\n    \"line\": 24,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 24,\n    \"type\": \"text\",\n    \"val\": \"script(src='/lame.js')\",\n  },\n  Object {\n    \"line\": 25,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 25,\n    \"type\": \"text\",\n    \"val\": \"// end-inline\",\n  },\n  Object {\n    \"line\": 26,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 26,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 26,\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"line\": 27,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 31,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 32,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 32,\n    \"type\": \"text\",\n    \"val\": \" \",\n  },\n  Object {\n    \"line\": 33,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 33,\n    \"type\": \"text\",\n    \"val\": \"asfd\",\n  },\n  Object {\n    \"line\": 35,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 35,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 35,\n    \"type\": \"text\",\n    \"val\": \"five\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"text\",\n    \"val\": \"// not a comment\",\n  },\n  Object {\n    \"line\": 38,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 38,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments.input.json 2`] = `\nArray [\n  Object {\n    \"line\": 2,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 3,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"line\": 4,\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 5,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"text\",\n    \"val\": \"one\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"text\",\n    \"val\": \"two\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 13,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 17,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 22,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 27,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"line\": 27,\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 28,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 28,\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"line\": 29,\n    \"type\": \"text\",\n    \"val\": \"asfd\",\n  },\n  Object {\n    \"line\": 30,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 30,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 30,\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"line\": 31,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"line\": 31,\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 32,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 32,\n    \"type\": \"text\",\n    \"val\": \" \",\n  },\n  Object {\n    \"line\": 33,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 33,\n    \"type\": \"text\",\n    \"val\": \"asfd\",\n  },\n  Object {\n    \"line\": 35,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 35,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 35,\n    \"type\": \"text\",\n    \"val\": \"five\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"text\",\n    \"val\": \"// not a comment\",\n  },\n  Object {\n    \"line\": 38,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 38,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments.input.json 3`] = `\nArray [\n  Object {\n    \"line\": 2,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 3,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"ul\",\n  },\n  Object {\n    \"line\": 4,\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 5,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"text\",\n    \"val\": \"one\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"li\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"text\",\n    \"val\": \"two\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 13,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 17,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 22,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 27,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 31,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 32,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 32,\n    \"type\": \"text\",\n    \"val\": \" \",\n  },\n  Object {\n    \"line\": 33,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 33,\n    \"type\": \"text\",\n    \"val\": \"asfd\",\n  },\n  Object {\n    \"line\": 35,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 35,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 35,\n    \"type\": \"text\",\n    \"val\": \"five\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"class\",\n    \"val\": \"foo\",\n  },\n  Object {\n    \"line\": 37,\n    \"type\": \"text\",\n    \"val\": \"// not a comment\",\n  },\n  Object {\n    \"line\": 38,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 38,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments.source.input.json 1`] = `\nArray [\n  Object {\n    \"line\": 4,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments.source.input.json 2`] = `\nArray [\n  Object {\n    \"buffer\": false,\n    \"line\": 1,\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 1,\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"line\": 2,\n    \"type\": \"text\",\n    \"val\": \"s/s.\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"line\": 4,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"line\": 4,\n    \"type\": \"comment\",\n    \"val\": \" test/cases/comments.source.pug\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"text\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"buffer\": false,\n    \"line\": 6,\n    \"type\": \"comment\",\n    \"val\": \"\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"start-pipeless-text\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"text\",\n    \"val\": \"test/cases/comments.source.pug\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"text\",\n    \"val\": \"when\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"text\",\n    \"val\": \"()\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"end-pipeless-text\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments.source.input.json 3`] = `\nArray [\n  Object {\n    \"line\": 4,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments-in-case.input.json 1`] = `\nArray [\n  Object {\n    \"line\": 1,\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"line\": 2,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 2,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"line\": 3,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"line\": 4,\n    \"type\": \"indent\",\n    \"val\": 3,\n  },\n  Object {\n    \"buffer\": false,\n    \"escape\": false,\n    \"line\": 4,\n    \"type\": \"code\",\n    \"val\": \"var s = 'this'\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"case\",\n    \"val\": \"s\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"indent\",\n    \"val\": 5,\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"when\",\n    \"val\": \"'this'\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"line\": 8,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"text\",\n    \"val\": \"It's this!\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"when\",\n    \"val\": \"'that'\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"line\": 10,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"text\",\n    \"val\": \"It's that!\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments-in-case.input.json 2`] = `\nArray [\n  Object {\n    \"line\": 1,\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"line\": 2,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 2,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"line\": 3,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"line\": 4,\n    \"type\": \"indent\",\n    \"val\": 3,\n  },\n  Object {\n    \"buffer\": false,\n    \"escape\": false,\n    \"line\": 4,\n    \"type\": \"code\",\n    \"val\": \"var s = 'this'\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"case\",\n    \"val\": \"s\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"indent\",\n    \"val\": 5,\n  },\n  Object {\n    \"buffer\": false,\n    \"line\": 6,\n    \"type\": \"comment\",\n    \"val\": \" Comment\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"when\",\n    \"val\": \"'this'\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"line\": 8,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"text\",\n    \"val\": \"It's this!\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"when\",\n    \"val\": \"'that'\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"line\": 10,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"text\",\n    \"val\": \"It's that!\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`comments-in-case.input.json 3`] = `\nArray [\n  Object {\n    \"line\": 1,\n    \"type\": \"doctype\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"line\": 2,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 2,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"html\",\n  },\n  Object {\n    \"line\": 3,\n    \"type\": \"indent\",\n    \"val\": 2,\n  },\n  Object {\n    \"line\": 3,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"body\",\n  },\n  Object {\n    \"line\": 4,\n    \"type\": \"indent\",\n    \"val\": 3,\n  },\n  Object {\n    \"buffer\": false,\n    \"escape\": false,\n    \"line\": 4,\n    \"type\": \"code\",\n    \"val\": \"var s = 'this'\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 5,\n    \"type\": \"case\",\n    \"val\": \"s\",\n  },\n  Object {\n    \"line\": 6,\n    \"type\": \"indent\",\n    \"val\": 5,\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"newline\",\n  },\n  Object {\n    \"line\": 7,\n    \"type\": \"when\",\n    \"val\": \"'this'\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"line\": 8,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 8,\n    \"type\": \"text\",\n    \"val\": \"It's this!\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 9,\n    \"type\": \"when\",\n    \"val\": \"'that'\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"indent\",\n    \"val\": 7,\n  },\n  Object {\n    \"line\": 10,\n    \"selfClosing\": false,\n    \"type\": \"tag\",\n    \"val\": \"p\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"text\",\n    \"val\": \"It's that!\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"outdent\",\n  },\n  Object {\n    \"line\": 10,\n    \"type\": \"eos\",\n  },\n]\n`;\n\nexports[`end.input.json 1`] = `\nObject {\n  \"code\": \"PUG:UNEXPECTED_TOKEN\",\n  \"line\": 4,\n  \"msg\": \"\\`end-pipeless-text\\` encountered when not in pipeless text mode\",\n}\n`;\n\nexports[`startstart.input.json 1`] = `\nObject {\n  \"code\": \"PUG:UNEXPECTED_TOKEN\",\n  \"line\": 3,\n  \"msg\": \"\\`start-pipeless-text\\` encountered when already in pipeless text mode\",\n}\n`;\n"
  },
  {
    "path": "packages/pug-strip-comments/test/cases/comments-in-case.input.json",
    "content": "{\"type\":\"doctype\",\"line\":1,\"val\":\"html\"}\n{\"type\":\"newline\",\"line\":2}\n{\"type\":\"tag\",\"line\":2,\"val\":\"html\",\"selfClosing\":false}\n{\"type\":\"indent\",\"line\":3,\"val\":2}\n{\"type\":\"tag\",\"line\":3,\"val\":\"body\",\"selfClosing\":false}\n{\"type\":\"indent\",\"line\":4,\"val\":3}\n{\"type\":\"code\",\"line\":4,\"val\":\"var s = 'this'\",\"escape\":false,\"buffer\":false}\n{\"type\":\"newline\",\"line\":5}\n{\"type\":\"case\",\"line\":5,\"val\":\"s\"}\n{\"type\":\"indent\",\"line\":6,\"val\":5}\n{\"type\":\"comment\",\"line\":6,\"val\":\" Comment\",\"buffer\":false}\n{\"type\":\"newline\",\"line\":7}\n{\"type\":\"when\",\"line\":7,\"val\":\"'this'\"}\n{\"type\":\"indent\",\"line\":8,\"val\":7}\n{\"type\":\"tag\",\"line\":8,\"val\":\"p\",\"selfClosing\":false}\n{\"type\":\"text\",\"line\":8,\"val\":\"It's this!\"}\n{\"type\":\"outdent\",\"line\":9}\n{\"type\":\"when\",\"line\":9,\"val\":\"'that'\"}\n{\"type\":\"indent\",\"line\":10,\"val\":7}\n{\"type\":\"tag\",\"line\":10,\"val\":\"p\",\"selfClosing\":false}\n{\"type\":\"text\",\"line\":10,\"val\":\"It's that!\"}\n{\"type\":\"outdent\",\"line\":10}\n{\"type\":\"outdent\",\"line\":10}\n{\"type\":\"outdent\",\"line\":10}\n{\"type\":\"outdent\",\"line\":10}\n{\"type\":\"eos\",\"line\":10}"
  },
  {
    "path": "packages/pug-strip-comments/test/cases/comments.input.json",
    "content": "{\"type\":\"newline\",\"line\":2}\n{\"type\":\"comment\",\"line\":2,\"val\":\" foo\",\"buffer\":true}\n{\"type\":\"newline\",\"line\":3}\n{\"type\":\"tag\",\"line\":3,\"val\":\"ul\",\"selfClosing\":false}\n{\"type\":\"indent\",\"line\":4,\"val\":2}\n{\"type\":\"comment\",\"line\":4,\"val\":\" bar\",\"buffer\":true}\n{\"type\":\"newline\",\"line\":5}\n{\"type\":\"tag\",\"line\":5,\"val\":\"li\",\"selfClosing\":false}\n{\"type\":\"text\",\"line\":5,\"val\":\"one\"}\n{\"type\":\"newline\",\"line\":6}\n{\"type\":\"comment\",\"line\":6,\"val\":\" baz\",\"buffer\":true}\n{\"type\":\"newline\",\"line\":7}\n{\"type\":\"tag\",\"line\":7,\"val\":\"li\",\"selfClosing\":false}\n{\"type\":\"text\",\"line\":7,\"val\":\"two\"}\n{\"type\":\"outdent\",\"line\":9}\n{\"type\":\"comment\",\"line\":9,\"val\":\"\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"line\":9}\n{\"type\":\"text\",\"line\":10,\"val\":\"ul\"}\n{\"type\":\"newline\",\"line\":11}\n{\"type\":\"text\",\"line\":11,\"val\":\"  li foo\"}\n{\"type\":\"newline\",\"line\":12}\n{\"type\":\"text\",\"line\":12,\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"line\":12}\n{\"type\":\"newline\",\"line\":13}\n{\"type\":\"comment\",\"line\":13,\"val\":\" block\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"line\":13}\n{\"type\":\"text\",\"line\":14,\"val\":\"// inline follow\"}\n{\"type\":\"newline\",\"line\":15}\n{\"type\":\"text\",\"line\":15,\"val\":\"li three\"}\n{\"type\":\"newline\",\"line\":16}\n{\"type\":\"text\",\"line\":16,\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"line\":16}\n{\"type\":\"newline\",\"line\":17}\n{\"type\":\"comment\",\"line\":17,\"val\":\" block\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"line\":17}\n{\"type\":\"text\",\"line\":18,\"val\":\"// inline followed by tags\"}\n{\"type\":\"newline\",\"line\":19}\n{\"type\":\"text\",\"line\":19,\"val\":\"ul\"}\n{\"type\":\"newline\",\"line\":20}\n{\"type\":\"text\",\"line\":20,\"val\":\"  li four\"}\n{\"type\":\"newline\",\"line\":21}\n{\"type\":\"text\",\"line\":21,\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"line\":21}\n{\"type\":\"newline\",\"line\":22}\n{\"type\":\"comment\",\"line\":22,\"val\":\"if IE lt 9\",\"buffer\":true}\n{\"type\":\"start-pipeless-text\",\"line\":22}\n{\"type\":\"text\",\"line\":23,\"val\":\"// inline\"}\n{\"type\":\"newline\",\"line\":24}\n{\"type\":\"text\",\"line\":24,\"val\":\"script(src='/lame.js')\"}\n{\"type\":\"newline\",\"line\":25}\n{\"type\":\"text\",\"line\":25,\"val\":\"// end-inline\"}\n{\"type\":\"newline\",\"line\":26}\n{\"type\":\"text\",\"line\":26,\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"line\":26}\n{\"type\":\"newline\",\"line\":27}\n{\"type\":\"comment\",\"line\":27,\"val\":\"\",\"buffer\":false}\n{\"type\":\"text\",\"line\":28,\"val\":\"\"}\n{\"type\":\"start-pipeless-text\",\"line\":28}\n{\"type\":\"text\",\"line\":29,\"val\":\"asfd\"}\n{\"type\":\"newline\",\"line\":30}\n{\"type\":\"text\",\"line\":30,\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"line\":30}\n{\"type\":\"newline\",\"line\":31}\n{\"type\":\"comment\",\"line\":31,\"val\":\"\",\"buffer\":false}\n{\"type\":\"newline\",\"line\":32}\n{\"type\":\"text\",\"line\":32,\"val\":\" \"}\n{\"type\":\"newline\",\"line\":33}\n{\"type\":\"text\",\"line\":33,\"val\":\"asfd\"}\n{\"type\":\"newline\",\"line\":35}\n{\"type\":\"tag\",\"line\":35,\"val\":\"p\",\"selfClosing\":false}\n{\"type\":\"text\",\"line\":35,\"val\":\"five\"}\n{\"type\":\"newline\",\"line\":37}\n{\"type\":\"class\",\"line\":37,\"val\":\"foo\"}\n{\"type\":\"text\",\"line\":37,\"val\":\"// not a comment\"}\n{\"type\":\"newline\",\"line\":38}\n{\"type\":\"eos\",\"line\":38}"
  },
  {
    "path": "packages/pug-strip-comments/test/cases/comments.source.input.json",
    "content": "{\"type\":\"comment\",\"line\":1,\"val\":\"\",\"buffer\":false}\n{\"type\":\"start-pipeless-text\",\"line\":1}\n{\"type\":\"text\",\"line\":2,\"val\":\"s/s.\"}\n{\"type\":\"newline\",\"line\":3}\n{\"type\":\"text\",\"line\":3,\"val\":\"\"}\n{\"type\":\"end-pipeless-text\",\"line\":3}\n{\"type\":\"newline\",\"line\":4}\n{\"type\":\"comment\",\"line\":4,\"val\":\" test/cases/comments.source.pug\",\"buffer\":false}\n{\"type\":\"text\",\"line\":5,\"val\":\"\"}\n{\"type\":\"newline\",\"line\":6}\n{\"type\":\"comment\",\"line\":6,\"val\":\"\",\"buffer\":false}\n{\"type\":\"start-pipeless-text\",\"line\":6}\n{\"type\":\"text\",\"line\":7,\"val\":\"test/cases/comments.source.pug\"}\n{\"type\":\"newline\",\"line\":8}\n{\"type\":\"text\",\"line\":8,\"val\":\"when\"}\n{\"type\":\"newline\",\"line\":9}\n{\"type\":\"text\",\"line\":9,\"val\":\"()\"}\n{\"type\":\"end-pipeless-text\",\"line\":9}\n{\"type\":\"eos\",\"line\":9}"
  },
  {
    "path": "packages/pug-strip-comments/test/errors/comment-in-comment.input.json",
    "content": "{\"type\":\"comment\",\"line\":1,\"val\":\"\",\"buffer\":false}\n{\"type\":\"comment\",\"line\":2,\"val\":\"\",\"buffer\":false}\n{\"type\":\"eos\",\"line\":3}"
  },
  {
    "path": "packages/pug-strip-comments/test/errors/end.input.json",
    "content": "{\"type\":\"comment\",\"line\":1,\"val\":\"\",\"buffer\":false}\n{\"type\":\"end-pipeless-text\",\"line\":4}\n{\"type\":\"newline\",\"line\":4}\n{\"type\":\"eos\",\"line\":5}"
  },
  {
    "path": "packages/pug-strip-comments/test/errors/startstart.input.json",
    "content": "{\"type\":\"comment\",\"line\":1,\"val\":\"\",\"buffer\":false}\n{\"type\":\"start-pipeless-text\",\"line\":2}\n{\"type\":\"start-pipeless-text\",\"line\":3}\n{\"type\":\"end-pipeless-text\",\"line\":4}\n{\"type\":\"newline\",\"line\":4}\n{\"type\":\"eos\",\"line\":5}"
  },
  {
    "path": "packages/pug-strip-comments/test/index.test.js",
    "content": "'use strict';\n\nvar fs = require('fs');\nvar assert = require('assert');\nvar lineJSON = require('line-json');\nvar strip = require('../');\n\nvar dir = __dirname + '/cases/';\nfs.readdirSync(dir).forEach(function(testCase) {\n  if (/\\.input\\.json$/.test(testCase)) {\n    test(testCase, function() {\n      var stem = testCase.replace(/\\.input\\.json$/, '.');\n\n      function test(name, options) {\n        var input = fs.readFileSync(dir + testCase, 'utf8');\n        input = lineJSON.parse(input);\n\n        var result = strip(input, options);\n        expect(result).toMatchSnapshot();\n      }\n\n      test('unbuffered');\n      test('buffered', {stripBuffered: true, stripUnbuffered: false});\n      test('both', {stripBuffered: true});\n    });\n  }\n});\n\nvar edir = __dirname + '/errors/';\nfs.readdirSync(edir).forEach(function(testCase) {\n  if (/\\.input\\.json$/.test(testCase)) {\n    test(testCase, function() {\n      var stem = testCase.replace(/\\.input\\.json$/, '.');\n\n      var input = fs.readFileSync(edir + testCase, 'utf8');\n      input = lineJSON.parse(input);\n\n      try {\n        strip(input);\n        throw new Error('Expected ' + testCase + ' to throw an exception.');\n      } catch (ex) {\n        if (!ex || !ex.code || ex.code.indexOf('PUG:') !== 0) throw ex;\n        expect({\n          msg: ex.msg,\n          code: ex.code,\n          line: ex.line,\n        }).toMatchSnapshot();\n      }\n    });\n  }\n});\n"
  },
  {
    "path": "packages/pug-walk/.gitignore",
    "content": "lib-cov\ncoverage\n*.seed\n*.log\n*.csv\n*.dat\n*.out\n*.pid\n*.gz\npids\nlogs\nresults\nnpm-debug.log\nnode_modules\n"
  },
  {
    "path": "packages/pug-walk/.travis.yml",
    "content": "language: node_js\nsudo: false\n\nnode_js:\n  - \"0.10\"\n  - \"0.12\"\n  - \"4\"\n  - \"6\"\n\nafter_success:\n  - npm run coverage\n  - npm i codecov\n  - codecov -f ./coverage/lcov.info\n\nnotifications:\n  email:\n    on_success: never\n"
  },
  {
    "path": "packages/pug-walk/HISTORY.md",
    "content": "1.0.0 / 2016-08-22\n==================\n\n  * Initial stable release\n"
  },
  {
    "path": "packages/pug-walk/LICENSE",
    "content": "Copyright (c) 2015 Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "packages/pug-walk/README.md",
    "content": "# pug-walk\n\nWalk and transform a Pug AST\n\n[![Build Status](https://img.shields.io/travis/pugjs/pug-walk/master.svg)](https://travis-ci.org/pugjs/pug-walk)\n[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-walk)](https://david-dm.org/pugjs/pug?path=packages/pug-walk)\n[![DevDependencies Status](https://david-dm.org/pugjs/pug/dev-status.svg?path=packages/pug-walk)](https://david-dm.org/pugjs/pug?path=packages/pug-walk&type=dev)\n[![npm version](https://img.shields.io/npm/v/pug-walk.svg)](https://www.npmjs.org/package/pug-walk)\n[![Coverage Status](https://img.shields.io/codecov/c/github/pugjs/pug-walk/master.svg)](https://codecov.io/gh/pugjs/pug-walk/branch/master)\n\n## Installation\n\n    npm install pug-walk\n\n## Usage\n\n```js\nvar walk = require('pug-walk');\n```\n\n### `walk(ast, before, after, options)`\n\nTraverse and optionally transform a [Pug AST](https://github.com/pugjs/pug-ast-spec).\n\n`ast` is not cloned, so any changes done to it will be done directly on the AST provided.\n\n`before` and `after` are functions with the signature `(node, replace)`. `before` is called when a node is first seen, while `after` is called after the children of the node (if any) have already been traversed.\n\nThe `replace` parameter is a function that can be used to replace the node in the AST. It takes either an object or an array as its only parameter. If an object is specified, the current node is replaced by the parameter in the AST. If an array is specified and the ancestor of the current node allows such an operation, the node is replaced by all of the nodes in the specified array. This way, you can remove and add new nodes adjacent to the current node. Whether the parent node allows array operation is indicated by the property `replace.arrayAllowed`, which is set to true when the parent is a Block and when the parent is a Include and the node is an IncludeFilter.\n\nIf `before` returns `false`, the children of this node will not be traversed and left unchanged (unless `replace` has been called). Otherwise, the returned value of `before` is ignored. The returned value of `after` is always ignored. If `replace()` is called in `before()` with an array, and `before()` does not return `false`, the nodes in the array are still descended.\n\n`options` can contain the following properties:\n\n* `includeDependencies` (boolean): Walk the AST of a loaded dependent file (i.e., includes and extends). Defaults to `false`.\n* `parents` (array<Node>): Nodes that are ancestors to the current `ast`. This option is used mainly internally, and users usually do not have to specify it. Defaults to `[]`.\n\n```js\nvar lex = require('pug-lexer');\nvar parse = require('pug-parser');\n\n// Changing content of all Text nodes\n// ==================================\n\nvar source = '.my-class foo';\nvar dest = '.my-class bar';\n\nvar ast = parse(lex(source));\n\nast = walk(ast, function before(node, replace) {\n  if (node.type === 'Text') {\n    node.val = 'bar';\n\n    // Alternatively, you can replace the entire node\n    // rather than just the text.\n    // replace({ type: 'Text', val: 'bar', line: node.line });\n  }\n}, {\n  includeDependencies: true\n});\n\nassert.deepEqual(parse(lex(dest)), ast);\n\n// Convert all simple <strong> elements to text\n// ============================================\n\nvar source = 'p abc #[strong NO]\\nstrong on its own line';\nvar dest = 'p abc #[| NO]\\n| on its own line';\n\nvar ast = parse(lex(source));\n\nast = walk(ast, function before(node, replace) {\n  // Find all <strong> tags\n  if (node.type === 'Tag' && node.name === 'strong') {\n    var children = node.block.nodes;\n\n    // Make sure that the Tag only has one child -- the text\n    if (children.length === 1 && children[0].type === 'Text') {\n      // Replace the Tag with the Text\n      replace({ type: 'Text', val: children[0].val, line: node.line });\n    }\n  }\n}, {\n  includeDependencies: true\n});\n\nassert.deepEqual(parse(lex(dest)), ast);\n\n// Flatten blocks\n// ==============\n\nvar ast = {\n  type: 'Block',\n  nodes: [\n    { type: 'Text', val: 'a' },\n    {\n      type: 'Block',\n      nodes: [\n        { type: 'Text', val: 'b' },\n        {\n          type: 'Block',\n          nodes: [ { type: 'Text', val: 'c' } ]\n        },\n        { type: 'Text', val: 'd' }\n      ]\n    },\n    { type: 'Text', val: 'e' }\n  ]\n};\n\nvar dest = {\n  type: 'Block',\n  nodes: [\n    { type: 'Text', val: 'a' },\n    { type: 'Text', val: 'b' },\n    { type: 'Text', val: 'c' },\n    { type: 'Text', val: 'd' },\n    { type: 'Text', val: 'e' }\n  ]\n};\n\n// We need to use `after` handler instead of `before`\n// handler because we want to flatten the innermost\n// blocks first before proceeding onto outer blocks.\n\nast = walk(ast, null, function after(node, replace) {\n  if (node.type === 'Block' && replace.arrayAllowed) {\n    // Replace the block with its contents\n    replace(node.nodes);\n  }\n});\n\nassert.deepEqual(dest, ast);\n```\n\n## License\n\n  MIT\n"
  },
  {
    "path": "packages/pug-walk/index.js",
    "content": "'use strict';\n\nmodule.exports = walkAST;\nfunction walkAST(ast, before, after, options) {\n  if (after && typeof after === 'object' && typeof options === 'undefined') {\n    options = after;\n    after = null;\n  }\n  options = options || {includeDependencies: false};\n  var parents = (options.parents = options.parents || []);\n\n  var replace = function replace(replacement) {\n    if (Array.isArray(replacement) && !replace.arrayAllowed) {\n      throw new Error(\n        'replace() can only be called with an array if the last parent is a Block or NamedBlock'\n      );\n    }\n    ast = replacement;\n  };\n  replace.arrayAllowed =\n    parents[0] &&\n    (/^(Named)?Block$/.test(parents[0].type) ||\n      (parents[0].type === 'RawInclude' && ast.type === 'IncludeFilter'));\n\n  if (before) {\n    var result = before(ast, replace);\n    if (result === false) {\n      return ast;\n    } else if (Array.isArray(ast)) {\n      // return right here to skip after() call on array\n      return walkAndMergeNodes(ast);\n    }\n  }\n\n  parents.unshift(ast);\n\n  switch (ast.type) {\n    case 'NamedBlock':\n    case 'Block':\n      ast.nodes = walkAndMergeNodes(ast.nodes);\n      break;\n    case 'Case':\n    case 'Filter':\n    case 'Mixin':\n    case 'Tag':\n    case 'InterpolatedTag':\n    case 'When':\n    case 'Code':\n    case 'While':\n      if (ast.block) {\n        ast.block = walkAST(ast.block, before, after, options);\n      }\n      break;\n    case 'Each':\n      if (ast.block) {\n        ast.block = walkAST(ast.block, before, after, options);\n      }\n      if (ast.alternate) {\n        ast.alternate = walkAST(ast.alternate, before, after, options);\n      }\n      break;\n    case 'EachOf':\n      if (ast.block) {\n        ast.block = walkAST(ast.block, before, after, options);\n      }\n      break;\n    case 'Conditional':\n      if (ast.consequent) {\n        ast.consequent = walkAST(ast.consequent, before, after, options);\n      }\n      if (ast.alternate) {\n        ast.alternate = walkAST(ast.alternate, before, after, options);\n      }\n      break;\n    case 'Include':\n      walkAST(ast.block, before, after, options);\n      walkAST(ast.file, before, after, options);\n      break;\n    case 'Extends':\n      walkAST(ast.file, before, after, options);\n      break;\n    case 'RawInclude':\n      ast.filters = walkAndMergeNodes(ast.filters);\n      walkAST(ast.file, before, after, options);\n      break;\n    case 'Attrs':\n    case 'BlockComment':\n    case 'Comment':\n    case 'Doctype':\n    case 'IncludeFilter':\n    case 'MixinBlock':\n    case 'YieldBlock':\n    case 'Text':\n      break;\n    case 'FileReference':\n      if (options.includeDependencies && ast.ast) {\n        walkAST(ast.ast, before, after, options);\n      }\n      break;\n    default:\n      throw new Error('Unexpected node type ' + ast.type);\n      break;\n  }\n\n  parents.shift();\n\n  after && after(ast, replace);\n  return ast;\n\n  function walkAndMergeNodes(nodes) {\n    return nodes.reduce(function(nodes, node) {\n      var result = walkAST(node, before, after, options);\n      if (Array.isArray(result)) {\n        return nodes.concat(result);\n      } else {\n        return nodes.concat([result]);\n      }\n    }, []);\n  }\n}\n"
  },
  {
    "path": "packages/pug-walk/package.json",
    "content": "{\n  \"name\": \"pug-walk\",\n  \"version\": \"1.1.8\",\n  \"description\": \"Walk and transform a pug AST\",\n  \"keywords\": [\n    \"pug\"\n  ],\n  \"devDependencies\": {\n    \"pug-lexer\": \"^4.1.0\",\n    \"pug-parser\": \"^5.0.1\"\n  },\n  \"files\": [\n    \"index.js\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/pugjs/pug/tree/master/packages/pug-walk\"\n  },\n  \"author\": \"ForbesLindesay\",\n  \"license\": \"MIT\"\n}\n"
  },
  {
    "path": "packages/pug-walk/test/index.test.js",
    "content": "'use strict';\n\nvar assert = require('assert');\nvar lex = require('pug-lexer');\nvar parse = require('pug-parser');\nvar walk = require('../');\n\ntest('simple', function() {\n  var ast = walk(\n    parse(lex('.my-class foo')),\n    function before(node, replace) {\n      // called before walking the children of `node`\n      // to replace the node, call `replace(newNode)`\n      // return `false` to skip descending\n      if (node.type === 'Text') {\n        replace({\n          type: 'Text',\n          val: 'bar',\n          line: node.line,\n          column: node.column,\n        });\n      }\n    },\n    function after(node, replace) {\n      // called before walking the children of `node`\n      // to replace the node, call `replace(newNode)`\n    }\n  );\n  expect(ast).toEqual(parse(lex('.my-class bar')));\n});\n\ndescribe('replace([])', function() {\n  test('block flattening', function() {\n    var called = [];\n    var ast = walk(\n      {\n        type: 'Block',\n        nodes: [\n          {\n            type: 'Block',\n            nodes: [\n              {\n                type: 'Block',\n                nodes: [\n                  {\n                    type: 'Text',\n                    val: 'a',\n                  },\n                  {\n                    type: 'Text',\n                    val: 'b',\n                  },\n                ],\n              },\n              {\n                type: 'Text',\n                val: 'c',\n              },\n            ],\n          },\n          {\n            type: 'Text',\n            val: 'd',\n          },\n        ],\n      },\n      function(node, replace) {\n        if (node.type === 'Text') {\n          called.push('before ' + node.val);\n          if (node.val === 'a') {\n            assert(replace.arrayAllowed, 'replace.arrayAllowed set wrongly');\n            replace([\n              {\n                type: 'Text',\n                val: 'e',\n              },\n              {\n                type: 'Text',\n                val: 'f',\n              },\n            ]);\n          }\n        }\n      },\n      function(node, replace) {\n        if (node.type === 'Block' && replace.arrayAllowed) {\n          replace(node.nodes);\n        } else if (node.type === 'Text') {\n          called.push('after ' + node.val);\n        }\n      }\n    );\n\n    expect(ast).toEqual({\n      type: 'Block',\n      nodes: [\n        {type: 'Text', val: 'e'},\n        {type: 'Text', val: 'f'},\n        {type: 'Text', val: 'b'},\n        {type: 'Text', val: 'c'},\n        {type: 'Text', val: 'd'},\n      ],\n    });\n\n    assert.deepEqual(\n      called,\n      [\n        'before a',\n\n        'before e',\n        'after e',\n\n        'before f',\n        'after f',\n\n        'before b',\n        'after b',\n\n        'before c',\n        'after c',\n\n        'before d',\n        'after d',\n      ],\n      'before() and after() called incorrectly: ' + JSON.stringify(called)\n    );\n  });\n\n  test('adding include filters', function() {\n    var ast = walk(parse(lex('include:filter1:filter2 file')), function(\n      node,\n      replace\n    ) {\n      if (node.type === 'IncludeFilter') {\n        assert(replace.arrayAllowed);\n        if (node.name === 'filter1') {\n          var firstFilter = 'filter3';\n\n          replace([\n            {\n              type: 'IncludeFilter',\n              name: firstFilter,\n              attrs: [],\n              line: node.line,\n              column: node.column,\n            },\n            {\n              type: 'IncludeFilter',\n              name: 'filter4',\n              attrs: [],\n              line: node.line,\n              column: node.column + firstFilter.length + 1,\n            },\n          ]);\n        } else if (node.name === 'filter2') {\n          replace([]);\n        }\n      }\n    });\n\n    expect(ast).toEqual(parse(lex('include:filter3:filter4 file')));\n  });\n\n  test('fails when parent is not Block', function() {\n    walk(parse(lex('p content')), function(node, replace) {\n      if (\n        node.type === 'Block' &&\n        node.nodes[0] &&\n        node.nodes[0].type === 'Text'\n      ) {\n        assert(!replace.arrayAllowed, 'replace.arrayAllowed set wrongly');\n        assert.throws(function() {\n          replace([]);\n        });\n      }\n    });\n  });\n});\n"
  },
  {
    "path": "scripts/buffer-serializer.js",
    "content": "const crypto = require('crypto');\n\n// Buffer serializer to reduce snapshot gore for Node Buffer type\nmodule.exports = {\n  test: function(val) {\n    return val && Buffer.isBuffer(val);\n  },\n  print: function(val, serialize, indent) {\n    const output = {\n      type: 'Buffer',\n      size: val.length,\n      hash: crypto\n        .createHash('md5')\n        .update(val)\n        .digest('hex'),\n    };\n    return serialize(output);\n  },\n};\n"
  },
  {
    "path": "scripts/filename-serializer.js",
    "content": "const path = require('path');\nconst basedir = path.resolve(__dirname + '/..');\n\nfunction matchesBasedir(value) {\n  return (\n    typeof value === 'string' &&\n    value.replace(/\\\\/g, '/').indexOf(basedir.replace(/\\\\/g, '/')) === 0\n  );\n}\nfunction removeBasedir(value) {\n  return '<basedir>' + value.substr(basedir.length).replace(/\\\\/g, '/');\n}\n// filename serializer that removes the basedir\nmodule.exports = {\n  test: function(val) {\n    return (\n      val &&\n      typeof val === 'object' &&\n      (matchesBasedir(val.filename) || matchesBasedir(val.message))\n    );\n  },\n  print: function(val, serialize, indent) {\n    const output = {};\n    for (var key in val) {\n      output[key] = val[key];\n    }\n    if (matchesBasedir(output.filename)) {\n      output.filename = removeBasedir(output.filename);\n    }\n    if (matchesBasedir(output.message)) {\n      output.message = removeBasedir(output.message);\n    }\n    return serialize(output);\n  },\n};\n"
  },
  {
    "path": "scripts/prebuild.js",
    "content": "const {\n  readdirSync,\n  writeFileSync,\n  statSync,\n  readFileSync,\n  existsSync,\n} = require('fs');\n\nconst LICENSE = `Copyright (c) ${new Date().getFullYear()} Forbes Lindesay\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.`;\n\nconst packageNames = [];\nconst typeScriptPackages = [];\nconst packageDirectories = readdirSync(__dirname + '/../packages')\n  .filter(directory =>\n    statSync(__dirname + '/../packages/' + directory).isDirectory()\n  )\n  .sort();\npackageDirectories.forEach(directory => {\n  if (!existsSync(__dirname + '/../packages/' + directory + '/LICENSE')) {\n    writeFileSync(\n      __dirname + '/../packages/' + directory + '/LICENSE',\n      LICENSE\n    );\n  }\n  let pkg = {};\n  try {\n    pkg = JSON.parse(\n      readFileSync(\n        __dirname + '/../packages/' + directory + '/package.json',\n        'utf8'\n      )\n    );\n  } catch (ex) {\n    if (ex.code !== 'ENOENT') {\n      throw ex;\n    }\n  }\n  const before = JSON.stringify(pkg);\n  if (!pkg.name) {\n    pkg.name = directory;\n  }\n  packageNames.push(pkg.name);\n  const after = JSON.stringify(pkg);\n  if (before !== after) {\n    writeFileSync(\n      __dirname + '/../packages/' + directory + '/package.json',\n      JSON.stringify(pkg, null, '  ') + '\\n'\n    );\n  }\n  if (existsSync(__dirname + '/../packages/' + directory + '/tsconfig.json')) {\n    typeScriptPackages.push(directory);\n    const deps = [\n      ...Object.keys(pkg.dependencies || {}),\n      ...Object.keys(pkg.devDependencies || {}),\n    ]\n      .filter(dep =>\n        existsSync(__dirname + '/../packages/' + dep + '/tsconfig.json')\n      )\n      .map(\n        dep =>\n          `\\n    {\"path\": ${JSON.stringify(\n            `../${dep.substr(`@databases/`.length)}`\n          )}},`\n      )\n      .join(``);\n    writeFileSync(\n      __dirname + '/../packages/' + directory + '/tsconfig.json',\n      `{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"rootDir\": \"src\",\n    \"outDir\": \"lib\",\n    \"tsBuildInfoFile\": \"lib/tsconfig.tsbuildinfo\",\n  },\n  \"references\": ${deps.length ? `[${deps}\\n  ],` : `[],`}\n}\n`\n    );\n  }\n});\n\nwriteFileSync(\n  `scripts/tsconfig.json`,\n  `{\n  \"extends\": \"../tsconfig.json\",\n  \"references\": [${typeScriptPackages\n    .map(n => `\\n    {\"path\": ${JSON.stringify(`../packages/${n}`)}},`)\n    .join(``)}\n  ],\n}`\n);\nconst [README_HEADER, _table, README_FOOTER] = readFileSync(\n  __dirname + '/../README.md',\n  'utf8'\n).split('<!-- VERSION_TABLE -->');\n\nconst versionsTable = `\nPackage Name | Version\n-------------|--------\n${packageNames\n  .sort()\n  .map(\n    name =>\n      `${name} | [![NPM version](https://img.shields.io/npm/v/${name}?style=for-the-badge)](https://www.npmjs.com/package/${name})`\n  )\n  .join('\\n')}\n`;\nwriteFileSync(\n  __dirname + '/../README.md',\n  [README_HEADER, versionsTable, README_FOOTER || ''].join(\n    '<!-- VERSION_TABLE -->'\n  )\n);\n"
  },
  {
    "path": "scripts/prettier-javascript-serializer.js",
    "content": "const prettier = require('prettier');\n\nconst prettierOptions = {parser: 'babel'};\n\n// filename serializer that removes the basedir\nmodule.exports = {\n  test: function(val) {\n    try {\n      return (\n        typeof val === 'string' &&\n        /function /.test(val) &&\n        val !== prettier.format(val, prettierOptions)\n      );\n    } catch (ex) {\n      return false;\n    }\n  },\n  print: function(val, serialize, indent) {\n    return serialize(prettier.format(val, prettierOptions));\n  },\n};\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"ES5\",\n    \"module\": \"commonjs\",\n    \"declaration\": true,\n    \"sourceMap\": true,\n    \"strict\": true,\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": false,\n    \"noImplicitReturns\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"lib\": [\"es2016\", \"dom\"],\n    \"pretty\": true\n  }\n}"
  }
]