1# pug-parser
2
3The pug parser (takes an array of tokens and converts it to an abstract syntax tree)
4
5[![Build Status](https://img.shields.io/travis/pugjs/pug-parser/master.svg)](https://travis-ci.org/pugjs/pug-parser)
6[![Dependencies Status](https://david-dm.org/pugjs/pug/status.svg?path=packages/pug-parser)](https://david-dm.org/pugjs/pug?path=packages/pug-parser)
7[![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)
8[![NPM version](https://img.shields.io/npm/v/pug-parser.svg)](https://www.npmjs.org/package/pug-parser)
9
10## Installation
11
12    npm install pug-parser
13
14## Usage
15
16```js
17var parse = require('pug-parser');
18```
19
20### `parse(tokens, options)`
21
22Convert Pug tokens to an abstract syntax tree (AST).
23
24`options` can contain the following properties:
25
26- `filename` (string): The name of the Pug file; it is included in the produced AST nodes and error handling, if provided.
27- `plugins` (array): An array of plugins, in the order they should be applied.
28- `src` (string): The source of the Pug file; it is used in error handling if provided.
29
30```js
31var lex = require('pug-lexer');
32
33var filename = 'my-file.pug';
34var src = 'div(data-foo="bar")';
35var tokens = lex(src, {filename});
36
37var ast = parse(tokens, {filename, src});
38
39console.log(JSON.stringify(ast, null, '  '))
40```
41
42```json
43{
44  "type": "Block",
45  "nodes": [
46    {
47      "type": "Tag",
48      "name": "div",
49      "selfClosing": false,
50      "block": {
51        "type": "Block",
52        "nodes": [],
53        "line": 1,
54        "filename": "my-file.pug"
55      },
56      "attrs": [
57        {
58          "name": "data-foo",
59          "val": "\"bar\"",
60          "line": 1,
61          "column": 5,
62          "filename": "my-file.pug",
63          "mustEscape": true
64        }
65      ],
66      "attributeBlocks": [],
67      "isInline": false,
68      "line": 1,
69      "column": 1,
70      "filename": "my-file.pug"
71    }
72  ],
73  "line": 0,
74  "filename": "my-file.pug"
75}
76```
77
78### `new parse.Parser(tokens, options)`
79
80Constructor for a Parser class. This is not meant to be used directly unless you know what you are doing.
81
82`options` may contain the following properties:
83
84- `filename` (string): The name of the Pug file; it is included in the produced AST nodes and error handling, if provided.
85- `plugins` (array): An array of plugins, in the order they should be applied.
86- `src` (string): The source of the Pug file; it is used in error handling if provided.
87
88## License
89
90  MIT
91