exports[`test attr-es2015.tokens.json 1`] = `
Object {
  "filename": "attr-es2015.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "attr-es2015.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var avatar = \'219b77f9d21de75e81851b6b886057c7\'",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'avatar-div\'",
        },
        Object {
          "mustEscape": true,
          "name": "style",
          "val": "\`background-image: url(https://www.gravatar.com/avatar/\${avatar})\`",
        },
      ],
      "block": Object {
        "filename": "attr-es2015.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attr-es2015.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test attrs.js.tokens.json 1`] = `
Object {
  "filename": "attrs.js.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "attrs.js.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var id = 5",
    },
    Object {
      "buffer": false,
      "filename": "attrs.js.tokens.json",
      "isInline": false,
      "line": 2,
      "mustEscape": false,
      "type": "Code",
      "val": "function answer() { return 42; }",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/user/\' + id",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\'button\'",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 3,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/user/\' + id",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\'button\'",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 4,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 4,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "key",
          "val": "\'answer\'",
        },
        Object {
          "mustEscape": true,
          "name": "value",
          "val": "answer()",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 5,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "meta",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "[\'class1\', \'class2\']",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 6,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 6,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'tag-class\'",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "[\'class1\', \'class2\']",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 7,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 7,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/user/\' + id",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\'button\'",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 9,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 9,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/user/\' + id",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\'button\'",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 10,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 10,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "key",
          "val": "\'answer\'",
        },
        Object {
          "mustEscape": true,
          "name": "value",
          "val": "answer()",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 11,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": false,
      "line": 11,
      "name": "meta",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "[\'class1\', \'class2\']",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 12,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 12,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'tag-class\'",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "[\'class1\', \'class2\']",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 13,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": true,
      "line": 13,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [
        "{foo: \'bar\'}",
      ],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "id",
          "val": "id",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 15,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": false,
      "line": 15,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "attrs.js.tokens.json",
      "isInline": false,
      "line": 16,
      "mustEscape": false,
      "type": "Code",
      "val": "var bar = null",
    },
    Object {
      "attributeBlocks": Array [
        "{baz: \'baz\'}",
      ],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "null",
        },
        Object {
          "mustEscape": true,
          "name": "bar",
          "val": "bar",
        },
      ],
      "block": Object {
        "filename": "attrs.js.tokens.json",
        "line": 17,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.js.tokens.json",
      "isInline": false,
      "line": 17,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test attrs.tokens.json 1`] = `
Object {
  "filename": "attrs.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/contact\'",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "attrs.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "contact",
          },
        ],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 1,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/save\'",
        },
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'button\'",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "filename": "attrs.tokens.json",
            "line": 2,
            "type": "Text",
            "val": "save",
          },
        ],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 2,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "bar",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "baz",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 3,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'foo, bar, baz\'",
        },
        Object {
          "mustEscape": true,
          "name": "bar",
          "val": "1",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 4,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 4,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'((foo))\'",
        },
        Object {
          "mustEscape": true,
          "name": "bar",
          "val": "(1) ? 1 : 0",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 5,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 5,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "value",
                "val": "\'foo\'",
              },
              Object {
                "mustEscape": false,
                "name": "selected",
                "val": true,
              },
            ],
            "block": Object {
              "filename": "attrs.tokens.json",
              "line": 7,
              "nodes": Array [
                Object {
                  "filename": "attrs.tokens.json",
                  "line": 7,
                  "type": "Text",
                  "val": "Foo",
                },
              ],
              "type": "Block",
            },
            "filename": "attrs.tokens.json",
            "isInline": false,
            "line": 7,
            "name": "option",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "selected",
                "val": true,
              },
              Object {
                "mustEscape": true,
                "name": "value",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "attrs.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "filename": "attrs.tokens.json",
                  "line": 8,
                  "type": "Text",
                  "val": "Bar",
                },
              ],
              "type": "Block",
            },
            "filename": "attrs.tokens.json",
            "isInline": false,
            "line": 8,
            "name": "option",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "select",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\"class:\"",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 9,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 9,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "pattern",
          "val": "\'\\\\S+\'",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 10,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 10,
      "name": "input",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/contact\'",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 12,
        "nodes": Array [
          Object {
            "filename": "attrs.tokens.json",
            "line": 12,
            "type": "Text",
            "val": "contact",
          },
        ],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 12,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "href",
          "val": "\'/save\'",
        },
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'button\'",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 13,
        "nodes": Array [
          Object {
            "filename": "attrs.tokens.json",
            "line": 13,
            "type": "Text",
            "val": "save",
          },
        ],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 13,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "bar",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "baz",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 14,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 14,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'foo, bar, baz\'",
        },
        Object {
          "mustEscape": true,
          "name": "bar",
          "val": "1",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 15,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 15,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'((foo))\'",
        },
        Object {
          "mustEscape": true,
          "name": "bar",
          "val": "(1) ? 1 : 0",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 16,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 16,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 17,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "value",
                "val": "\'foo\'",
              },
              Object {
                "mustEscape": false,
                "name": "selected",
                "val": true,
              },
            ],
            "block": Object {
              "filename": "attrs.tokens.json",
              "line": 18,
              "nodes": Array [
                Object {
                  "filename": "attrs.tokens.json",
                  "line": 18,
                  "type": "Text",
                  "val": "Foo",
                },
              ],
              "type": "Block",
            },
            "filename": "attrs.tokens.json",
            "isInline": false,
            "line": 18,
            "name": "option",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "selected",
                "val": true,
              },
              Object {
                "mustEscape": true,
                "name": "value",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "attrs.tokens.json",
              "line": 19,
              "nodes": Array [
                Object {
                  "filename": "attrs.tokens.json",
                  "line": 19,
                  "type": "Text",
                  "val": "Bar",
                },
              ],
              "type": "Block",
            },
            "filename": "attrs.tokens.json",
            "isInline": false,
            "line": 19,
            "name": "option",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 17,
      "name": "select",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\"class:\"",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 20,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 20,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "pattern",
          "val": "\'\\\\S+\'",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 21,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 21,
      "name": "input",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "terse",
          "val": "\"true\"",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 22,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 22,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "date",
          "val": "new Date(0)",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 23,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 23,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "abc",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "def",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 25,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 25,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "abc",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "def",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 27,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 27,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "abc",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "def",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 29,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 29,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "abc",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "def",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 31,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 31,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "abc",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "def",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 33,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 33,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "abc",
          "val": true,
        },
        Object {
          "mustEscape": false,
          "name": "def",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 35,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 35,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 38,
      "mustEscape": false,
      "type": "Code",
      "val": "var attrs = {foo: \'bar\', bar: \'<baz>\'}",
    },
    Object {
      "attributeBlocks": Array [
        "attrs",
      ],
      "attrs": Array [],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 40,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": false,
      "line": 40,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'foo\'",
        },
        Object {
          "mustEscape": true,
          "name": "bar",
          "val": "\"bar\"",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 42,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 42,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'foo\'",
        },
        Object {
          "mustEscape": true,
          "name": "bar",
          "val": "\'bar\'",
        },
      ],
      "block": Object {
        "filename": "attrs.tokens.json",
        "line": 43,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs.tokens.json",
      "isInline": true,
      "line": 43,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test attrs.unescaped.tokens.json 1`] = `
Object {
  "filename": "attrs.unescaped.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'text/x-template\'",
        },
      ],
      "block": Object {
        "filename": "attrs.unescaped.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'user-<%= user.id %>\'",
              },
            ],
            "block": Object {
              "filename": "attrs.unescaped.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "attrs.unescaped.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "filename": "attrs.unescaped.tokens.json",
                        "line": 3,
                        "type": "Text",
                        "val": "<%= user.title %>",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "attrs.unescaped.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "h1",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "attrs.unescaped.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "attrs.unescaped.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test attrs-data.tokens.json 1`] = `
Object {
  "filename": "attrs-data.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "attrs-data.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var user = { name: \'tobi\' }",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "data-user",
          "val": "user",
        },
      ],
      "block": Object {
        "filename": "attrs-data.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs-data.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "data-items",
          "val": "[1,2,3]",
        },
      ],
      "block": Object {
        "filename": "attrs-data.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs-data.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "data-username",
          "val": "\'tobi\'",
        },
      ],
      "block": Object {
        "filename": "attrs-data.tokens.json",
        "line": 4,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs-data.tokens.json",
      "isInline": false,
      "line": 4,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "data-escaped",
          "val": "{message: \"Let\'s rock!\"}",
        },
      ],
      "block": Object {
        "filename": "attrs-data.tokens.json",
        "line": 5,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs-data.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "data-ampersand",
          "val": "{message: \"a quote: &quot; this & that\"}",
        },
      ],
      "block": Object {
        "filename": "attrs-data.tokens.json",
        "line": 6,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs-data.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "data-epoc",
          "val": "new Date(0)",
        },
      ],
      "block": Object {
        "filename": "attrs-data.tokens.json",
        "line": 7,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "attrs-data.tokens.json",
      "isInline": false,
      "line": 7,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test basic.tokens.json 1`] = `
Object {
  "filename": "basic.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "basic.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "basic.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "basic.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "filename": "basic.tokens.json",
                        "line": 3,
                        "type": "Text",
                        "val": "Title",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "basic.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "h1",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "basic.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "basic.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test blanks.tokens.json 1`] = `
Object {
  "filename": "blanks.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "blanks.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "blanks.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "filename": "blanks.tokens.json",
                  "line": 4,
                  "type": "Text",
                  "val": "foo",
                },
              ],
              "type": "Block",
            },
            "filename": "blanks.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "blanks.tokens.json",
              "line": 6,
              "nodes": Array [
                Object {
                  "filename": "blanks.tokens.json",
                  "line": 6,
                  "type": "Text",
                  "val": "bar",
                },
              ],
              "type": "Block",
            },
            "filename": "blanks.tokens.json",
            "isInline": false,
            "line": 6,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "blanks.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "filename": "blanks.tokens.json",
                  "line": 8,
                  "type": "Text",
                  "val": "baz",
                },
              ],
              "type": "Block",
            },
            "filename": "blanks.tokens.json",
            "isInline": false,
            "line": 8,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "blanks.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test block-code.tokens.json 1`] = `
Object {
  "filename": "block-code.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "block-code.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "list = [\"uno\", \"dos\", \"tres\",
        \"cuatro\", \"cinco\", \"seis\"];",
    },
    Object {
      "buffer": false,
      "filename": "block-code.tokens.json",
      "line": 4,
      "type": "Comment",
      "val": " Without a block, the element is accepted and no code is generated",
    },
    Object {
      "buffer": false,
      "filename": "block-code.tokens.json",
      "isInline": false,
      "line": 5,
      "mustEscape": false,
      "type": "Code",
      "val": "",
    },
    Object {
      "block": Object {
        "filename": "block-code.tokens.json",
        "line": 7,
        "nodes": Array [
          Object {
            "buffer": false,
            "filename": "block-code.tokens.json",
            "isInline": false,
            "line": 7,
            "mustEscape": false,
            "type": "Code",
            "val": "string = item.charAt(0)

  .toUpperCase() +
item.slice(1);",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "block-code.tokens.json",
              "line": 12,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "block-code.tokens.json",
                  "isInline": true,
                  "line": 12,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "string",
                },
              ],
              "type": "Block",
            },
            "filename": "block-code.tokens.json",
            "isInline": false,
            "line": 12,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "block-code.tokens.json",
      "key": null,
      "line": 6,
      "obj": "list",
      "type": "Each",
      "val": "item",
    },
  ],
  "type": "Block",
}
`;

exports[`test block-expansion.shorthands.tokens.json 1`] = `
Object {
  "filename": "block-expansion.shorthands.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "block-expansion.shorthands.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'list-item\'",
              },
            ],
            "block": Object {
              "filename": "block-expansion.shorthands.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": false,
                      "name": "class",
                      "val": "\'foo\'",
                    },
                  ],
                  "block": Object {
                    "filename": "block-expansion.shorthands.tokens.json",
                    "line": 2,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": false,
                            "name": "id",
                            "val": "\'bar\'",
                          },
                        ],
                        "block": Object {
                          "filename": "block-expansion.shorthands.tokens.json",
                          "line": 2,
                          "nodes": Array [
                            Object {
                              "filename": "block-expansion.shorthands.tokens.json",
                              "line": 2,
                              "type": "Text",
                              "val": "baz",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "block-expansion.shorthands.tokens.json",
                        "isInline": false,
                        "line": 2,
                        "name": "div",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "block-expansion.shorthands.tokens.json",
                  "isInline": false,
                  "line": 2,
                  "name": "div",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "block-expansion.shorthands.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "block-expansion.shorthands.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test block-expansion.tokens.json 1`] = `
Object {
  "filename": "block-expansion.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "block-expansion.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "block-expansion.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "href",
                      "val": "\'#\'",
                    },
                  ],
                  "block": Object {
                    "filename": "block-expansion.tokens.json",
                    "line": 2,
                    "nodes": Array [
                      Object {
                        "filename": "block-expansion.tokens.json",
                        "line": 2,
                        "type": "Text",
                        "val": "foo",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "block-expansion.tokens.json",
                  "isInline": true,
                  "line": 2,
                  "name": "a",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "block-expansion.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "block-expansion.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "href",
                      "val": "\'#\'",
                    },
                  ],
                  "block": Object {
                    "filename": "block-expansion.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "filename": "block-expansion.tokens.json",
                        "line": 3,
                        "type": "Text",
                        "val": "bar",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "block-expansion.tokens.json",
                  "isInline": true,
                  "line": 3,
                  "name": "a",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "block-expansion.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "block-expansion.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "block-expansion.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "filename": "block-expansion.tokens.json",
            "line": 5,
            "type": "Text",
            "val": "baz",
          },
        ],
        "type": "Block",
      },
      "filename": "block-expansion.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test blockquote.tokens.json 1`] = `
Object {
  "filename": "blockquote.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "blockquote.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "blockquote.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "filename": "blockquote.tokens.json",
                  "line": 3,
                  "type": "Text",
                  "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.",
                },
              ],
              "type": "Block",
            },
            "filename": "blockquote.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "blockquote",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "blockquote.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "filename": "blockquote.tokens.json",
                  "line": 4,
                  "type": "Text",
                  "val": "from @thefray at 1:43pm on May 10",
                },
              ],
              "type": "Block",
            },
            "filename": "blockquote.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "figcaption",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "blockquote.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "figure",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test blocks-in-blocks.tokens.json 1`] = `
Object {
  "filename": "blocks-in-blocks.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "blocks-in-blocks.tokens.json",
        "line": 1,
        "path": "./auxiliary/blocks-in-blocks-layout.pug",
        "type": "FileReference",
      },
      "filename": "blocks-in-blocks.tokens.json",
      "line": 1,
      "type": "Extends",
    },
    Object {
      "filename": "blocks-in-blocks.tokens.json",
      "line": 3,
      "mode": "replace",
      "name": "body",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "blocks-in-blocks.tokens.json",
            "line": 4,
            "nodes": Array [
              Object {
                "filename": "blocks-in-blocks.tokens.json",
                "line": 4,
                "type": "Text",
                "val": "Page 2",
              },
            ],
            "type": "Block",
          },
          "filename": "blocks-in-blocks.tokens.json",
          "isInline": false,
          "line": 4,
          "name": "h1",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test blocks-in-if.tokens.json 1`] = `
Object {
  "filename": "blocks-in-if.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "blocks-in-if.tokens.json",
      "line": 1,
      "type": "Comment",
      "val": " see https://github.com/pugjs/pug/issues/1589",
    },
    Object {
      "buffer": false,
      "filename": "blocks-in-if.tokens.json",
      "isInline": false,
      "line": 3,
      "mustEscape": false,
      "type": "Code",
      "val": "var ajax = true",
    },
    Object {
      "block": Object {
        "filename": "blocks-in-if.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "buffer": false,
            "filename": "blocks-in-if.tokens.json",
            "line": 6,
            "type": "Comment",
            "val": " return only contents if ajax requests",
          },
          Object {
            "filename": "blocks-in-if.tokens.json",
            "line": 7,
            "mode": "replace",
            "name": "contents",
            "nodes": Array [
              Object {
                "attributeBlocks": Array [],
                "attrs": Array [],
                "block": Object {
                  "filename": "blocks-in-if.tokens.json",
                  "line": 8,
                  "nodes": Array [
                    Object {
                      "filename": "blocks-in-if.tokens.json",
                      "line": 8,
                      "type": "Text",
                      "val": "ajax contents",
                    },
                  ],
                  "type": "Block",
                },
                "filename": "blocks-in-if.tokens.json",
                "isInline": false,
                "line": 8,
                "name": "p",
                "selfClosing": false,
                "type": "Tag",
              },
            ],
            "type": "NamedBlock",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "filename": "blocks-in-if.tokens.json",
      "isInline": false,
      "line": 5,
      "mustEscape": false,
      "type": "Code",
      "val": "if( ajax )",
    },
    Object {
      "block": Object {
        "filename": "blocks-in-if.tokens.json",
        "line": 11,
        "nodes": Array [
          Object {
            "buffer": false,
            "filename": "blocks-in-if.tokens.json",
            "line": 11,
            "type": "Comment",
            "val": " return all html",
          },
          Object {
            "filename": "blocks-in-if.tokens.json",
            "line": 12,
            "type": "Doctype",
            "val": "html",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "blocks-in-if.tokens.json",
              "line": 13,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "blocks-in-if.tokens.json",
                    "line": 14,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "charset",
                            "val": "\'utf8\'",
                          },
                        ],
                        "block": Object {
                          "filename": "blocks-in-if.tokens.json",
                          "line": 15,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "blocks-in-if.tokens.json",
                        "isInline": false,
                        "line": 15,
                        "name": "meta",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "blocks-in-if.tokens.json",
                          "line": 16,
                          "nodes": Array [
                            Object {
                              "filename": "blocks-in-if.tokens.json",
                              "line": 16,
                              "type": "Text",
                              "val": "sample",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "blocks-in-if.tokens.json",
                        "isInline": false,
                        "line": 16,
                        "name": "title",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "blocks-in-if.tokens.json",
                          "line": 17,
                          "nodes": Array [
                            Object {
                              "filename": "blocks-in-if.tokens.json",
                              "line": 18,
                              "mode": "replace",
                              "name": "contents",
                              "nodes": Array [
                                Object {
                                  "attributeBlocks": Array [],
                                  "attrs": Array [],
                                  "block": Object {
                                    "filename": "blocks-in-if.tokens.json",
                                    "line": 19,
                                    "nodes": Array [
                                      Object {
                                        "filename": "blocks-in-if.tokens.json",
                                        "line": 19,
                                        "type": "Text",
                                        "val": "all contetns",
                                      },
                                    ],
                                    "type": "Block",
                                  },
                                  "filename": "blocks-in-if.tokens.json",
                                  "isInline": false,
                                  "line": 19,
                                  "name": "p",
                                  "selfClosing": false,
                                  "type": "Tag",
                                },
                              ],
                              "type": "NamedBlock",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "blocks-in-if.tokens.json",
                        "isInline": false,
                        "line": 17,
                        "name": "body",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "blocks-in-if.tokens.json",
                  "isInline": false,
                  "line": 14,
                  "name": "head",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "blocks-in-if.tokens.json",
            "isInline": false,
            "line": 13,
            "name": "html",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "debug": false,
      "filename": "blocks-in-if.tokens.json",
      "isInline": false,
      "line": 10,
      "mustEscape": false,
      "type": "Code",
      "val": "else",
    },
  ],
  "type": "Block",
}
`;

exports[`test case.tokens.json 1`] = `
Object {
  "filename": "case.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "case.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "case.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "buffer": false,
                  "filename": "case.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "var friends = 1",
                },
                Object {
                  "block": Object {
                    "filename": "case.tokens.json",
                    "line": 5,
                    "nodes": Array [
                      Object {
                        "block": Object {
                          "filename": "case.tokens.json",
                          "line": 5,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case.tokens.json",
                                "line": 5,
                                "nodes": Array [
                                  Object {
                                    "filename": "case.tokens.json",
                                    "line": 5,
                                    "type": "Text",
                                    "val": "you have no friends",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case.tokens.json",
                              "isInline": false,
                              "line": 5,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "0",
                        "filename": "case.tokens.json",
                        "line": 5,
                        "type": "When",
                      },
                      Object {
                        "block": Object {
                          "filename": "case.tokens.json",
                          "line": 6,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case.tokens.json",
                                "line": 6,
                                "nodes": Array [
                                  Object {
                                    "filename": "case.tokens.json",
                                    "line": 6,
                                    "type": "Text",
                                    "val": "you have a friend",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case.tokens.json",
                              "isInline": false,
                              "line": 6,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "1",
                        "filename": "case.tokens.json",
                        "line": 6,
                        "type": "When",
                      },
                      Object {
                        "block": Object {
                          "filename": "case.tokens.json",
                          "line": 7,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case.tokens.json",
                                "line": 7,
                                "nodes": Array [
                                  Object {
                                    "filename": "case.tokens.json",
                                    "line": 7,
                                    "type": "Text",
                                    "val": "you have ",
                                  },
                                  Object {
                                    "buffer": true,
                                    "filename": "case.tokens.json",
                                    "isInline": true,
                                    "line": 7,
                                    "mustEscape": true,
                                    "type": "Code",
                                    "val": "friends",
                                  },
                                  Object {
                                    "filename": "case.tokens.json",
                                    "line": 7,
                                    "type": "Text",
                                    "val": " friends",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case.tokens.json",
                              "isInline": false,
                              "line": 7,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "default",
                        "filename": "case.tokens.json",
                        "line": 7,
                        "type": "When",
                      },
                    ],
                    "type": "Block",
                  },
                  "expr": "friends",
                  "filename": "case.tokens.json",
                  "line": 4,
                  "type": "Case",
                },
                Object {
                  "buffer": false,
                  "filename": "case.tokens.json",
                  "isInline": false,
                  "line": 8,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "var friends = 0",
                },
                Object {
                  "block": Object {
                    "filename": "case.tokens.json",
                    "line": 10,
                    "nodes": Array [
                      Object {
                        "debug": false,
                        "expr": "0",
                        "filename": "case.tokens.json",
                        "line": 10,
                        "type": "When",
                      },
                      Object {
                        "block": Object {
                          "filename": "case.tokens.json",
                          "line": 12,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case.tokens.json",
                                "line": 12,
                                "nodes": Array [
                                  Object {
                                    "filename": "case.tokens.json",
                                    "line": 12,
                                    "type": "Text",
                                    "val": "you have very few friends",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case.tokens.json",
                              "isInline": false,
                              "line": 12,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "1",
                        "filename": "case.tokens.json",
                        "line": 11,
                        "type": "When",
                      },
                      Object {
                        "block": Object {
                          "filename": "case.tokens.json",
                          "line": 14,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case.tokens.json",
                                "line": 14,
                                "nodes": Array [
                                  Object {
                                    "filename": "case.tokens.json",
                                    "line": 14,
                                    "type": "Text",
                                    "val": "you have ",
                                  },
                                  Object {
                                    "buffer": true,
                                    "filename": "case.tokens.json",
                                    "isInline": true,
                                    "line": 14,
                                    "mustEscape": true,
                                    "type": "Code",
                                    "val": "friends",
                                  },
                                  Object {
                                    "filename": "case.tokens.json",
                                    "line": 14,
                                    "type": "Text",
                                    "val": " friends",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case.tokens.json",
                              "isInline": false,
                              "line": 14,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "default",
                        "filename": "case.tokens.json",
                        "line": 13,
                        "type": "When",
                      },
                    ],
                    "type": "Block",
                  },
                  "expr": "friends",
                  "filename": "case.tokens.json",
                  "line": 9,
                  "type": "Case",
                },
              ],
              "type": "Block",
            },
            "filename": "case.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "case.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test case-blocks.tokens.json 1`] = `
Object {
  "filename": "case-blocks.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "case-blocks.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "case-blocks.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "buffer": false,
                  "filename": "case-blocks.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "var friends = 1",
                },
                Object {
                  "block": Object {
                    "filename": "case-blocks.tokens.json",
                    "line": 5,
                    "nodes": Array [
                      Object {
                        "block": Object {
                          "filename": "case-blocks.tokens.json",
                          "line": 6,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case-blocks.tokens.json",
                                "line": 6,
                                "nodes": Array [
                                  Object {
                                    "filename": "case-blocks.tokens.json",
                                    "line": 6,
                                    "type": "Text",
                                    "val": "you have no friends",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case-blocks.tokens.json",
                              "isInline": false,
                              "line": 6,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "0",
                        "filename": "case-blocks.tokens.json",
                        "line": 5,
                        "type": "When",
                      },
                      Object {
                        "block": Object {
                          "filename": "case-blocks.tokens.json",
                          "line": 8,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case-blocks.tokens.json",
                                "line": 8,
                                "nodes": Array [
                                  Object {
                                    "filename": "case-blocks.tokens.json",
                                    "line": 8,
                                    "type": "Text",
                                    "val": "you have a friend",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case-blocks.tokens.json",
                              "isInline": false,
                              "line": 8,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "1",
                        "filename": "case-blocks.tokens.json",
                        "line": 7,
                        "type": "When",
                      },
                      Object {
                        "block": Object {
                          "filename": "case-blocks.tokens.json",
                          "line": 10,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "case-blocks.tokens.json",
                                "line": 10,
                                "nodes": Array [
                                  Object {
                                    "filename": "case-blocks.tokens.json",
                                    "line": 10,
                                    "type": "Text",
                                    "val": "you have ",
                                  },
                                  Object {
                                    "buffer": true,
                                    "filename": "case-blocks.tokens.json",
                                    "isInline": true,
                                    "line": 10,
                                    "mustEscape": true,
                                    "type": "Code",
                                    "val": "friends",
                                  },
                                  Object {
                                    "filename": "case-blocks.tokens.json",
                                    "line": 10,
                                    "type": "Text",
                                    "val": " friends",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "case-blocks.tokens.json",
                              "isInline": false,
                              "line": 10,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "default",
                        "filename": "case-blocks.tokens.json",
                        "line": 9,
                        "type": "When",
                      },
                    ],
                    "type": "Block",
                  },
                  "expr": "friends",
                  "filename": "case-blocks.tokens.json",
                  "line": 4,
                  "type": "Case",
                },
              ],
              "type": "Block",
            },
            "filename": "case-blocks.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "case-blocks.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test classes.tokens.json 1`] = `
Object {
  "filename": "classes.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "[\'foo\', \'bar\', \'baz\']",
        },
      ],
      "block": Object {
        "filename": "classes.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "classes.tokens.json",
      "isInline": true,
      "line": 1,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'foo\'",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\'bar\'",
        },
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'baz\'",
        },
      ],
      "block": Object {
        "filename": "classes.tokens.json",
        "line": 5,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "classes.tokens.json",
      "isInline": true,
      "line": 5,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'foo-bar_baz\'",
        },
      ],
      "block": Object {
        "filename": "classes.tokens.json",
        "line": 9,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "classes.tokens.json",
      "isInline": true,
      "line": 9,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "{foo: true, bar: false, baz: true}",
        },
      ],
      "block": Object {
        "filename": "classes.tokens.json",
        "line": 11,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "classes.tokens.json",
      "isInline": true,
      "line": 11,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test classes-empty.tokens.json 1`] = `
Object {
  "filename": "classes-empty.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\'\'",
        },
      ],
      "block": Object {
        "filename": "classes-empty.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "classes-empty.tokens.json",
      "isInline": true,
      "line": 1,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "null",
        },
      ],
      "block": Object {
        "filename": "classes-empty.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "classes-empty.tokens.json",
      "isInline": true,
      "line": 2,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "undefined",
        },
      ],
      "block": Object {
        "filename": "classes-empty.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "classes-empty.tokens.json",
      "isInline": true,
      "line": 3,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test code.conditionals.tokens.json 1`] = `
Object {
  "filename": "code.conditionals.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 3,
                  "type": "Text",
                  "val": "foo",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "filename": "code.conditionals.tokens.json",
      "isInline": false,
      "line": 2,
      "mustEscape": false,
      "type": "Code",
      "val": "if (true)",
    },
    Object {
      "block": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 5,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 5,
                  "type": "Text",
                  "val": "bar",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 5,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "debug": false,
      "filename": "code.conditionals.tokens.json",
      "isInline": false,
      "line": 4,
      "mustEscape": false,
      "type": "Code",
      "val": "else",
    },
    Object {
      "block": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 8,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 8,
                  "type": "Text",
                  "val": "foo",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 8,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "filename": "code.conditionals.tokens.json",
      "isInline": false,
      "line": 7,
      "mustEscape": false,
      "type": "Code",
      "val": "if (true) {",
    },
    Object {
      "block": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 10,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 10,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 10,
                  "type": "Text",
                  "val": "bar",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 10,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "filename": "code.conditionals.tokens.json",
      "isInline": false,
      "line": 9,
      "mustEscape": false,
      "type": "Code",
      "val": "} else {",
    },
    Object {
      "buffer": false,
      "filename": "code.conditionals.tokens.json",
      "isInline": false,
      "line": 11,
      "mustEscape": false,
      "type": "Code",
      "val": "}",
    },
    Object {
      "alternate": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 18,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 18,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 18,
                  "type": "Text",
                  "val": "bar",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 18,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "consequent": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 14,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 14,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 14,
                  "type": "Text",
                  "val": "foo",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 14,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 15,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 15,
                  "type": "Text",
                  "val": "bar",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 15,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 16,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 16,
                  "type": "Text",
                  "val": "baz",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 16,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "code.conditionals.tokens.json",
      "line": 13,
      "test": "true",
      "type": "Conditional",
    },
    Object {
      "alternate": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 23,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 23,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 23,
                  "type": "Text",
                  "val": "bar",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 23,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "consequent": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 21,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 21,
              "nodes": Array [
                Object {
                  "filename": "code.conditionals.tokens.json",
                  "line": 21,
                  "type": "Text",
                  "val": "foo",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 21,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "code.conditionals.tokens.json",
      "line": 20,
      "test": "!(true)",
      "type": "Conditional",
    },
    Object {
      "alternate": null,
      "consequent": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 26,
        "nodes": Array [
          Object {
            "alternate": null,
            "consequent": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 27,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "code.conditionals.tokens.json",
                    "line": 27,
                    "nodes": Array [
                      Object {
                        "filename": "code.conditionals.tokens.json",
                        "line": 27,
                        "type": "Text",
                        "val": "yay",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "code.conditionals.tokens.json",
                  "isInline": false,
                  "line": 27,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "line": 26,
            "test": "\'works\'",
            "type": "Conditional",
          },
        ],
        "type": "Block",
      },
      "filename": "code.conditionals.tokens.json",
      "line": 25,
      "test": "\'nested\'",
      "type": "Conditional",
    },
    Object {
      "buffer": false,
      "filename": "code.conditionals.tokens.json",
      "line": 29,
      "type": "Comment",
      "val": " allow empty blocks",
    },
    Object {
      "alternate": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 32,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 32,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 32,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "consequent": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 30,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "code.conditionals.tokens.json",
      "line": 30,
      "test": "false",
      "type": "Conditional",
    },
    Object {
      "alternate": null,
      "consequent": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 34,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 34,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 34,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "code.conditionals.tokens.json",
      "line": 33,
      "test": "true",
      "type": "Conditional",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'bing\'",
        },
      ],
      "block": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 36,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "code.conditionals.tokens.json",
      "isInline": false,
      "line": 36,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "alternate": Object {
        "alternate": Object {
          "filename": "code.conditionals.tokens.json",
          "line": 43,
          "nodes": Array [
            Object {
              "attributeBlocks": Array [],
              "attrs": Array [
                Object {
                  "mustEscape": false,
                  "name": "class",
                  "val": "\'foo\'",
                },
              ],
              "block": Object {
                "filename": "code.conditionals.tokens.json",
                "line": 43,
                "nodes": Array [],
                "type": "Block",
              },
              "filename": "code.conditionals.tokens.json",
              "isInline": false,
              "line": 43,
              "name": "div",
              "selfClosing": false,
              "type": "Tag",
            },
          ],
          "type": "Block",
        },
        "consequent": Object {
          "filename": "code.conditionals.tokens.json",
          "line": 41,
          "nodes": Array [
            Object {
              "attributeBlocks": Array [],
              "attrs": Array [
                Object {
                  "mustEscape": false,
                  "name": "class",
                  "val": "\'bar\'",
                },
              ],
              "block": Object {
                "filename": "code.conditionals.tokens.json",
                "line": 41,
                "nodes": Array [],
                "type": "Block",
              },
              "filename": "code.conditionals.tokens.json",
              "isInline": false,
              "line": 41,
              "name": "div",
              "selfClosing": false,
              "type": "Tag",
            },
          ],
          "type": "Block",
        },
        "filename": "code.conditionals.tokens.json",
        "line": 40,
        "test": "false",
        "type": "Conditional",
      },
      "consequent": Object {
        "filename": "code.conditionals.tokens.json",
        "line": 39,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'bing\'",
              },
            ],
            "block": Object {
              "filename": "code.conditionals.tokens.json",
              "line": 39,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "code.conditionals.tokens.json",
            "isInline": false,
            "line": 39,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "code.conditionals.tokens.json",
      "line": 38,
      "test": "false",
      "type": "Conditional",
    },
  ],
  "type": "Block",
}
`;

exports[`test code.escape.tokens.json 1`] = `
Object {
  "filename": "code.escape.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.escape.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "code.escape.tokens.json",
            "isInline": true,
            "line": 1,
            "mustEscape": true,
            "type": "Code",
            "val": "\'<script>\'",
          },
        ],
        "type": "Block",
      },
      "filename": "code.escape.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.escape.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "code.escape.tokens.json",
            "isInline": true,
            "line": 2,
            "mustEscape": false,
            "type": "Code",
            "val": "\'<script>\'",
          },
        ],
        "type": "Block",
      },
      "filename": "code.escape.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test code.iteration.tokens.json 1`] = `
Object {
  "filename": "code.iteration.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 2,
      "mustEscape": false,
      "type": "Code",
      "val": "var items = [1,2,3]",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.iteration.tokens.json",
        "line": 4,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "code.iteration.tokens.json",
              "line": 6,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "code.iteration.tokens.json",
                    "line": 6,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "code.iteration.tokens.json",
                        "isInline": true,
                        "line": 6,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "item",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "code.iteration.tokens.json",
                  "isInline": false,
                  "line": 6,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "buffer": false,
            "filename": "code.iteration.tokens.json",
            "isInline": false,
            "line": 5,
            "mustEscape": false,
            "type": "Code",
            "val": "items.forEach(function(item){",
          },
          Object {
            "buffer": false,
            "filename": "code.iteration.tokens.json",
            "isInline": false,
            "line": 7,
            "mustEscape": false,
            "type": "Code",
            "val": "})",
          },
        ],
        "type": "Block",
      },
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 4,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 9,
      "mustEscape": false,
      "type": "Code",
      "val": "var items = [1,2,3]",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.iteration.tokens.json",
        "line": 11,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "code.iteration.tokens.json",
              "line": 13,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "class",
                      "val": "\'item-\' + i",
                    },
                  ],
                  "block": Object {
                    "filename": "code.iteration.tokens.json",
                    "line": 13,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "code.iteration.tokens.json",
                        "isInline": true,
                        "line": 13,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "item",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "code.iteration.tokens.json",
                  "isInline": false,
                  "line": 13,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "code.iteration.tokens.json",
            "key": "i",
            "line": 12,
            "obj": "items",
            "type": "Each",
            "val": "item",
          },
        ],
        "type": "Block",
      },
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 11,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.iteration.tokens.json",
        "line": 15,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "code.iteration.tokens.json",
              "line": 17,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "code.iteration.tokens.json",
                    "line": 17,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "code.iteration.tokens.json",
                        "isInline": true,
                        "line": 17,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "item",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "code.iteration.tokens.json",
                  "isInline": false,
                  "line": 17,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "code.iteration.tokens.json",
            "key": "i",
            "line": 16,
            "obj": "items",
            "type": "Each",
            "val": "item",
          },
        ],
        "type": "Block",
      },
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 15,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.iteration.tokens.json",
        "line": 19,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "code.iteration.tokens.json",
              "line": 21,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "code.iteration.tokens.json",
                    "line": 21,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "code.iteration.tokens.json",
                        "isInline": true,
                        "line": 21,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "$item",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "code.iteration.tokens.json",
                  "isInline": false,
                  "line": 21,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "code.iteration.tokens.json",
            "key": null,
            "line": 20,
            "obj": "items",
            "type": "Each",
            "val": "$item",
          },
        ],
        "type": "Block",
      },
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 19,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 23,
      "mustEscape": false,
      "type": "Code",
      "val": "var nums = [1, 2, 3]",
    },
    Object {
      "buffer": false,
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 24,
      "mustEscape": false,
      "type": "Code",
      "val": "var letters = [\'a\', \'b\', \'c\']",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.iteration.tokens.json",
        "line": 26,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "code.iteration.tokens.json",
              "line": 28,
              "nodes": Array [
                Object {
                  "block": Object {
                    "filename": "code.iteration.tokens.json",
                    "line": 29,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "code.iteration.tokens.json",
                          "line": 29,
                          "nodes": Array [
                            Object {
                              "buffer": true,
                              "filename": "code.iteration.tokens.json",
                              "isInline": true,
                              "line": 29,
                              "mustEscape": true,
                              "type": "Code",
                              "val": "n",
                            },
                            Object {
                              "filename": "code.iteration.tokens.json",
                              "line": 29,
                              "type": "Text",
                              "val": ": ",
                            },
                            Object {
                              "buffer": true,
                              "filename": "code.iteration.tokens.json",
                              "isInline": true,
                              "line": 29,
                              "mustEscape": true,
                              "type": "Code",
                              "val": "l",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "code.iteration.tokens.json",
                        "isInline": false,
                        "line": 29,
                        "name": "li",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "code.iteration.tokens.json",
                  "key": null,
                  "line": 28,
                  "obj": "nums",
                  "type": "Each",
                  "val": "n",
                },
              ],
              "type": "Block",
            },
            "filename": "code.iteration.tokens.json",
            "key": null,
            "line": 27,
            "obj": "letters",
            "type": "Each",
            "val": "l",
          },
        ],
        "type": "Block",
      },
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 26,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 31,
      "mustEscape": false,
      "type": "Code",
      "val": "var count = 1",
    },
    Object {
      "buffer": false,
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 32,
      "mustEscape": false,
      "type": "Code",
      "val": "var counter = function() { return [count++, count++, count++] }",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.iteration.tokens.json",
        "line": 33,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "code.iteration.tokens.json",
              "line": 35,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "code.iteration.tokens.json",
                    "line": 35,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "code.iteration.tokens.json",
                        "isInline": true,
                        "line": 35,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "n",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "code.iteration.tokens.json",
                  "isInline": false,
                  "line": 35,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "code.iteration.tokens.json",
            "key": null,
            "line": 34,
            "obj": "counter()",
            "type": "Each",
            "val": "n",
          },
        ],
        "type": "Block",
      },
      "filename": "code.iteration.tokens.json",
      "isInline": false,
      "line": 33,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test code.tokens.json 1`] = `
Object {
  "filename": "code.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "code.tokens.json",
            "isInline": true,
            "line": 1,
            "mustEscape": true,
            "type": "Code",
            "val": "null",
          },
        ],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "code.tokens.json",
            "isInline": true,
            "line": 2,
            "mustEscape": true,
            "type": "Code",
            "val": "undefined",
          },
        ],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "code.tokens.json",
            "isInline": true,
            "line": 3,
            "mustEscape": true,
            "type": "Code",
            "val": "\'\'",
          },
        ],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 4,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "code.tokens.json",
            "isInline": true,
            "line": 4,
            "mustEscape": true,
            "type": "Code",
            "val": "0",
          },
        ],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 4,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "code.tokens.json",
            "isInline": true,
            "line": 5,
            "mustEscape": true,
            "type": "Code",
            "val": "false",
          },
        ],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "null",
        },
      ],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 6,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "undefined",
        },
      ],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 7,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 7,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'\'",
        },
      ],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 8,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 8,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "0",
        },
      ],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 9,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 9,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "false",
        },
      ],
      "block": Object {
        "filename": "code.tokens.json",
        "line": 10,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "code.tokens.json",
      "isInline": false,
      "line": 10,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test comments.source.tokens.json 1`] = `
Object {
  "filename": "comments.source.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "comments.source.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "s/s.",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "filename": "comments.source.tokens.json",
      "line": 1,
      "type": "BlockComment",
      "val": "",
    },
    Object {
      "buffer": false,
      "filename": "comments.source.tokens.json",
      "line": 4,
      "type": "Comment",
      "val": " test/cases/comments.source.pug",
    },
    Object {
      "block": Object {
        "filename": "comments.source.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "line": 7,
            "type": "Text",
            "val": "test/cases/comments.source.pug",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "when",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "()",
          },
        ],
        "type": "Block",
      },
      "buffer": false,
      "filename": "comments.source.tokens.json",
      "line": 6,
      "type": "BlockComment",
      "val": "",
    },
  ],
  "type": "Block",
}
`;

exports[`test comments.tokens.json 1`] = `
Object {
  "filename": "comments.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": true,
      "filename": "comments.tokens.json",
      "line": 2,
      "type": "Comment",
      "val": " foo",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "comments.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "comments.tokens.json",
            "line": 4,
            "type": "Comment",
            "val": " bar",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "comments.tokens.json",
              "line": 5,
              "nodes": Array [
                Object {
                  "filename": "comments.tokens.json",
                  "line": 5,
                  "type": "Text",
                  "val": "one",
                },
              ],
              "type": "Block",
            },
            "filename": "comments.tokens.json",
            "isInline": false,
            "line": 5,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "buffer": true,
            "filename": "comments.tokens.json",
            "line": 6,
            "type": "Comment",
            "val": " baz",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "comments.tokens.json",
              "line": 7,
              "nodes": Array [
                Object {
                  "filename": "comments.tokens.json",
                  "line": 7,
                  "type": "Text",
                  "val": "two",
                },
              ],
              "type": "Block",
            },
            "filename": "comments.tokens.json",
            "isInline": false,
            "line": 7,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "comments.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "block": Object {
        "filename": "comments.tokens.json",
        "line": 9,
        "nodes": Array [
          Object {
            "line": 10,
            "type": "Text",
            "val": "ul",
          },
          Object {
            "line": 11,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 11,
            "type": "Text",
            "val": "  li foo",
          },
          Object {
            "line": 12,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 12,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "buffer": true,
      "filename": "comments.tokens.json",
      "line": 9,
      "type": "BlockComment",
      "val": "",
    },
    Object {
      "block": Object {
        "filename": "comments.tokens.json",
        "line": 13,
        "nodes": Array [
          Object {
            "line": 14,
            "type": "Text",
            "val": "// inline follow",
          },
          Object {
            "line": 15,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 15,
            "type": "Text",
            "val": "li three",
          },
          Object {
            "line": 16,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 16,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "buffer": true,
      "filename": "comments.tokens.json",
      "line": 13,
      "type": "BlockComment",
      "val": " block",
    },
    Object {
      "block": Object {
        "filename": "comments.tokens.json",
        "line": 17,
        "nodes": Array [
          Object {
            "line": 18,
            "type": "Text",
            "val": "// inline followed by tags",
          },
          Object {
            "line": 19,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 19,
            "type": "Text",
            "val": "ul",
          },
          Object {
            "line": 20,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 20,
            "type": "Text",
            "val": "  li four",
          },
          Object {
            "line": 21,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 21,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "buffer": true,
      "filename": "comments.tokens.json",
      "line": 17,
      "type": "BlockComment",
      "val": " block",
    },
    Object {
      "block": Object {
        "filename": "comments.tokens.json",
        "line": 22,
        "nodes": Array [
          Object {
            "line": 23,
            "type": "Text",
            "val": "// inline",
          },
          Object {
            "line": 24,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 24,
            "type": "Text",
            "val": "script(src=\'/lame.js\')",
          },
          Object {
            "line": 25,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 25,
            "type": "Text",
            "val": "// end-inline",
          },
          Object {
            "line": 26,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 26,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "buffer": true,
      "filename": "comments.tokens.json",
      "line": 22,
      "type": "BlockComment",
      "val": "if IE lt 9",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "comments.tokens.json",
        "line": 27,
        "nodes": Array [
          Object {
            "filename": "comments.tokens.json",
            "line": 27,
            "type": "Text",
            "val": "five",
          },
        ],
        "type": "Block",
      },
      "filename": "comments.tokens.json",
      "isInline": false,
      "line": 27,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'foo\'",
        },
      ],
      "block": Object {
        "filename": "comments.tokens.json",
        "line": 29,
        "nodes": Array [
          Object {
            "filename": "comments.tokens.json",
            "line": 29,
            "type": "Text",
            "val": "// not a comment",
          },
        ],
        "type": "Block",
      },
      "filename": "comments.tokens.json",
      "isInline": false,
      "line": 29,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test comments-in-case.tokens.json 1`] = `
Object {
  "filename": "comments-in-case.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "comments-in-case.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "html",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "comments-in-case.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "comments-in-case.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "buffer": false,
                  "filename": "comments-in-case.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "var s = \'this\'",
                },
                Object {
                  "block": Object {
                    "filename": "comments-in-case.tokens.json",
                    "line": 6,
                    "nodes": Array [
                      Object {
                        "block": Object {
                          "filename": "comments-in-case.tokens.json",
                          "line": 8,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "comments-in-case.tokens.json",
                                "line": 8,
                                "nodes": Array [
                                  Object {
                                    "filename": "comments-in-case.tokens.json",
                                    "line": 8,
                                    "type": "Text",
                                    "val": "It\'s this!",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "comments-in-case.tokens.json",
                              "isInline": false,
                              "line": 8,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "\'this\'",
                        "filename": "comments-in-case.tokens.json",
                        "line": 7,
                        "type": "When",
                      },
                      Object {
                        "block": Object {
                          "filename": "comments-in-case.tokens.json",
                          "line": 10,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "comments-in-case.tokens.json",
                                "line": 10,
                                "nodes": Array [
                                  Object {
                                    "filename": "comments-in-case.tokens.json",
                                    "line": 10,
                                    "type": "Text",
                                    "val": "It\'s that!",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "comments-in-case.tokens.json",
                              "isInline": false,
                              "line": 10,
                              "name": "p",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "debug": false,
                        "expr": "\'that\'",
                        "filename": "comments-in-case.tokens.json",
                        "line": 9,
                        "type": "When",
                      },
                    ],
                    "type": "Block",
                  },
                  "expr": "s",
                  "filename": "comments-in-case.tokens.json",
                  "line": 5,
                  "type": "Case",
                },
              ],
              "type": "Block",
            },
            "filename": "comments-in-case.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "comments-in-case.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test doctype.custom.tokens.json 1`] = `
Object {
  "filename": "doctype.custom.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "doctype.custom.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "custom stuff",
    },
  ],
  "type": "Block",
}
`;

exports[`test doctype.default.tokens.json 1`] = `
Object {
  "filename": "doctype.default.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "doctype.default.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "doctype.default.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "doctype.default.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "doctype.default.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "filename": "doctype.default.tokens.json",
                        "line": 4,
                        "type": "Text",
                        "val": "Title",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "doctype.default.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "h1",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "doctype.default.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "doctype.default.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test doctype.keyword.tokens.json 1`] = `
Object {
  "filename": "doctype.keyword.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "doctype.keyword.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "html",
    },
  ],
  "type": "Block",
}
`;

exports[`test each.else.tokens.json 1`] = `
Object {
  "filename": "each.else.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 2,
      "mustEscape": false,
      "type": "Code",
      "val": "var users = []",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "each.else.tokens.json",
        "line": 4,
        "nodes": Array [
          Object {
            "alternate": Object {
              "filename": "each.else.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 8,
                    "nodes": Array [
                      Object {
                        "filename": "each.else.tokens.json",
                        "line": 8,
                        "type": "Text",
                        "val": "no users!",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 8,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "block": Object {
              "filename": "each.else.tokens.json",
              "line": 6,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 6,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "each.else.tokens.json",
                        "isInline": true,
                        "line": 6,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "user.name",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 6,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "each.else.tokens.json",
            "key": null,
            "line": 5,
            "obj": "users",
            "type": "Each",
            "val": "user",
          },
        ],
        "type": "Block",
      },
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 4,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 11,
      "mustEscape": false,
      "type": "Code",
      "val": "var users = [{ name: \'tobi\', friends: [\'loki\'] }, { name: \'loki\' }]",
    },
    Object {
      "alternate": null,
      "consequent": Object {
        "filename": "each.else.tokens.json",
        "line": 14,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "each.else.tokens.json",
              "line": 14,
              "nodes": Array [
                Object {
                  "alternate": Object {
                    "filename": "each.else.tokens.json",
                    "line": 18,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "each.else.tokens.json",
                          "line": 18,
                          "nodes": Array [
                            Object {
                              "filename": "each.else.tokens.json",
                              "line": 18,
                              "type": "Text",
                              "val": "no users!",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "each.else.tokens.json",
                        "isInline": false,
                        "line": 18,
                        "name": "li",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 16,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "each.else.tokens.json",
                          "line": 16,
                          "nodes": Array [
                            Object {
                              "buffer": true,
                              "filename": "each.else.tokens.json",
                              "isInline": true,
                              "line": 16,
                              "mustEscape": true,
                              "type": "Code",
                              "val": "user.name",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "each.else.tokens.json",
                        "isInline": false,
                        "line": 16,
                        "name": "li",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "key": null,
                  "line": 15,
                  "obj": "users",
                  "type": "Each",
                  "val": "user",
                },
              ],
              "type": "Block",
            },
            "filename": "each.else.tokens.json",
            "isInline": false,
            "line": 14,
            "name": "ul",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "each.else.tokens.json",
      "line": 13,
      "test": "users",
      "type": "Conditional",
    },
    Object {
      "buffer": false,
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 20,
      "mustEscape": false,
      "type": "Code",
      "val": "var user = { name: \'tobi\', age: 10 }",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "each.else.tokens.json",
        "line": 22,
        "nodes": Array [
          Object {
            "alternate": Object {
              "filename": "each.else.tokens.json",
              "line": 26,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 26,
                    "nodes": Array [
                      Object {
                        "filename": "each.else.tokens.json",
                        "line": 26,
                        "type": "Text",
                        "val": "user has no details!",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 26,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "block": Object {
              "filename": "each.else.tokens.json",
              "line": 24,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 24,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "each.else.tokens.json",
                        "isInline": true,
                        "line": 24,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "key",
                      },
                      Object {
                        "filename": "each.else.tokens.json",
                        "line": 24,
                        "type": "Text",
                        "val": ": ",
                      },
                      Object {
                        "buffer": true,
                        "filename": "each.else.tokens.json",
                        "isInline": true,
                        "line": 24,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "val",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 24,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "each.else.tokens.json",
            "key": "key",
            "line": 23,
            "obj": "user",
            "type": "Each",
            "val": "val",
          },
        ],
        "type": "Block",
      },
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 22,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 28,
      "mustEscape": false,
      "type": "Code",
      "val": "var user = {}",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "each.else.tokens.json",
        "line": 30,
        "nodes": Array [
          Object {
            "alternate": Object {
              "filename": "each.else.tokens.json",
              "line": 34,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 34,
                    "nodes": Array [
                      Object {
                        "filename": "each.else.tokens.json",
                        "line": 34,
                        "type": "Text",
                        "val": "user has no details!",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 34,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "block": Object {
              "filename": "each.else.tokens.json",
              "line": 32,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 32,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "each.else.tokens.json",
                        "isInline": true,
                        "line": 32,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "key",
                      },
                      Object {
                        "filename": "each.else.tokens.json",
                        "line": 32,
                        "type": "Text",
                        "val": ": ",
                      },
                      Object {
                        "buffer": true,
                        "filename": "each.else.tokens.json",
                        "isInline": true,
                        "line": 32,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "val",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 32,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "each.else.tokens.json",
            "key": "key",
            "line": 31,
            "obj": "user",
            "type": "Each",
            "val": "prop",
          },
        ],
        "type": "Block",
      },
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 30,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "buffer": false,
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 36,
      "mustEscape": false,
      "type": "Code",
      "val": "var user = Object.create(null)",
    },
    Object {
      "buffer": false,
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 37,
      "mustEscape": false,
      "type": "Code",
      "val": "user.name = \'tobi\'",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "each.else.tokens.json",
        "line": 39,
        "nodes": Array [
          Object {
            "alternate": Object {
              "filename": "each.else.tokens.json",
              "line": 43,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 43,
                    "nodes": Array [
                      Object {
                        "filename": "each.else.tokens.json",
                        "line": 43,
                        "type": "Text",
                        "val": "user has no details!",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 43,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "block": Object {
              "filename": "each.else.tokens.json",
              "line": 41,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "each.else.tokens.json",
                    "line": 41,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "each.else.tokens.json",
                        "isInline": true,
                        "line": 41,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "key",
                      },
                      Object {
                        "filename": "each.else.tokens.json",
                        "line": 41,
                        "type": "Text",
                        "val": ": ",
                      },
                      Object {
                        "buffer": true,
                        "filename": "each.else.tokens.json",
                        "isInline": true,
                        "line": 41,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "val",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "each.else.tokens.json",
                  "isInline": false,
                  "line": 41,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "each.else.tokens.json",
            "key": "key",
            "line": 40,
            "obj": "user",
            "type": "Each",
            "val": "val",
          },
        ],
        "type": "Block",
      },
      "filename": "each.else.tokens.json",
      "isInline": false,
      "line": 39,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test escape-chars.tokens.json 1`] = `
Object {
  "filename": "escape-chars.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "escape-chars.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "var re = /\\d+/;",
          },
        ],
        "type": "Block",
      },
      "filename": "escape-chars.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test escape-test.tokens.json 1`] = `
Object {
  "filename": "escape-test.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "escape-test.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "html",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "escape-test.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "escape-test.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "escape-test.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "filename": "escape-test.tokens.json",
                        "line": 4,
                        "type": "Text",
                        "val": "escape-test",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "escape-test.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "title",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "escape-test.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "head",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "escape-test.tokens.json",
              "line": 5,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "escape-test.tokens.json",
                    "line": 6,
                    "nodes": Array [
                      Object {
                        "buffer": false,
                        "filename": "escape-test.tokens.json",
                        "isInline": false,
                        "line": 7,
                        "mustEscape": false,
                        "type": "Code",
                        "val": "var txt = \'<param name=\"flashvars\" value=\"a=&quot;value_a&quot;&b=&quot;value_b&quot;&c=3\"/>\'",
                      },
                      Object {
                        "buffer": true,
                        "filename": "escape-test.tokens.json",
                        "isInline": true,
                        "line": 8,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "txt",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "escape-test.tokens.json",
                  "isInline": false,
                  "line": 6,
                  "name": "textarea",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "escape-test.tokens.json",
            "isInline": false,
            "line": 5,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "escape-test.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test escaping-class-attribute.tokens.json 1`] = `
Object {
  "filename": "escaping-class-attribute.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "attr",
          "val": "\"<%= bar %>\"",
        },
      ],
      "block": Object {
        "filename": "escaping-class-attribute.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "escaping-class-attribute.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\"<%= bar %>\"",
        },
      ],
      "block": Object {
        "filename": "escaping-class-attribute.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "escaping-class-attribute.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "attr",
          "val": "\"<%= bar %>\"",
        },
      ],
      "block": Object {
        "filename": "escaping-class-attribute.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "escaping-class-attribute.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\"<%= bar %>\"",
        },
      ],
      "block": Object {
        "filename": "escaping-class-attribute.tokens.json",
        "line": 4,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "escaping-class-attribute.tokens.json",
      "isInline": false,
      "line": 4,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\"<%= bar %> lol rofl\"",
        },
      ],
      "block": Object {
        "filename": "escaping-class-attribute.tokens.json",
        "line": 5,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "escaping-class-attribute.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\"<%= bar %> lol rofl <%= lmao %>\"",
        },
      ],
      "block": Object {
        "filename": "escaping-class-attribute.tokens.json",
        "line": 6,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "escaping-class-attribute.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filter-in-include.tokens.json 1`] = `
Object {
  "filename": "filter-in-include.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "filter-in-include.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "filter-in-include.tokens.json",
        "line": 1,
        "path": "./auxiliary/filter-in-include.pug",
        "type": "FileReference",
      },
      "filename": "filter-in-include.tokens.json",
      "line": 1,
      "type": "Include",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.coffeescript.tokens.json 1`] = `
Object {
  "filename": "filters.coffeescript.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'text/javascript\'",
        },
      ],
      "block": Object {
        "filename": "filters.coffeescript.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attrs": Array [],
            "block": Object {
              "filename": "filters.coffeescript.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "line": 3,
                  "type": "Text",
                  "val": "regexp = /\\n/",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.coffeescript.tokens.json",
            "line": 2,
            "name": "coffee-script",
            "type": "Filter",
          },
          Object {
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "minify",
                "val": "true",
              },
            ],
            "block": Object {
              "filename": "filters.coffeescript.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "line": 5,
                  "type": "Text",
                  "val": "math =",
                },
                Object {
                  "line": 6,
                  "type": "Text",
                  "val": "
",
                },
                Object {
                  "line": 6,
                  "type": "Text",
                  "val": "  square: (value) -> value * value",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.coffeescript.tokens.json",
            "line": 4,
            "name": "coffee-script",
            "type": "Filter",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.coffeescript.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.custom.tokens.json 1`] = `
Object {
  "filename": "filters.custom.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.custom.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "filters.custom.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "opt",
                      "val": "\'val\'",
                    },
                    Object {
                      "mustEscape": true,
                      "name": "num",
                      "val": "2",
                    },
                  ],
                  "block": Object {
                    "filename": "filters.custom.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "line": 4,
                        "type": "Text",
                        "val": "Line 1",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "Line 2",
                      },
                      Object {
                        "line": 6,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 6,
                        "type": "Text",
                        "val": "",
                      },
                      Object {
                        "line": 7,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 7,
                        "type": "Text",
                        "val": "Line 4",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.custom.tokens.json",
                  "line": 3,
                  "name": "custom",
                  "type": "Filter",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.custom.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.custom.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.include.custom.tokens.json 1`] = `
Object {
  "filename": "filters.include.custom.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.include.custom.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "filters.include.custom.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "filters.include.custom.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "file": Object {
                          "filename": "filters.include.custom.tokens.json",
                          "line": 4,
                          "path": "filters.include.custom.pug",
                          "type": "FileReference",
                        },
                        "filename": "filters.include.custom.tokens.json",
                        "filters": Array [
                          Object {
                            "attrs": Array [
                              Object {
                                "mustEscape": true,
                                "name": "opt",
                                "val": "\'val\'",
                              },
                              Object {
                                "mustEscape": true,
                                "name": "num",
                                "val": "2",
                              },
                            ],
                            "filename": "filters.include.custom.tokens.json",
                            "line": 4,
                            "name": "custom",
                            "type": "IncludeFilter",
                          },
                        ],
                        "line": 4,
                        "type": "RawInclude",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.include.custom.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "pre",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.include.custom.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.include.custom.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.include.tokens.json 1`] = `
Object {
  "filename": "filters.include.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.include.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "filters.include.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "file": Object {
                    "filename": "filters.include.tokens.json",
                    "line": 3,
                    "path": "some.md",
                    "type": "FileReference",
                  },
                  "filename": "filters.include.tokens.json",
                  "filters": Array [
                    Object {
                      "attrs": Array [],
                      "filename": "filters.include.tokens.json",
                      "line": 3,
                      "name": "markdown-it",
                      "type": "IncludeFilter",
                    },
                  ],
                  "line": 3,
                  "type": "RawInclude",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "filters.include.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "file": Object {
                          "filename": "filters.include.tokens.json",
                          "line": 5,
                          "path": "include-filter-coffee.coffee",
                          "type": "FileReference",
                        },
                        "filename": "filters.include.tokens.json",
                        "filters": Array [
                          Object {
                            "attrs": Array [
                              Object {
                                "mustEscape": true,
                                "name": "minify",
                                "val": "true",
                              },
                            ],
                            "filename": "filters.include.tokens.json",
                            "line": 5,
                            "name": "coffee-script",
                            "type": "IncludeFilter",
                          },
                        ],
                        "line": 5,
                        "type": "RawInclude",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.include.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "script",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "filters.include.tokens.json",
                    "line": 6,
                    "nodes": Array [
                      Object {
                        "file": Object {
                          "filename": "filters.include.tokens.json",
                          "line": 7,
                          "path": "include-filter-coffee.coffee",
                          "type": "FileReference",
                        },
                        "filename": "filters.include.tokens.json",
                        "filters": Array [
                          Object {
                            "attrs": Array [
                              Object {
                                "mustEscape": true,
                                "name": "minify",
                                "val": "false",
                              },
                            ],
                            "filename": "filters.include.tokens.json",
                            "line": 7,
                            "name": "coffee-script",
                            "type": "IncludeFilter",
                          },
                        ],
                        "line": 7,
                        "type": "RawInclude",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.include.tokens.json",
                  "isInline": false,
                  "line": 6,
                  "name": "script",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.include.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.include.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.inline.tokens.json 1`] = `
Object {
  "filename": "filters.inline.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.inline.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "filters.inline.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "before ",
          },
          Object {
            "attrs": Array [],
            "block": Object {
              "filename": "filters.inline.tokens.json",
              "line": 1,
              "nodes": Array [
                Object {
                  "filename": "filters.inline.tokens.json",
                  "line": 1,
                  "type": "Text",
                  "val": "inside",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.inline.tokens.json",
            "line": 1,
            "name": "cdata",
            "type": "Filter",
          },
          Object {
            "filename": "filters.inline.tokens.json",
            "line": 1,
            "type": "Text",
            "val": " after",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.inline.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.less.tokens.json 1`] = `
Object {
  "filename": "filters.less.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.less.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "filters.less.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "type",
                      "val": "\"text/css\"",
                    },
                  ],
                  "block": Object {
                    "filename": "filters.less.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "attrs": Array [],
                        "block": Object {
                          "filename": "filters.less.tokens.json",
                          "line": 4,
                          "nodes": Array [
                            Object {
                              "line": 5,
                              "type": "Text",
                              "val": "@pad: 15px;",
                            },
                            Object {
                              "line": 6,
                              "type": "Text",
                              "val": "
",
                            },
                            Object {
                              "line": 6,
                              "type": "Text",
                              "val": "body {",
                            },
                            Object {
                              "line": 7,
                              "type": "Text",
                              "val": "
",
                            },
                            Object {
                              "line": 7,
                              "type": "Text",
                              "val": "  padding: @pad;",
                            },
                            Object {
                              "line": 8,
                              "type": "Text",
                              "val": "
",
                            },
                            Object {
                              "line": 8,
                              "type": "Text",
                              "val": "}",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "filters.less.tokens.json",
                        "line": 4,
                        "name": "less",
                        "type": "Filter",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.less.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "style",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.less.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "head",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.less.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.markdown.tokens.json 1`] = `
Object {
  "filename": "filters.markdown.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.markdown.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "filters.markdown.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attrs": Array [],
                  "block": Object {
                    "filename": "filters.markdown.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "line": 4,
                        "type": "Text",
                        "val": "This is _some_ awesome **markdown**",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "whoop.",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.markdown.tokens.json",
                  "line": 3,
                  "name": "markdown-it",
                  "type": "Filter",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.markdown.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.markdown.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.nested.tokens.json 1`] = `
Object {
  "filename": "filters.nested.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.nested.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attrs": Array [],
            "block": Object {
              "filename": "filters.nested.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attrs": Array [],
                  "block": Object {
                    "filename": "filters.nested.tokens.json",
                    "line": 2,
                    "nodes": Array [
                      Object {
                        "line": 3,
                        "type": "Text",
                        "val": "(function() {",
                      },
                      Object {
                        "line": 4,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 4,
                        "type": "Text",
                        "val": "  console.log(\'test\')",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "})()",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.nested.tokens.json",
                  "line": 2,
                  "name": "uglify-js",
                  "type": "Filter",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.nested.tokens.json",
            "line": 2,
            "name": "cdata",
            "type": "Filter",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.nested.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.nested.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "attrs": Array [],
            "block": Object {
              "filename": "filters.nested.tokens.json",
              "line": 7,
              "nodes": Array [
                Object {
                  "attrs": Array [],
                  "block": Object {
                    "filename": "filters.nested.tokens.json",
                    "line": 7,
                    "nodes": Array [
                      Object {
                        "attrs": Array [],
                        "block": Object {
                          "filename": "filters.nested.tokens.json",
                          "line": 7,
                          "nodes": Array [
                            Object {
                              "line": 8,
                              "type": "Text",
                              "val": "(->",
                            },
                            Object {
                              "line": 9,
                              "type": "Text",
                              "val": "
",
                            },
                            Object {
                              "line": 9,
                              "type": "Text",
                              "val": "  console.log \'test\'",
                            },
                            Object {
                              "line": 10,
                              "type": "Text",
                              "val": "
",
                            },
                            Object {
                              "line": 10,
                              "type": "Text",
                              "val": ")()",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "filters.nested.tokens.json",
                        "line": 7,
                        "name": "coffee-script",
                        "type": "Filter",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.nested.tokens.json",
                  "line": 7,
                  "name": "uglify-js",
                  "type": "Filter",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.nested.tokens.json",
            "line": 7,
            "name": "cdata",
            "type": "Filter",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.nested.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters.stylus.tokens.json 1`] = `
Object {
  "filename": "filters.stylus.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters.stylus.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "filters.stylus.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "type",
                      "val": "\"text/css\"",
                    },
                  ],
                  "block": Object {
                    "filename": "filters.stylus.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "attrs": Array [],
                        "block": Object {
                          "filename": "filters.stylus.tokens.json",
                          "line": 4,
                          "nodes": Array [
                            Object {
                              "line": 5,
                              "type": "Text",
                              "val": "body",
                            },
                            Object {
                              "line": 6,
                              "type": "Text",
                              "val": "
",
                            },
                            Object {
                              "line": 6,
                              "type": "Text",
                              "val": "  padding: 50px",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "filters.stylus.tokens.json",
                        "line": 4,
                        "name": "stylus",
                        "type": "Filter",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters.stylus.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "style",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "filters.stylus.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "head",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "filters.stylus.tokens.json",
              "line": 7,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "filters.stylus.tokens.json",
            "isInline": false,
            "line": 7,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "filters.stylus.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test filters-empty.tokens.json 1`] = `
Object {
  "filename": "filters-empty.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "filters-empty.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var users = [{ name: \'tobi\', age: 2 }]",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "filters-empty.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "filters-empty.tokens.json",
              "line": 5,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "age",
                      "val": "user.age",
                    },
                  ],
                  "block": Object {
                    "filename": "filters-empty.tokens.json",
                    "line": 5,
                    "nodes": Array [
                      Object {
                        "attrs": Array [],
                        "block": Object {
                          "filename": "filters-empty.tokens.json",
                          "line": 6,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "filters-empty.tokens.json",
                        "line": 6,
                        "name": "cdata",
                        "type": "Filter",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "filters-empty.tokens.json",
                  "isInline": false,
                  "line": 5,
                  "name": "fb:user",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "filters-empty.tokens.json",
            "key": null,
            "line": 4,
            "obj": "users",
            "type": "Each",
            "val": "user",
          },
        ],
        "type": "Block",
      },
      "filename": "filters-empty.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "fb:users",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test html.tokens.json 1`] = `
Object {
  "filename": "html.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "html.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var version = 1449104952939",
    },
    Object {
      "filename": "html.tokens.json",
      "isHtml": true,
      "line": 3,
      "type": "Text",
      "val": "<ul>
<li>foo</li>
<li>bar</li>
<li>baz</li>
</ul>
<!--build:js /js/app.min.js?v=",
    },
    Object {
      "buffer": true,
      "filename": "html.tokens.json",
      "isInline": true,
      "line": 9,
      "mustEscape": true,
      "type": "Code",
      "val": "version",
    },
    Object {
      "filename": "html.tokens.json",
      "isHtml": true,
      "line": 9,
      "type": "Text",
      "val": "-->
<!--endbuild-->",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "html.tokens.json",
        "line": 12,
        "nodes": Array [
          Object {
            "filename": "html.tokens.json",
            "line": 12,
            "type": "Text",
            "val": "You can <em>embed</em> html as well.",
          },
        ],
        "type": "Block",
      },
      "filename": "html.tokens.json",
      "isInline": false,
      "line": 12,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "html.tokens.json",
        "line": 13,
        "nodes": Array [
          Object {
            "filename": "html.tokens.json",
            "line": 13,
            "nodes": Array [
              Object {
                "filename": "html.tokens.json",
                "isHtml": true,
                "line": 13,
                "type": "Text",
                "val": "<strong>Even</strong> as the body of a block expansion.",
              },
            ],
            "type": "Block",
          },
        ],
        "type": "Block",
      },
      "filename": "html.tokens.json",
      "isInline": false,
      "line": 13,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test html5.tokens.json 1`] = `
Object {
  "filename": "html5.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "html5.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "html",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'checkbox\'",
        },
        Object {
          "mustEscape": false,
          "name": "checked",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "html5.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "html5.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "input",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'checkbox\'",
        },
        Object {
          "mustEscape": true,
          "name": "checked",
          "val": "true",
        },
      ],
      "block": Object {
        "filename": "html5.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "html5.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "input",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'checkbox\'",
        },
        Object {
          "mustEscape": true,
          "name": "checked",
          "val": "false",
        },
      ],
      "block": Object {
        "filename": "html5.tokens.json",
        "line": 4,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "html5.tokens.json",
      "isInline": false,
      "line": 4,
      "name": "input",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test include.script.tokens.json 1`] = `
Object {
  "filename": "include.script.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "id",
          "val": "\'pet-template\'",
        },
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'text/x-template\'",
        },
      ],
      "block": Object {
        "filename": "include.script.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "include.script.tokens.json",
              "line": 2,
              "nodes": Array [],
              "type": "Block",
            },
            "file": Object {
              "filename": "include.script.tokens.json",
              "line": 2,
              "path": "auxiliary/pet.pug",
              "type": "FileReference",
            },
            "filename": "include.script.tokens.json",
            "line": 2,
            "type": "Include",
          },
        ],
        "type": "Block",
      },
      "filename": "include.script.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test include.yield.nested.tokens.json 1`] = `
Object {
  "filename": "include.yield.nested.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "include.yield.nested.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "include.yield.nested.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "filename": "include.yield.nested.tokens.json",
                  "line": 3,
                  "type": "Text",
                  "val": "some content",
                },
              ],
              "type": "Block",
            },
            "filename": "include.yield.nested.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "include.yield.nested.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "filename": "include.yield.nested.tokens.json",
                  "line": 4,
                  "type": "Text",
                  "val": "and some more",
                },
              ],
              "type": "Block",
            },
            "filename": "include.yield.nested.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "file": Object {
        "filename": "include.yield.nested.tokens.json",
        "line": 2,
        "path": "auxiliary/yield-nested.pug",
        "type": "FileReference",
      },
      "filename": "include.yield.nested.tokens.json",
      "line": 2,
      "type": "Include",
    },
  ],
  "type": "Block",
}
`;

exports[`test include-extends-from-root.tokens.json 1`] = `
Object {
  "filename": "include-extends-from-root.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "include-extends-from-root.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "include-extends-from-root.tokens.json",
        "line": 1,
        "path": "/auxiliary/extends-from-root.pug",
        "type": "FileReference",
      },
      "filename": "include-extends-from-root.tokens.json",
      "line": 1,
      "type": "Include",
    },
  ],
  "type": "Block",
}
`;

exports[`test include-extends-of-common-template.tokens.json 1`] = `
Object {
  "filename": "include-extends-of-common-template.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "include-extends-of-common-template.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "include-extends-of-common-template.tokens.json",
        "line": 1,
        "path": "auxiliary/extends-empty-block-1.pug",
        "type": "FileReference",
      },
      "filename": "include-extends-of-common-template.tokens.json",
      "line": 1,
      "type": "Include",
    },
    Object {
      "block": Object {
        "filename": "include-extends-of-common-template.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "include-extends-of-common-template.tokens.json",
        "line": 2,
        "path": "auxiliary/extends-empty-block-2.pug",
        "type": "FileReference",
      },
      "filename": "include-extends-of-common-template.tokens.json",
      "line": 2,
      "type": "Include",
    },
  ],
  "type": "Block",
}
`;

exports[`test include-extends-relative.tokens.json 1`] = `
Object {
  "filename": "include-extends-relative.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "include-extends-relative.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "include-extends-relative.tokens.json",
        "line": 1,
        "path": "../cases/auxiliary/extends-relative.pug",
        "type": "FileReference",
      },
      "filename": "include-extends-relative.tokens.json",
      "line": 1,
      "type": "Include",
    },
  ],
  "type": "Block",
}
`;

exports[`test include-only-text.tokens.json 1`] = `
Object {
  "filename": "include-only-text.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "include-only-text.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "include-only-text.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "include-only-text.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "block": Object {
                          "filename": "include-only-text.tokens.json",
                          "line": 5,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [],
                              "block": Object {
                                "filename": "include-only-text.tokens.json",
                                "line": 5,
                                "nodes": Array [
                                  Object {
                                    "filename": "include-only-text.tokens.json",
                                    "line": 5,
                                    "type": "Text",
                                    "val": "hello world",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "include-only-text.tokens.json",
                              "isInline": true,
                              "line": 5,
                              "name": "em",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "file": Object {
                          "filename": "include-only-text.tokens.json",
                          "line": 4,
                          "path": "include-only-text-body.pug",
                          "type": "FileReference",
                        },
                        "filename": "include-only-text.tokens.json",
                        "line": 4,
                        "type": "Include",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "include-only-text.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "include-only-text.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "include-only-text.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test include-only-text-body.tokens.json 1`] = `
Object {
  "filename": "include-only-text-body.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "include-only-text-body.tokens.json",
      "line": 1,
      "type": "Text",
      "val": "The message is \"",
    },
    Object {
      "filename": "include-only-text-body.tokens.json",
      "line": 2,
      "type": "YieldBlock",
    },
    Object {
      "filename": "include-only-text-body.tokens.json",
      "line": 3,
      "type": "Text",
      "val": "\"",
    },
  ],
  "type": "Block",
}
`;

exports[`test include-with-text.tokens.json 1`] = `
Object {
  "filename": "include-with-text.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "include-with-text.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "include-with-text.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "src",
                      "val": "\'/caustic.js\'",
                    },
                  ],
                  "block": Object {
                    "filename": "include-with-text.tokens.json",
                    "line": 3,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "include-with-text.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "script",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "src",
                      "val": "\'/app.js\'",
                    },
                  ],
                  "block": Object {
                    "filename": "include-with-text.tokens.json",
                    "line": 4,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "include-with-text.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "script",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "file": Object {
              "filename": "include-with-text.tokens.json",
              "line": 2,
              "path": "include-with-text-head.pug",
              "type": "FileReference",
            },
            "filename": "include-with-text.tokens.json",
            "line": 2,
            "type": "Include",
          },
        ],
        "type": "Block",
      },
      "filename": "include-with-text.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test include-with-text-head.tokens.json 1`] = `
Object {
  "filename": "include-with-text-head.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "include-with-text-head.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "type",
                "val": "\'text/javascript\'",
              },
            ],
            "block": Object {
              "filename": "include-with-text-head.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "line": 3,
                  "type": "Text",
                  "val": "alert(\'hello world\');",
                },
              ],
              "type": "Block",
            },
            "filename": "include-with-text-head.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "script",
            "selfClosing": false,
            "textOnly": true,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "include-with-text-head.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "head",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test includes.tokens.json 1`] = `
Object {
  "filename": "includes.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "includes.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "includes.tokens.json",
        "line": 2,
        "path": "auxiliary/mixins.pug",
        "type": "FileReference",
      },
      "filename": "includes.tokens.json",
      "line": 2,
      "type": "Include",
    },
    Object {
      "args": null,
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": null,
      "call": true,
      "filename": "includes.tokens.json",
      "line": 4,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "includes.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "file": Object {
              "filename": "includes.tokens.json",
              "line": 7,
              "path": "auxiliary/smile.html",
              "type": "FileReference",
            },
            "filename": "includes.tokens.json",
            "filters": Array [],
            "line": 7,
            "type": "RawInclude",
          },
          Object {
            "file": Object {
              "filename": "includes.tokens.json",
              "line": 8,
              "path": "auxiliary/escapes.html",
              "type": "FileReference",
            },
            "filename": "includes.tokens.json",
            "filters": Array [],
            "line": 8,
            "type": "RawInclude",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "type",
                "val": "\"text/javascript\"",
              },
            ],
            "block": Object {
              "filename": "includes.tokens.json",
              "line": 9,
              "nodes": Array [
                Object {
                  "file": Object {
                    "filename": "includes.tokens.json",
                    "line": 10,
                    "path": "auxiliary/includable.js",
                    "type": "FileReference",
                  },
                  "filename": "includes.tokens.json",
                  "filters": Array [
                    Object {
                      "attrs": Array [],
                      "filename": "includes.tokens.json",
                      "line": 10,
                      "name": "verbatim",
                      "type": "IncludeFilter",
                    },
                  ],
                  "line": 10,
                  "type": "RawInclude",
                },
              ],
              "type": "Block",
            },
            "filename": "includes.tokens.json",
            "isInline": false,
            "line": 9,
            "name": "script",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "includes.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "body",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test includes-with-ext-js.tokens.json 1`] = `
Object {
  "filename": "includes-with-ext-js.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "includes-with-ext-js.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "includes-with-ext-js.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "file": Object {
                    "filename": "includes-with-ext-js.tokens.json",
                    "line": 3,
                    "path": "javascript-new-lines.js",
                    "type": "FileReference",
                  },
                  "filename": "includes-with-ext-js.tokens.json",
                  "filters": Array [],
                  "line": 3,
                  "type": "RawInclude",
                },
              ],
              "type": "Block",
            },
            "filename": "includes-with-ext-js.tokens.json",
            "isInline": true,
            "line": 2,
            "name": "code",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "includes-with-ext-js.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "pre",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.alert-dialog.tokens.json 1`] = `
Object {
  "filename": "inheritance.alert-dialog.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.alert-dialog.tokens.json",
        "line": 2,
        "path": "auxiliary/dialog.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.alert-dialog.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "inheritance.alert-dialog.tokens.json",
      "line": 4,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.alert-dialog.tokens.json",
            "line": 5,
            "nodes": Array [
              Object {
                "filename": "inheritance.alert-dialog.tokens.json",
                "line": 5,
                "type": "Text",
                "val": "Alert!",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.alert-dialog.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "h1",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.alert-dialog.tokens.json",
            "line": 6,
            "nodes": Array [
              Object {
                "filename": "inheritance.alert-dialog.tokens.json",
                "line": 6,
                "type": "Text",
                "val": "I\'m an alert!",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.alert-dialog.tokens.json",
          "isInline": false,
          "line": 6,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.defaults.tokens.json 1`] = `
Object {
  "filename": "inheritance.defaults.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "inheritance.defaults.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "inheritance.defaults.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "filename": "inheritance.defaults.tokens.json",
                  "line": 3,
                  "mode": "replace",
                  "name": "head",
                  "nodes": Array [
                    Object {
                      "attributeBlocks": Array [],
                      "attrs": Array [
                        Object {
                          "mustEscape": true,
                          "name": "src",
                          "val": "\'jquery.js\'",
                        },
                      ],
                      "block": Object {
                        "filename": "inheritance.defaults.tokens.json",
                        "line": 4,
                        "nodes": Array [],
                        "type": "Block",
                      },
                      "filename": "inheritance.defaults.tokens.json",
                      "isInline": false,
                      "line": 4,
                      "name": "script",
                      "selfClosing": false,
                      "type": "Tag",
                    },
                    Object {
                      "attributeBlocks": Array [],
                      "attrs": Array [
                        Object {
                          "mustEscape": true,
                          "name": "src",
                          "val": "\'keymaster.js\'",
                        },
                      ],
                      "block": Object {
                        "filename": "inheritance.defaults.tokens.json",
                        "line": 5,
                        "nodes": Array [],
                        "type": "Block",
                      },
                      "filename": "inheritance.defaults.tokens.json",
                      "isInline": false,
                      "line": 5,
                      "name": "script",
                      "selfClosing": false,
                      "type": "Tag",
                    },
                    Object {
                      "attributeBlocks": Array [],
                      "attrs": Array [
                        Object {
                          "mustEscape": true,
                          "name": "src",
                          "val": "\'caustic.js\'",
                        },
                      ],
                      "block": Object {
                        "filename": "inheritance.defaults.tokens.json",
                        "line": 6,
                        "nodes": Array [],
                        "type": "Block",
                      },
                      "filename": "inheritance.defaults.tokens.json",
                      "isInline": false,
                      "line": 6,
                      "name": "script",
                      "selfClosing": false,
                      "type": "Tag",
                    },
                  ],
                  "type": "NamedBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "inheritance.defaults.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "head",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "inheritance.defaults.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.extend.include.tokens.json 1`] = `
Object {
  "filename": "inheritance.extend.include.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.extend.include.tokens.json",
        "line": 2,
        "path": "auxiliary/layout.include.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.extend.include.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "inheritance.extend.include.tokens.json",
      "line": 4,
      "mode": "replace",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'jquery.js\'",
            },
          ],
          "block": Object {
            "filename": "inheritance.extend.include.tokens.json",
            "line": 5,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "inheritance.extend.include.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "inheritance.extend.include.tokens.json",
      "line": 7,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.include.tokens.json",
            "line": 8,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.include.tokens.json",
                "line": 8,
                "type": "Text",
                "val": "Page",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.include.tokens.json",
          "isInline": false,
          "line": 8,
          "name": "h2",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.include.tokens.json",
            "line": 9,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.include.tokens.json",
                "line": 9,
                "type": "Text",
                "val": "Some content",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.include.tokens.json",
          "isInline": false,
          "line": 9,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "inheritance.extend.include.tokens.json",
      "line": 11,
      "mode": "replace",
      "name": "window-content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.include.tokens.json",
            "line": 12,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.include.tokens.json",
                "line": 12,
                "type": "Text",
                "val": "Awesome",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.include.tokens.json",
          "isInline": false,
          "line": 12,
          "name": "h2",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.include.tokens.json",
            "line": 13,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.include.tokens.json",
                "line": 13,
                "type": "Text",
                "val": "Now we can extend included blocks!",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.include.tokens.json",
          "isInline": false,
          "line": 13,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.extend.mixins.block.tokens.json 1`] = `
Object {
  "filename": "inheritance.extend.mixins.block.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.extend.mixins.block.tokens.json",
        "line": 1,
        "path": "auxiliary/inheritance.extend.mixin.block.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.extend.mixins.block.tokens.json",
      "line": 1,
      "type": "Extends",
    },
    Object {
      "filename": "inheritance.extend.mixins.block.tokens.json",
      "line": 3,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.mixins.block.tokens.json",
            "line": 4,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.mixins.block.tokens.json",
                "line": 4,
                "type": "Text",
                "val": "Hello World!",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.mixins.block.tokens.json",
          "isInline": false,
          "line": 4,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.extend.mixins.tokens.json 1`] = `
Object {
  "filename": "inheritance.extend.mixins.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.extend.mixins.tokens.json",
        "line": 2,
        "path": "auxiliary/layout.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.extend.mixins.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "args": "title",
      "block": Object {
        "filename": "inheritance.extend.mixins.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "alternate": null,
            "consequent": Object {
              "filename": "inheritance.extend.mixins.tokens.json",
              "line": 6,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "inheritance.extend.mixins.tokens.json",
                    "line": 6,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "inheritance.extend.mixins.tokens.json",
                        "isInline": true,
                        "line": 6,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "title",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "inheritance.extend.mixins.tokens.json",
                  "isInline": false,
                  "line": 6,
                  "name": "h1",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "inheritance.extend.mixins.tokens.json",
            "line": 5,
            "test": "title",
            "type": "Conditional",
          },
          Object {
            "filename": "inheritance.extend.mixins.tokens.json",
            "line": 7,
            "type": "MixinBlock",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "inheritance.extend.mixins.tokens.json",
      "line": 4,
      "name": "article",
      "type": "Mixin",
    },
    Object {
      "filename": "inheritance.extend.mixins.tokens.json",
      "line": 9,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "args": "\"The meaning of life\"",
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.mixins.tokens.json",
            "line": 10,
            "nodes": Array [
              Object {
                "attributeBlocks": Array [],
                "attrs": Array [],
                "block": Object {
                  "filename": "inheritance.extend.mixins.tokens.json",
                  "line": 11,
                  "nodes": Array [
                    Object {
                      "filename": "inheritance.extend.mixins.tokens.json",
                      "line": 11,
                      "type": "Text",
                      "val": "Foo bar baz!",
                    },
                  ],
                  "type": "Block",
                },
                "filename": "inheritance.extend.mixins.tokens.json",
                "isInline": false,
                "line": 11,
                "name": "p",
                "selfClosing": false,
                "type": "Tag",
              },
            ],
            "type": "Block",
          },
          "call": true,
          "filename": "inheritance.extend.mixins.tokens.json",
          "line": 10,
          "name": "article",
          "type": "Mixin",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.extend.recursive.tokens.json 1`] = `
Object {
  "filename": "inheritance.extend.recursive.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.extend.recursive.tokens.json",
        "line": 1,
        "path": "/auxiliary/inheritance.extend.recursive-parent.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.extend.recursive.tokens.json",
      "line": 1,
      "type": "Extends",
    },
    Object {
      "filename": "inheritance.extend.recursive.tokens.json",
      "line": 3,
      "mode": "replace",
      "name": "parent",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.recursive.tokens.json",
            "line": 4,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.recursive.tokens.json",
                "line": 4,
                "type": "Text",
                "val": "child",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.recursive.tokens.json",
          "isInline": false,
          "line": 4,
          "name": "h4",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.extend.tokens.json 1`] = `
Object {
  "filename": "inheritance.extend.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.extend.tokens.json",
        "line": 2,
        "path": "auxiliary/layout.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.extend.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "inheritance.extend.tokens.json",
      "line": 4,
      "mode": "replace",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'jquery.js\'",
            },
          ],
          "block": Object {
            "filename": "inheritance.extend.tokens.json",
            "line": 5,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "inheritance.extend.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "inheritance.extend.tokens.json",
      "line": 7,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.tokens.json",
            "line": 8,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.tokens.json",
                "line": 8,
                "type": "Text",
                "val": "Page",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.tokens.json",
          "isInline": false,
          "line": 8,
          "name": "h2",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.tokens.json",
            "line": 9,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.tokens.json",
                "line": 9,
                "type": "Text",
                "val": "Some content",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.tokens.json",
          "isInline": false,
          "line": 9,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.extend.whitespace.tokens.json 1`] = `
Object {
  "filename": "inheritance.extend.whitespace.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.extend.whitespace.tokens.json",
        "line": 2,
        "path": "auxiliary/layout.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.extend.whitespace.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "inheritance.extend.whitespace.tokens.json",
      "line": 4,
      "mode": "replace",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'jquery.js\'",
            },
          ],
          "block": Object {
            "filename": "inheritance.extend.whitespace.tokens.json",
            "line": 6,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "inheritance.extend.whitespace.tokens.json",
          "isInline": false,
          "line": 6,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "inheritance.extend.whitespace.tokens.json",
      "line": 8,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.whitespace.tokens.json",
            "line": 12,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.whitespace.tokens.json",
                "line": 12,
                "type": "Text",
                "val": "Page",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.whitespace.tokens.json",
          "isInline": false,
          "line": 12,
          "name": "h2",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.extend.whitespace.tokens.json",
            "line": 13,
            "nodes": Array [
              Object {
                "filename": "inheritance.extend.whitespace.tokens.json",
                "line": 13,
                "type": "Text",
                "val": "Some content",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.extend.whitespace.tokens.json",
          "isInline": false,
          "line": 13,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inheritance.tokens.json 1`] = `
Object {
  "filename": "inheritance.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "inheritance.tokens.json",
        "line": 2,
        "path": "auxiliary/layout.pug",
        "type": "FileReference",
      },
      "filename": "inheritance.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "inheritance.tokens.json",
      "line": 4,
      "mode": "replace",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'jquery.js\'",
            },
          ],
          "block": Object {
            "filename": "inheritance.tokens.json",
            "line": 5,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "inheritance.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "inheritance.tokens.json",
      "line": 7,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.tokens.json",
            "line": 8,
            "nodes": Array [
              Object {
                "filename": "inheritance.tokens.json",
                "line": 8,
                "type": "Text",
                "val": "Page",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.tokens.json",
          "isInline": false,
          "line": 8,
          "name": "h2",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [],
          "block": Object {
            "filename": "inheritance.tokens.json",
            "line": 9,
            "nodes": Array [
              Object {
                "filename": "inheritance.tokens.json",
                "line": 9,
                "type": "Text",
                "val": "Some content",
              },
            ],
            "type": "Block",
          },
          "filename": "inheritance.tokens.json",
          "isInline": false,
          "line": 9,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test inline-block-comment.tokens.json 1`] = `
Object {
  "filename": "inline-block-comment.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "inline-block-comment.tokens.json",
      "line": 1,
      "mode": "replace",
      "name": "content",
      "nodes": Array [],
      "type": "NamedBlock",
    },
    Object {
      "buffer": true,
      "filename": "inline-block-comment.tokens.json",
      "line": 1,
      "type": "Comment",
      "val": " Main content goes here",
    },
    Object {
      "filename": "inline-block-comment.tokens.json",
      "line": 2,
      "mode": "append",
      "name": "content",
      "nodes": Array [],
      "type": "NamedBlock",
    },
    Object {
      "buffer": true,
      "filename": "inline-block-comment.tokens.json",
      "line": 2,
      "type": "Comment",
      "val": " adding something to content",
    },
    Object {
      "filename": "inline-block-comment.tokens.json",
      "line": 3,
      "mode": "prepend",
      "name": "content",
      "nodes": Array [],
      "type": "NamedBlock",
    },
    Object {
      "buffer": true,
      "filename": "inline-block-comment.tokens.json",
      "line": 3,
      "type": "Comment",
      "val": " adding something to other end of content",
    },
  ],
  "type": "Block",
}
`;

exports[`test inline-tag.tokens.json 1`] = `
Object {
  "filename": "inline-tag.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "inline-tag.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "inline-tag.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "bing ",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "inline-tag.tokens.json",
              "line": 1,
              "nodes": Array [
                Object {
                  "filename": "inline-tag.tokens.json",
                  "line": 1,
                  "type": "Text",
                  "val": "foo",
                },
              ],
              "type": "Block",
            },
            "filename": "inline-tag.tokens.json",
            "isInline": true,
            "line": 1,
            "name": "strong",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "filename": "inline-tag.tokens.json",
            "line": 1,
            "type": "Text",
            "val": " bong",
          },
        ],
        "type": "Block",
      },
      "filename": "inline-tag.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "inline-tag.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "line": 4,
            "type": "Text",
            "val": "bing",
          },
          Object {
            "line": 5,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 5,
            "type": "Text",
            "val": "",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "inline-tag.tokens.json",
              "line": 5,
              "nodes": Array [
                Object {
                  "filename": "inline-tag.tokens.json",
                  "line": 5,
                  "type": "Text",
                  "val": "foo",
                },
              ],
              "type": "Block",
            },
            "filename": "inline-tag.tokens.json",
            "isInline": true,
            "line": 5,
            "name": "strong",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "line": 5,
            "type": "Text",
            "val": "",
          },
          Object {
            "line": 6,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 6,
            "type": "Text",
            "val": "",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "inline-tag.tokens.json",
              "line": 6,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "inline-tag.tokens.json",
                  "isInline": true,
                  "line": 6,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "\'[foo]\'",
                },
              ],
              "type": "Block",
            },
            "filename": "inline-tag.tokens.json",
            "isInline": true,
            "line": 6,
            "name": "strong",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "line": 6,
            "type": "Text",
            "val": "",
          },
          Object {
            "line": 7,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 7,
            "type": "Text",
            "val": "",
          },
          Object {
            "buffer": false,
            "filename": "inline-tag.tokens.json",
            "isInline": false,
            "line": 7,
            "mustEscape": false,
            "type": "Code",
            "val": "var foo = \'foo]\'",
          },
          Object {
            "line": 7,
            "type": "Text",
            "val": "",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "bong",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "inline-tag.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "p",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "inline-tag.tokens.json",
        "line": 10,
        "nodes": Array [
          Object {
            "filename": "inline-tag.tokens.json",
            "line": 11,
            "nodes": Array [
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 11,
                "type": "Text",
                "val": "bing",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 12,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 12,
                "type": "Text",
                "val": "",
              },
              Object {
                "attributeBlocks": Array [],
                "attrs": Array [],
                "block": Object {
                  "filename": "inline-tag.tokens.json",
                  "line": 12,
                  "nodes": Array [
                    Object {
                      "filename": "inline-tag.tokens.json",
                      "line": 12,
                      "type": "Text",
                      "val": "foo",
                    },
                  ],
                  "type": "Block",
                },
                "filename": "inline-tag.tokens.json",
                "isInline": true,
                "line": 12,
                "name": "strong",
                "selfClosing": false,
                "type": "Tag",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 12,
                "type": "Text",
                "val": "",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 13,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 13,
                "type": "Text",
                "val": "",
              },
              Object {
                "attributeBlocks": Array [],
                "attrs": Array [],
                "block": Object {
                  "filename": "inline-tag.tokens.json",
                  "line": 13,
                  "nodes": Array [
                    Object {
                      "buffer": true,
                      "filename": "inline-tag.tokens.json",
                      "isInline": true,
                      "line": 13,
                      "mustEscape": true,
                      "type": "Code",
                      "val": "\'[foo]\'",
                    },
                  ],
                  "type": "Block",
                },
                "filename": "inline-tag.tokens.json",
                "isInline": true,
                "line": 13,
                "name": "strong",
                "selfClosing": false,
                "type": "Tag",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 13,
                "type": "Text",
                "val": "",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 14,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 14,
                "type": "Text",
                "val": "",
              },
              Object {
                "buffer": false,
                "filename": "inline-tag.tokens.json",
                "isInline": false,
                "line": 14,
                "mustEscape": false,
                "type": "Code",
                "val": "var foo = \'foo]\'",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 14,
                "type": "Text",
                "val": "",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 15,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "inline-tag.tokens.json",
                "line": 15,
                "type": "Text",
                "val": "bong",
              },
            ],
            "type": "Block",
          },
        ],
        "type": "Block",
      },
      "filename": "inline-tag.tokens.json",
      "isInline": false,
      "line": 10,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "inline-tag.tokens.json",
        "line": 17,
        "nodes": Array [
          Object {
            "line": 18,
            "type": "Text",
            "val": "#[strong escaped]",
          },
          Object {
            "line": 19,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 19,
            "type": "Text",
            "val": "#[",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "inline-tag.tokens.json",
              "line": 19,
              "nodes": Array [
                Object {
                  "filename": "inline-tag.tokens.json",
                  "line": 19,
                  "type": "Text",
                  "val": "escaped",
                },
              ],
              "type": "Block",
            },
            "filename": "inline-tag.tokens.json",
            "isInline": true,
            "line": 19,
            "name": "strong",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "line": 19,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "inline-tag.tokens.json",
      "isInline": false,
      "line": 17,
      "name": "p",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test intepolated-elements.tokens.json 1`] = `
Object {
  "filename": "intepolated-elements.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "intepolated-elements.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "intepolated-elements.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'rho\'",
              },
              Object {
                "mustEscape": true,
                "name": "href",
                "val": "\'#\'",
              },
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\'rho--modifier\'",
              },
            ],
            "block": Object {
              "filename": "intepolated-elements.tokens.json",
              "line": 1,
              "nodes": Array [
                Object {
                  "filename": "intepolated-elements.tokens.json",
                  "line": 1,
                  "type": "Text",
                  "val": "with inline link",
                },
              ],
              "type": "Block",
            },
            "filename": "intepolated-elements.tokens.json",
            "isInline": true,
            "line": 1,
            "name": "a",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "filename": "intepolated-elements.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "intepolated-elements.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "intepolated-elements.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "filename": "intepolated-elements.tokens.json",
            "line": 2,
            "type": "Text",
            "val": "Some text ",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'rho\'",
              },
              Object {
                "mustEscape": true,
                "name": "href",
                "val": "\'#\'",
              },
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\'rho--modifier\'",
              },
            ],
            "block": Object {
              "filename": "intepolated-elements.tokens.json",
              "line": 2,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "intepolated-elements.tokens.json",
            "isInline": true,
            "line": 2,
            "name": "a",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "filename": "intepolated-elements.tokens.json",
            "line": 2,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "intepolated-elements.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "intepolated-elements.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "filename": "intepolated-elements.tokens.json",
            "line": 3,
            "type": "Text",
            "val": "Some text ",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'rho\'",
              },
              Object {
                "mustEscape": true,
                "name": "href",
                "val": "\'#\'",
              },
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\'rho--modifier\'",
              },
            ],
            "block": Object {
              "filename": "intepolated-elements.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "filename": "intepolated-elements.tokens.json",
                  "line": 3,
                  "type": "Text",
                  "val": "with inline link",
                },
              ],
              "type": "Block",
            },
            "filename": "intepolated-elements.tokens.json",
            "isInline": true,
            "line": 3,
            "name": "a",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "filename": "intepolated-elements.tokens.json",
            "line": 3,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "intepolated-elements.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test interpolated-mixin.tokens.json 1`] = `
Object {
  "filename": "interpolated-mixin.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": "url",
      "block": Object {
        "filename": "interpolated-mixin.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "href",
                "val": "url",
              },
            ],
            "block": Object {
              "filename": "interpolated-mixin.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "interpolated-mixin.tokens.json",
                  "isInline": true,
                  "line": 2,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "url",
                },
              ],
              "type": "Block",
            },
            "filename": "interpolated-mixin.tokens.json",
            "isInline": true,
            "line": 2,
            "name": "a",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "interpolated-mixin.tokens.json",
      "line": 1,
      "name": "linkit",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "interpolated-mixin.tokens.json",
        "line": 4,
        "nodes": Array [
          Object {
            "filename": "interpolated-mixin.tokens.json",
            "line": 4,
            "type": "Text",
            "val": "This also works ",
          },
          Object {
            "args": "\'http://www.bing.com\'",
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": null,
            "call": true,
            "filename": "interpolated-mixin.tokens.json",
            "line": 4,
            "name": "linkit",
            "type": "Mixin",
          },
          Object {
            "filename": "interpolated-mixin.tokens.json",
            "line": 4,
            "type": "Text",
            "val": " so hurrah for Pug",
          },
        ],
        "type": "Block",
      },
      "filename": "interpolated-mixin.tokens.json",
      "isInline": false,
      "line": 4,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test interpolation.escape.tokens.json 1`] = `
Object {
  "filename": "interpolation.escape.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "interpolation.escape.tokens.json",
      "isInline": false,
      "line": 2,
      "mustEscape": false,
      "type": "Code",
      "val": "var id = 42;",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "interpolation.escape.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "filename": "interpolation.escape.tokens.json",
            "line": 4,
            "nodes": Array [
              Object {
                "filename": "interpolation.escape.tokens.json",
                "line": 4,
                "type": "Text",
                "val": "some",
              },
              Object {
                "filename": "interpolation.escape.tokens.json",
                "line": 5,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "interpolation.escape.tokens.json",
                "line": 5,
                "type": "Text",
                "val": "#{text}",
              },
              Object {
                "filename": "interpolation.escape.tokens.json",
                "line": 6,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "interpolation.escape.tokens.json",
                "line": 6,
                "type": "Text",
                "val": "here",
              },
              Object {
                "filename": "interpolation.escape.tokens.json",
                "line": 7,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "interpolation.escape.tokens.json",
                "line": 7,
                "type": "Text",
                "val": "My ID ",
              },
              Object {
                "buffer": true,
                "filename": "interpolation.escape.tokens.json",
                "isInline": true,
                "line": 7,
                "mustEscape": true,
                "type": "Code",
                "val": "\"is {\" + id + \"}\"",
              },
            ],
            "type": "Block",
          },
        ],
        "type": "Block",
      },
      "filename": "interpolation.escape.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test layout.append.tokens.json 1`] = `
Object {
  "filename": "layout.append.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "layout.append.tokens.json",
        "line": 2,
        "path": "../fixtures/append/app-layout.pug",
        "type": "FileReference",
      },
      "filename": "layout.append.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "layout.append.tokens.json",
      "line": 4,
      "mode": "append",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'foo.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.append.tokens.json",
            "line": 5,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.append.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'bar.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.append.tokens.json",
            "line": 6,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.append.tokens.json",
          "isInline": false,
          "line": 6,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test layout.append.without-block.tokens.json 1`] = `
Object {
  "filename": "layout.append.without-block.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "layout.append.without-block.tokens.json",
        "line": 2,
        "path": "../fixtures/append-without-block/app-layout.pug",
        "type": "FileReference",
      },
      "filename": "layout.append.without-block.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "layout.append.without-block.tokens.json",
      "line": 4,
      "mode": "append",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'foo.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.append.without-block.tokens.json",
            "line": 5,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.append.without-block.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'bar.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.append.without-block.tokens.json",
            "line": 6,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.append.without-block.tokens.json",
          "isInline": false,
          "line": 6,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test layout.multi.append.prepend.block.tokens.json 1`] = `
Object {
  "filename": "layout.multi.append.prepend.block.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "layout.multi.append.prepend.block.tokens.json",
        "line": 1,
        "path": "../fixtures/multi-append-prepend-block/redefine.pug",
        "type": "FileReference",
      },
      "filename": "layout.multi.append.prepend.block.tokens.json",
      "line": 1,
      "type": "Extends",
    },
    Object {
      "filename": "layout.multi.append.prepend.block.tokens.json",
      "line": 3,
      "mode": "append",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'first\'",
            },
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'append\'",
            },
          ],
          "block": Object {
            "filename": "layout.multi.append.prepend.block.tokens.json",
            "line": 4,
            "nodes": Array [
              Object {
                "filename": "layout.multi.append.prepend.block.tokens.json",
                "line": 4,
                "type": "Text",
                "val": "Something appended to content",
              },
            ],
            "type": "Block",
          },
          "filename": "layout.multi.append.prepend.block.tokens.json",
          "isInline": false,
          "line": 4,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "layout.multi.append.prepend.block.tokens.json",
      "line": 6,
      "mode": "prepend",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'first\'",
            },
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'prepend\'",
            },
          ],
          "block": Object {
            "filename": "layout.multi.append.prepend.block.tokens.json",
            "line": 7,
            "nodes": Array [
              Object {
                "filename": "layout.multi.append.prepend.block.tokens.json",
                "line": 7,
                "type": "Text",
                "val": "Something prepended to content",
              },
            ],
            "type": "Block",
          },
          "filename": "layout.multi.append.prepend.block.tokens.json",
          "isInline": false,
          "line": 7,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "layout.multi.append.prepend.block.tokens.json",
      "line": 9,
      "mode": "append",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'last\'",
            },
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'append\'",
            },
          ],
          "block": Object {
            "filename": "layout.multi.append.prepend.block.tokens.json",
            "line": 10,
            "nodes": Array [
              Object {
                "filename": "layout.multi.append.prepend.block.tokens.json",
                "line": 10,
                "type": "Text",
                "val": "Last append must be most last",
              },
            ],
            "type": "Block",
          },
          "filename": "layout.multi.append.prepend.block.tokens.json",
          "isInline": false,
          "line": 10,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "layout.multi.append.prepend.block.tokens.json",
      "line": 12,
      "mode": "prepend",
      "name": "content",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'last\'",
            },
            Object {
              "mustEscape": false,
              "name": "class",
              "val": "\'prepend\'",
            },
          ],
          "block": Object {
            "filename": "layout.multi.append.prepend.block.tokens.json",
            "line": 13,
            "nodes": Array [
              Object {
                "filename": "layout.multi.append.prepend.block.tokens.json",
                "line": 13,
                "type": "Text",
                "val": "Last prepend must appear at top",
              },
            ],
            "type": "Block",
          },
          "filename": "layout.multi.append.prepend.block.tokens.json",
          "isInline": false,
          "line": 13,
          "name": "p",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "layout.multi.append.prepend.block.tokens.json",
      "line": 15,
      "mode": "append",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'jquery.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.multi.append.prepend.block.tokens.json",
            "line": 16,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.multi.append.prepend.block.tokens.json",
          "isInline": false,
          "line": 16,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
    Object {
      "filename": "layout.multi.append.prepend.block.tokens.json",
      "line": 18,
      "mode": "prepend",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'foo.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.multi.append.prepend.block.tokens.json",
            "line": 19,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.multi.append.prepend.block.tokens.json",
          "isInline": false,
          "line": 19,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test layout.prepend.tokens.json 1`] = `
Object {
  "filename": "layout.prepend.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "layout.prepend.tokens.json",
        "line": 2,
        "path": "../fixtures/prepend/app-layout.pug",
        "type": "FileReference",
      },
      "filename": "layout.prepend.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "layout.prepend.tokens.json",
      "line": 4,
      "mode": "prepend",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'foo.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.prepend.tokens.json",
            "line": 5,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.prepend.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'bar.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.prepend.tokens.json",
            "line": 6,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.prepend.tokens.json",
          "isInline": false,
          "line": 6,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test layout.prepend.without-block.tokens.json 1`] = `
Object {
  "filename": "layout.prepend.without-block.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "layout.prepend.without-block.tokens.json",
        "line": 2,
        "path": "../fixtures/prepend-without-block/app-layout.pug",
        "type": "FileReference",
      },
      "filename": "layout.prepend.without-block.tokens.json",
      "line": 2,
      "type": "Extends",
    },
    Object {
      "filename": "layout.prepend.without-block.tokens.json",
      "line": 4,
      "mode": "prepend",
      "name": "head",
      "nodes": Array [
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'foo.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.prepend.without-block.tokens.json",
            "line": 5,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.prepend.without-block.tokens.json",
          "isInline": false,
          "line": 5,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
        Object {
          "attributeBlocks": Array [],
          "attrs": Array [
            Object {
              "mustEscape": true,
              "name": "src",
              "val": "\'bar.js\'",
            },
          ],
          "block": Object {
            "filename": "layout.prepend.without-block.tokens.json",
            "line": 6,
            "nodes": Array [],
            "type": "Block",
          },
          "filename": "layout.prepend.without-block.tokens.json",
          "isInline": false,
          "line": 6,
          "name": "script",
          "selfClosing": false,
          "type": "Tag",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin.attrs.tokens.json 1`] = `
Object {
  "filename": "mixin.attrs.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": "title",
      "block": Object {
        "filename": "mixin.attrs.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'centered\'",
              },
              Object {
                "mustEscape": true,
                "name": "id",
                "val": "attributes.id",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "block": Object {
                    "filename": "mixin.attrs.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "class",
                            "val": "attributes.class",
                          },
                        ],
                        "block": Object {
                          "filename": "mixin.attrs.tokens.json",
                          "line": 4,
                          "nodes": Array [
                            Object {
                              "buffer": true,
                              "filename": "mixin.attrs.tokens.json",
                              "isInline": true,
                              "line": 4,
                              "mustEscape": true,
                              "type": "Code",
                              "val": "title",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "mixin.attrs.tokens.json",
                        "isInline": false,
                        "line": 4,
                        "name": "h1",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "buffer": false,
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "if (title)",
                },
                Object {
                  "filename": "mixin.attrs.tokens.json",
                  "line": 5,
                  "type": "MixinBlock",
                },
                Object {
                  "block": Object {
                    "filename": "mixin.attrs.tokens.json",
                    "line": 7,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": false,
                            "name": "class",
                            "val": "\'footer\'",
                          },
                        ],
                        "block": Object {
                          "filename": "mixin.attrs.tokens.json",
                          "line": 7,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [
                                Object {
                                  "mustEscape": true,
                                  "name": "href",
                                  "val": "attributes.href",
                                },
                              ],
                              "block": Object {
                                "filename": "mixin.attrs.tokens.json",
                                "line": 8,
                                "nodes": Array [
                                  Object {
                                    "filename": "mixin.attrs.tokens.json",
                                    "line": 8,
                                    "type": "Text",
                                    "val": "Back",
                                  },
                                ],
                                "type": "Block",
                              },
                              "filename": "mixin.attrs.tokens.json",
                              "isInline": true,
                              "line": 8,
                              "name": "a",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "mixin.attrs.tokens.json",
                        "isInline": false,
                        "line": 7,
                        "name": "div",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "buffer": false,
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": false,
                  "line": 6,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "if (attributes.href)",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.attrs.tokens.json",
      "line": 1,
      "name": "centered",
      "type": "Mixin",
    },
    Object {
      "args": "title",
      "block": Object {
        "filename": "mixin.attrs.tokens.json",
        "line": 11,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'stretch\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 11,
              "nodes": Array [
                Object {
                  "args": "title",
                  "attributeBlocks": Array [
                    "attributes",
                  ],
                  "attrs": Array [
                    Object {
                      "mustEscape": false,
                      "name": "class",
                      "val": "\'highlight\'",
                    },
                  ],
                  "block": Object {
                    "filename": "mixin.attrs.tokens.json",
                    "line": 12,
                    "nodes": Array [
                      Object {
                        "filename": "mixin.attrs.tokens.json",
                        "line": 13,
                        "type": "MixinBlock",
                      },
                    ],
                    "type": "Block",
                  },
                  "call": true,
                  "filename": "mixin.attrs.tokens.json",
                  "line": 12,
                  "name": "centered",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 11,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.attrs.tokens.json",
      "line": 10,
      "name": "main",
      "type": "Mixin",
    },
    Object {
      "args": null,
      "block": Object {
        "filename": "mixin.attrs.tokens.json",
        "line": 16,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [
              "attributes",
            ],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'bottom\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 16,
              "nodes": Array [
                Object {
                  "filename": "mixin.attrs.tokens.json",
                  "line": 17,
                  "type": "MixinBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 16,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.attrs.tokens.json",
      "line": 15,
      "name": "bottom",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.attrs.tokens.json",
        "line": 19,
        "nodes": Array [
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'First\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 20,
              "nodes": Array [
                Object {
                  "filename": "mixin.attrs.tokens.json",
                  "line": 20,
                  "type": "Text",
                  "val": "Hello World",
                },
              ],
              "type": "Block",
            },
            "call": true,
            "filename": "mixin.attrs.tokens.json",
            "line": 20,
            "name": "centered",
            "type": "Mixin",
          },
          Object {
            "args": "\'Section 1\'",
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'Second\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 21,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.attrs.tokens.json",
                    "line": 22,
                    "nodes": Array [
                      Object {
                        "filename": "mixin.attrs.tokens.json",
                        "line": 22,
                        "type": "Text",
                        "val": "Some important content.",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": false,
                  "line": 22,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "call": true,
            "filename": "mixin.attrs.tokens.json",
            "line": 21,
            "name": "centered",
            "type": "Mixin",
          },
          Object {
            "args": "\'Section 2\'",
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'Third\'",
              },
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'foo\'",
              },
              Object {
                "mustEscape": true,
                "name": "href",
                "val": "\'menu.html\'",
              },
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 23,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.attrs.tokens.json",
                    "line": 24,
                    "nodes": Array [
                      Object {
                        "filename": "mixin.attrs.tokens.json",
                        "line": 24,
                        "type": "Text",
                        "val": "Even more important content.",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": false,
                  "line": 24,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "call": true,
            "filename": "mixin.attrs.tokens.json",
            "line": 23,
            "name": "centered",
            "type": "Mixin",
          },
          Object {
            "args": "\'Section 3\'",
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "href",
                "val": "\'#\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 25,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.attrs.tokens.json",
                    "line": 26,
                    "nodes": Array [
                      Object {
                        "filename": "mixin.attrs.tokens.json",
                        "line": 26,
                        "type": "Text",
                        "val": "Last content.",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": false,
                  "line": 26,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "call": true,
            "filename": "mixin.attrs.tokens.json",
            "line": 25,
            "name": "main",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'foo\'",
              },
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\'bar\'",
              },
              Object {
                "mustEscape": true,
                "name": "name",
                "val": "\'end\'",
              },
              Object {
                "mustEscape": true,
                "name": "id",
                "val": "\'Last\'",
              },
              Object {
                "mustEscape": true,
                "name": "data-attr",
                "val": "\'baz\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 27,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.attrs.tokens.json",
                    "line": 28,
                    "nodes": Array [
                      Object {
                        "filename": "mixin.attrs.tokens.json",
                        "line": 28,
                        "type": "Text",
                        "val": "Some final words.",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": false,
                  "line": 28,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "call": true,
            "filename": "mixin.attrs.tokens.json",
            "line": 27,
            "name": "bottom",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "[\'class1\', \'class2\']",
              },
            ],
            "block": null,
            "call": true,
            "filename": "mixin.attrs.tokens.json",
            "line": 29,
            "name": "bottom",
            "type": "Mixin",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin.attrs.tokens.json",
      "isInline": false,
      "line": 19,
      "name": "body",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "args": null,
      "block": Object {
        "filename": "mixin.attrs.tokens.json",
        "line": 32,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [
              "attributes",
            ],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'thing\'",
              },
              Object {
                "mustEscape": true,
                "name": "attr1",
                "val": "\'foo\'",
              },
              Object {
                "mustEscape": true,
                "name": "attr2",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 32,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 32,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.attrs.tokens.json",
      "line": 31,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "buffer": false,
      "filename": "mixin.attrs.tokens.json",
      "isInline": false,
      "line": 34,
      "mustEscape": false,
      "type": "Code",
      "val": "var val = \'<biz>\'",
    },
    Object {
      "buffer": false,
      "filename": "mixin.attrs.tokens.json",
      "isInline": false,
      "line": 35,
      "mustEscape": false,
      "type": "Code",
      "val": "var classes = [\'foo\', \'bar\']",
    },
    Object {
      "args": null,
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "attr3",
          "val": "\'baz\'",
        },
        Object {
          "mustEscape": true,
          "name": "data-foo",
          "val": "val",
        },
        Object {
          "mustEscape": false,
          "name": "data-bar",
          "val": "val",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "classes",
        },
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'thunk\'",
        },
      ],
      "block": null,
      "call": true,
      "filename": "mixin.attrs.tokens.json",
      "line": 36,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "buffer": false,
      "filename": "mixin.attrs.tokens.json",
      "line": 38,
      "type": "Comment",
      "val": " Regression test for #1424",
    },
    Object {
      "args": "work",
      "block": Object {
        "filename": "mixin.attrs.tokens.json",
        "line": 40,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [
              "attributes",
            ],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 40,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": true,
                  "line": 40,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "work",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 40,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.attrs.tokens.json",
      "line": 39,
      "name": "work_filmstrip_item",
      "type": "Mixin",
    },
    Object {
      "args": "\'work\'",
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "data-profile",
          "val": "\'profile\'",
        },
        Object {
          "mustEscape": true,
          "name": "data-creator-name",
          "val": "\'name\'",
        },
      ],
      "block": null,
      "call": true,
      "filename": "mixin.attrs.tokens.json",
      "line": 41,
      "name": "work_filmstrip_item",
      "type": "Mixin",
    },
    Object {
      "args": "arg1, arg2, arg3, arg4",
      "block": Object {
        "filename": "mixin.attrs.tokens.json",
        "line": 44,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 44,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": true,
                  "line": 44,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "arg1",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 44,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 45,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": true,
                  "line": 45,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "arg2",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 45,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 46,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": true,
                  "line": 46,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "arg3",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 46,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.attrs.tokens.json",
              "line": 47,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "mixin.attrs.tokens.json",
                  "isInline": true,
                  "line": 47,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "arg4",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.attrs.tokens.json",
            "isInline": false,
            "line": 47,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.attrs.tokens.json",
      "line": 43,
      "name": "my-mixin",
      "type": "Mixin",
    },
    Object {
      "args": null,
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "attr3",
          "val": "\"qux\"",
        },
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "\"baz\"",
        },
      ],
      "block": null,
      "call": true,
      "filename": "mixin.attrs.tokens.json",
      "line": 49,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "args": "
\'1\',
      \'2\',
  \'3\',
      \'4\'
",
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": null,
      "call": true,
      "filename": "mixin.attrs.tokens.json",
      "line": 54,
      "name": "my-mixin",
      "type": "Mixin",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin.block-tag-behaviour.tokens.json 1`] = `
Object {
  "filename": "mixin.block-tag-behaviour.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": "name",
      "block": Object {
        "filename": "mixin.block-tag-behaviour.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'article\'",
              },
            ],
            "block": Object {
              "filename": "mixin.block-tag-behaviour.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.block-tag-behaviour.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "mixin.block-tag-behaviour.tokens.json",
                        "isInline": true,
                        "line": 4,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "name",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixin.block-tag-behaviour.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "h1",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "filename": "mixin.block-tag-behaviour.tokens.json",
                  "line": 5,
                  "type": "MixinBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.block-tag-behaviour.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "section",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.block-tag-behaviour.tokens.json",
      "line": 2,
      "name": "article",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.block-tag-behaviour.tokens.json",
        "line": 7,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.block-tag-behaviour.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "args": "\'Foo\'",
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.block-tag-behaviour.tokens.json",
                    "line": 9,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "mixin.block-tag-behaviour.tokens.json",
                          "line": 9,
                          "nodes": Array [
                            Object {
                              "filename": "mixin.block-tag-behaviour.tokens.json",
                              "line": 9,
                              "type": "Text",
                              "val": "I\'m article foo",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "mixin.block-tag-behaviour.tokens.json",
                        "isInline": false,
                        "line": 9,
                        "name": "p",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "call": true,
                  "filename": "mixin.block-tag-behaviour.tokens.json",
                  "line": 9,
                  "name": "article",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.block-tag-behaviour.tokens.json",
            "isInline": false,
            "line": 8,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin.block-tag-behaviour.tokens.json",
      "isInline": false,
      "line": 7,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "args": "name",
      "block": Object {
        "filename": "mixin.block-tag-behaviour.tokens.json",
        "line": 12,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'article\'",
              },
            ],
            "block": Object {
              "filename": "mixin.block-tag-behaviour.tokens.json",
              "line": 12,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.block-tag-behaviour.tokens.json",
                    "line": 13,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "mixin.block-tag-behaviour.tokens.json",
                        "isInline": true,
                        "line": 13,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "name",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixin.block-tag-behaviour.tokens.json",
                  "isInline": false,
                  "line": 13,
                  "name": "h1",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.block-tag-behaviour.tokens.json",
                    "line": 14,
                    "nodes": Array [
                      Object {
                        "filename": "mixin.block-tag-behaviour.tokens.json",
                        "line": 15,
                        "type": "MixinBlock",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixin.block-tag-behaviour.tokens.json",
                  "isInline": false,
                  "line": 14,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.block-tag-behaviour.tokens.json",
            "isInline": false,
            "line": 12,
            "name": "section",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.block-tag-behaviour.tokens.json",
      "line": 11,
      "name": "article",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.block-tag-behaviour.tokens.json",
        "line": 17,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.block-tag-behaviour.tokens.json",
              "line": 18,
              "nodes": Array [
                Object {
                  "args": "\'Something\'",
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.block-tag-behaviour.tokens.json",
                    "line": 19,
                    "nodes": Array [
                      Object {
                        "line": 20,
                        "type": "Text",
                        "val": "I\'m a much longer",
                      },
                      Object {
                        "line": 21,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 21,
                        "type": "Text",
                        "val": "text-only article,",
                      },
                      Object {
                        "line": 22,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 22,
                        "type": "Text",
                        "val": "but you can still",
                      },
                      Object {
                        "line": 23,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 23,
                        "type": "Text",
                        "val": "inline html tags",
                      },
                      Object {
                        "line": 24,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 24,
                        "type": "Text",
                        "val": "in me if you want.",
                      },
                    ],
                    "type": "Block",
                  },
                  "call": true,
                  "filename": "mixin.block-tag-behaviour.tokens.json",
                  "line": 19,
                  "name": "article",
                  "textOnly": true,
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.block-tag-behaviour.tokens.json",
            "isInline": false,
            "line": 18,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin.block-tag-behaviour.tokens.json",
      "isInline": false,
      "line": 17,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin.blocks.tokens.json 1`] = `
Object {
  "filename": "mixin.blocks.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": "method, action",
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 4,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "method",
                "val": "method",
              },
              Object {
                "mustEscape": true,
                "name": "action",
                "val": "action",
              },
            ],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "buffer": false,
                  "filename": "mixin.blocks.tokens.json",
                  "isInline": false,
                  "line": 5,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "var csrf_token_from_somewhere = \'hey\'",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "type",
                      "val": "\'hidden\'",
                    },
                    Object {
                      "mustEscape": true,
                      "name": "name",
                      "val": "\'_csrf\'",
                    },
                    Object {
                      "mustEscape": true,
                      "name": "value",
                      "val": "csrf_token_from_somewhere",
                    },
                  ],
                  "block": Object {
                    "filename": "mixin.blocks.tokens.json",
                    "line": 6,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "mixin.blocks.tokens.json",
                  "isInline": false,
                  "line": 6,
                  "name": "input",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "filename": "mixin.blocks.tokens.json",
                  "line": 7,
                  "type": "MixinBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "form",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.blocks.tokens.json",
      "line": 3,
      "name": "form",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 9,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 10,
              "nodes": Array [
                Object {
                  "args": "\'GET\', \'/search\'",
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.blocks.tokens.json",
                    "line": 11,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "type",
                            "val": "\'text\'",
                          },
                          Object {
                            "mustEscape": true,
                            "name": "name",
                            "val": "\'query\'",
                          },
                          Object {
                            "mustEscape": true,
                            "name": "placeholder",
                            "val": "\'Search\'",
                          },
                        ],
                        "block": Object {
                          "filename": "mixin.blocks.tokens.json",
                          "line": 12,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "mixin.blocks.tokens.json",
                        "isInline": false,
                        "line": 12,
                        "name": "input",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "type",
                            "val": "\'submit\'",
                          },
                          Object {
                            "mustEscape": true,
                            "name": "value",
                            "val": "\'Search\'",
                          },
                        ],
                        "block": Object {
                          "filename": "mixin.blocks.tokens.json",
                          "line": 13,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "mixin.blocks.tokens.json",
                        "isInline": false,
                        "line": 13,
                        "name": "input",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "call": true,
                  "filename": "mixin.blocks.tokens.json",
                  "line": 11,
                  "name": "form",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 10,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin.blocks.tokens.json",
      "isInline": false,
      "line": 9,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 15,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 16,
              "nodes": Array [
                Object {
                  "args": "\'POST\', \'/search\'",
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.blocks.tokens.json",
                    "line": 17,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "type",
                            "val": "\'text\'",
                          },
                          Object {
                            "mustEscape": true,
                            "name": "name",
                            "val": "\'query\'",
                          },
                          Object {
                            "mustEscape": true,
                            "name": "placeholder",
                            "val": "\'Search\'",
                          },
                        ],
                        "block": Object {
                          "filename": "mixin.blocks.tokens.json",
                          "line": 18,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "mixin.blocks.tokens.json",
                        "isInline": false,
                        "line": 18,
                        "name": "input",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "type",
                            "val": "\'submit\'",
                          },
                          Object {
                            "mustEscape": true,
                            "name": "value",
                            "val": "\'Search\'",
                          },
                        ],
                        "block": Object {
                          "filename": "mixin.blocks.tokens.json",
                          "line": 19,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "mixin.blocks.tokens.json",
                        "isInline": false,
                        "line": 19,
                        "name": "input",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "call": true,
                  "filename": "mixin.blocks.tokens.json",
                  "line": 17,
                  "name": "form",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 16,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin.blocks.tokens.json",
      "isInline": false,
      "line": 15,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 21,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 22,
              "nodes": Array [
                Object {
                  "args": "\'POST\', \'/search\'",
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": null,
                  "call": true,
                  "filename": "mixin.blocks.tokens.json",
                  "line": 23,
                  "name": "form",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 22,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin.blocks.tokens.json",
      "isInline": false,
      "line": 21,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "args": null,
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 26,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 26,
              "nodes": Array [
                Object {
                  "filename": "mixin.blocks.tokens.json",
                  "line": 27,
                  "type": "MixinBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 26,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.blocks.tokens.json",
      "line": 25,
      "name": "bar",
      "type": "Mixin",
    },
    Object {
      "args": null,
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 30,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'foo\'",
              },
            ],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 30,
              "nodes": Array [
                Object {
                  "args": null,
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixin.blocks.tokens.json",
                    "line": 31,
                    "nodes": Array [
                      Object {
                        "filename": "mixin.blocks.tokens.json",
                        "line": 32,
                        "type": "MixinBlock",
                      },
                    ],
                    "type": "Block",
                  },
                  "call": true,
                  "filename": "mixin.blocks.tokens.json",
                  "line": 31,
                  "name": "bar",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 30,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.blocks.tokens.json",
      "line": 29,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "args": null,
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 34,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 35,
              "nodes": Array [
                Object {
                  "filename": "mixin.blocks.tokens.json",
                  "line": 35,
                  "type": "Text",
                  "val": "one",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 35,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 36,
              "nodes": Array [
                Object {
                  "filename": "mixin.blocks.tokens.json",
                  "line": 36,
                  "type": "Text",
                  "val": "two",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 36,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 37,
              "nodes": Array [
                Object {
                  "filename": "mixin.blocks.tokens.json",
                  "line": 37,
                  "type": "Text",
                  "val": "three",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 37,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": true,
      "filename": "mixin.blocks.tokens.json",
      "line": 34,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "args": null,
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 41,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'baz\'",
              },
            ],
            "block": Object {
              "filename": "mixin.blocks.tokens.json",
              "line": 41,
              "nodes": Array [
                Object {
                  "filename": "mixin.blocks.tokens.json",
                  "line": 42,
                  "type": "MixinBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.blocks.tokens.json",
            "isInline": false,
            "line": 41,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.blocks.tokens.json",
      "line": 40,
      "name": "baz",
      "type": "Mixin",
    },
    Object {
      "args": "",
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.blocks.tokens.json",
        "line": 44,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "mixin.blocks.tokens.json",
            "isInline": true,
            "line": 44,
            "mustEscape": true,
            "type": "Code",
            "val": "\'123\'",
          },
        ],
        "type": "Block",
      },
      "call": true,
      "filename": "mixin.blocks.tokens.json",
      "line": 44,
      "name": "baz",
      "type": "Mixin",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin.merge.tokens.json 1`] = `
Object {
  "filename": "mixin.merge.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": null,
      "block": Object {
        "filename": "mixin.merge.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [
              "attributes",
            ],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'bar\'",
              },
            ],
            "block": Object {
              "filename": "mixin.merge.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "filename": "mixin.merge.tokens.json",
                  "line": 2,
                  "type": "Text",
                  "val": "One",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.merge.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [
              "attributes",
            ],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'baz\'",
              },
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'quux\'",
              },
            ],
            "block": Object {
              "filename": "mixin.merge.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "filename": "mixin.merge.tokens.json",
                  "line": 3,
                  "type": "Text",
                  "val": "Two",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.merge.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [
              "attributes",
            ],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin.merge.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "filename": "mixin.merge.tokens.json",
                  "line": 4,
                  "type": "Text",
                  "val": "Three",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.merge.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [
              "attributes",
            ],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'bar\'",
              },
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\"baz\"",
              },
            ],
            "block": Object {
              "filename": "mixin.merge.tokens.json",
              "line": 5,
              "nodes": Array [
                Object {
                  "filename": "mixin.merge.tokens.json",
                  "line": 5,
                  "type": "Text",
                  "val": "Four",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin.merge.tokens.json",
            "isInline": false,
            "line": 5,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin.merge.tokens.json",
      "line": 1,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin.merge.tokens.json",
        "line": 7,
        "nodes": Array [
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'hello\'",
              },
            ],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 8,
            "name": "foo",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'world\'",
              },
            ],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 9,
            "name": "foo",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'hello\'",
              },
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'world\'",
              },
            ],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 10,
            "name": "foo",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'hello\'",
              },
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'world\'",
              },
            ],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 11,
            "name": "foo",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\"hello\"",
              },
            ],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 12,
            "name": "foo",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'hello\'",
              },
              Object {
                "mustEscape": true,
                "name": "class",
                "val": "\"world\"",
              },
            ],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 13,
            "name": "foo",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 14,
            "name": "foo",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [
              "{class: \"hello\"}",
            ],
            "attrs": Array [],
            "block": null,
            "call": true,
            "filename": "mixin.merge.tokens.json",
            "line": 15,
            "name": "foo",
            "type": "Mixin",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin.merge.tokens.json",
      "isInline": false,
      "line": 7,
      "name": "body",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin-at-end-of-file.tokens.json 1`] = `
Object {
  "filename": "mixin-at-end-of-file.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "mixin-at-end-of-file.tokens.json",
        "line": 1,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "mixin-at-end-of-file.tokens.json",
        "line": 1,
        "path": "./auxiliary/mixin-at-end-of-file.pug",
        "type": "FileReference",
      },
      "filename": "mixin-at-end-of-file.tokens.json",
      "line": 1,
      "type": "Include",
    },
    Object {
      "args": "",
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin-at-end-of-file.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin-at-end-of-file.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "filename": "mixin-at-end-of-file.tokens.json",
                  "line": 4,
                  "type": "Text",
                  "val": "some awesome content",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin-at-end-of-file.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "p",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": true,
      "filename": "mixin-at-end-of-file.tokens.json",
      "line": 3,
      "name": "slide",
      "type": "Mixin",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin-block-with-space.tokens.json 1`] = `
Object {
  "filename": "mixin-block-with-space.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": "id",
      "block": Object {
        "filename": "mixin-block-with-space.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin-block-with-space.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "filename": "mixin-block-with-space.tokens.json",
                  "line": 3,
                  "type": "MixinBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin-block-with-space.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin-block-with-space.tokens.json",
      "line": 1,
      "name": "m",
      "type": "Mixin",
    },
    Object {
      "args": "",
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin-block-with-space.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "filename": "mixin-block-with-space.tokens.json",
            "line": 6,
            "type": "Text",
            "val": "This text should appear",
          },
        ],
        "type": "Block",
      },
      "call": true,
      "filename": "mixin-block-with-space.tokens.json",
      "line": 5,
      "name": "m",
      "type": "Mixin",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin-hoist.tokens.json 1`] = `
Object {
  "filename": "mixin-hoist.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": null,
      "block": Object {
        "filename": "mixin-hoist.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin-hoist.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "mixin-hoist.tokens.json",
                  "isInline": true,
                  "line": 3,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "title",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin-hoist.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "h1",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixin-hoist.tokens.json",
      "line": 2,
      "name": "foo",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixin-hoist.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixin-hoist.tokens.json",
              "line": 6,
              "nodes": Array [
                Object {
                  "args": null,
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": null,
                  "call": true,
                  "filename": "mixin-hoist.tokens.json",
                  "line": 7,
                  "name": "foo",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixin-hoist.tokens.json",
            "isInline": false,
            "line": 6,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "mixin-hoist.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixin-via-include.tokens.json 1`] = `
Object {
  "filename": "mixin-via-include.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "mixin-via-include.tokens.json",
      "line": 1,
      "type": "Comment",
      "val": " regression test for https://github.com/pugjs/pug/issues/1435",
    },
    Object {
      "block": Object {
        "filename": "mixin-via-include.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "file": Object {
        "filename": "mixin-via-include.tokens.json",
        "line": 3,
        "path": "../fixtures/mixin-include.pug",
        "type": "FileReference",
      },
      "filename": "mixin-via-include.tokens.json",
      "line": 3,
      "type": "Include",
    },
    Object {
      "args": null,
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": null,
      "call": true,
      "filename": "mixin-via-include.tokens.json",
      "line": 5,
      "name": "bang",
      "type": "Mixin",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixins.rest-args.tokens.json 1`] = `
Object {
  "filename": "mixins.rest-args.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": "tag, ...items",
      "block": Object {
        "filename": "mixins.rest-args.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixins.rest-args.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "block": Object {
                    "filename": "mixins.rest-args.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "mixins.rest-args.tokens.json",
                          "line": 4,
                          "nodes": Array [
                            Object {
                              "buffer": true,
                              "filename": "mixins.rest-args.tokens.json",
                              "isInline": true,
                              "line": 4,
                              "mustEscape": true,
                              "type": "Code",
                              "val": "item",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "mixins.rest-args.tokens.json",
                        "isInline": false,
                        "line": 4,
                        "name": "li",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.rest-args.tokens.json",
                  "key": null,
                  "line": 3,
                  "obj": "items",
                  "type": "Each",
                  "val": "item",
                },
              ],
              "type": "Block",
            },
            "expr": "tag",
            "filename": "mixins.rest-args.tokens.json",
            "isInline": false,
            "line": 2,
            "selfClosing": false,
            "type": "InterpolatedTag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixins.rest-args.tokens.json",
      "line": 1,
      "name": "list",
      "type": "Mixin",
    },
    Object {
      "args": "\'ul\', 1, 2, 3, 4",
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": null,
      "call": true,
      "filename": "mixins.rest-args.tokens.json",
      "line": 6,
      "name": "list",
      "type": "Mixin",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixins.tokens.json 1`] = `
Object {
  "filename": "mixins.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": "title, str",
      "block": Object {
        "filename": "mixins.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'comment\'",
              },
            ],
            "block": Object {
              "filename": "mixins.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixins.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "mixins.tokens.json",
                        "isInline": true,
                        "line": 3,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "title",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "h2",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": false,
                      "name": "class",
                      "val": "\'body\'",
                    },
                  ],
                  "block": Object {
                    "filename": "mixins.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "mixins.tokens.json",
                        "isInline": true,
                        "line": 4,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "str",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "mixins.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixins.tokens.json",
      "line": 1,
      "name": "comment",
      "type": "Mixin",
    },
    Object {
      "args": "title, str",
      "block": Object {
        "filename": "mixins.tokens.json",
        "line": 8,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'comment\'",
              },
            ],
            "block": Object {
              "filename": "mixins.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixins.tokens.json",
                    "line": 9,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "mixins.tokens.json",
                        "isInline": true,
                        "line": 9,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "title",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.tokens.json",
                  "isInline": false,
                  "line": 9,
                  "name": "h2",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": false,
                      "name": "class",
                      "val": "\'body\'",
                    },
                  ],
                  "block": Object {
                    "filename": "mixins.tokens.json",
                    "line": 10,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "mixins.tokens.json",
                        "isInline": true,
                        "line": 10,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "str",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.tokens.json",
                  "isInline": false,
                  "line": 10,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "mixins.tokens.json",
            "isInline": false,
            "line": 8,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixins.tokens.json",
      "line": 7,
      "name": "comment",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "id",
          "val": "\'user\'",
        },
      ],
      "block": Object {
        "filename": "mixins.tokens.json",
        "line": 12,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixins.tokens.json",
              "line": 13,
              "nodes": Array [
                Object {
                  "filename": "mixins.tokens.json",
                  "line": 13,
                  "type": "Text",
                  "val": "Tobi",
                },
              ],
              "type": "Block",
            },
            "filename": "mixins.tokens.json",
            "isInline": false,
            "line": 13,
            "name": "h1",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'comments\'",
              },
            ],
            "block": Object {
              "filename": "mixins.tokens.json",
              "line": 14,
              "nodes": Array [
                Object {
                  "args": "\'This\',
            ((\'is regular, javascript\'))",
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": null,
                  "call": true,
                  "filename": "mixins.tokens.json",
                  "line": 15,
                  "name": "comment",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "mixins.tokens.json",
            "isInline": false,
            "line": 14,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "mixins.tokens.json",
      "isInline": false,
      "line": 12,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "args": null,
      "block": Object {
        "filename": "mixins.tokens.json",
        "line": 19,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "mixins.tokens.json",
              "line": 19,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixins.tokens.json",
                    "line": 20,
                    "nodes": Array [
                      Object {
                        "filename": "mixins.tokens.json",
                        "line": 20,
                        "type": "Text",
                        "val": "foo",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.tokens.json",
                  "isInline": false,
                  "line": 20,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixins.tokens.json",
                    "line": 21,
                    "nodes": Array [
                      Object {
                        "filename": "mixins.tokens.json",
                        "line": 21,
                        "type": "Text",
                        "val": "bar",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.tokens.json",
                  "isInline": false,
                  "line": 21,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "mixins.tokens.json",
                    "line": 22,
                    "nodes": Array [
                      Object {
                        "filename": "mixins.tokens.json",
                        "line": 22,
                        "type": "Text",
                        "val": "baz",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "mixins.tokens.json",
                  "isInline": false,
                  "line": 22,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "mixins.tokens.json",
            "isInline": false,
            "line": 19,
            "name": "ul",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixins.tokens.json",
      "line": 18,
      "name": "list",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixins.tokens.json",
        "line": 24,
        "nodes": Array [
          Object {
            "args": "",
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": null,
            "call": true,
            "filename": "mixins.tokens.json",
            "line": 25,
            "name": "list",
            "type": "Mixin",
          },
          Object {
            "args": "",
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": null,
            "call": true,
            "filename": "mixins.tokens.json",
            "line": 26,
            "name": "list",
            "type": "Mixin",
          },
        ],
        "type": "Block",
      },
      "filename": "mixins.tokens.json",
      "isInline": false,
      "line": 24,
      "name": "body",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "args": "str",
      "block": Object {
        "filename": "mixins.tokens.json",
        "line": 29,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'interpolation\'",
              },
            ],
            "block": Object {
              "filename": "mixins.tokens.json",
              "line": 29,
              "nodes": Array [
                Object {
                  "buffer": true,
                  "filename": "mixins.tokens.json",
                  "isInline": true,
                  "line": 29,
                  "mustEscape": true,
                  "type": "Code",
                  "val": "str + \'interpolated\'",
                },
              ],
              "type": "Block",
            },
            "filename": "mixins.tokens.json",
            "isInline": false,
            "line": 29,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixins.tokens.json",
      "line": 28,
      "name": "foobar",
      "type": "Mixin",
    },
    Object {
      "buffer": false,
      "filename": "mixins.tokens.json",
      "isInline": false,
      "line": 31,
      "mustEscape": false,
      "type": "Code",
      "val": "var suffix = \"bar\"",
    },
    Object {
      "args": "\'This is \'",
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": null,
      "call": true,
      "filename": "mixins.tokens.json",
      "line": 32,
      "name": "#{\'foo\' + suffix}",
      "type": "Mixin",
    },
  ],
  "type": "Block",
}
`;

exports[`test mixins-unused.tokens.json 1`] = `
Object {
  "filename": "mixins-unused.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "args": null,
      "block": Object {
        "filename": "mixins-unused.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "class",
                "val": "\'wtf\'",
              },
            ],
            "block": Object {
              "filename": "mixins-unused.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "filename": "mixins-unused.tokens.json",
                  "line": 2,
                  "type": "Text",
                  "val": "This isn\'t something we ever want to output",
                },
              ],
              "type": "Block",
            },
            "filename": "mixins-unused.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "mixins-unused.tokens.json",
      "line": 1,
      "name": "never-called",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "mixins-unused.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "mixins-unused.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "body",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test namespaces.tokens.json 1`] = `
Object {
  "filename": "namespaces.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "namespaces.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "namespaces.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "Something",
          },
        ],
        "type": "Block",
      },
      "filename": "namespaces.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "fb:user:role",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "fb:foo",
          "val": "\'bar\'",
        },
      ],
      "block": Object {
        "filename": "namespaces.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "namespaces.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "foo",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test nesting.tokens.json 1`] = `
Object {
  "filename": "nesting.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "nesting.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "nesting.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "filename": "nesting.tokens.json",
                  "line": 2,
                  "type": "Text",
                  "val": "a",
                },
              ],
              "type": "Block",
            },
            "filename": "nesting.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "nesting.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "filename": "nesting.tokens.json",
                  "line": 3,
                  "type": "Text",
                  "val": "b",
                },
              ],
              "type": "Block",
            },
            "filename": "nesting.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "nesting.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "nesting.tokens.json",
                    "line": 5,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "nesting.tokens.json",
                          "line": 6,
                          "nodes": Array [
                            Object {
                              "filename": "nesting.tokens.json",
                              "line": 6,
                              "type": "Text",
                              "val": "c",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "nesting.tokens.json",
                        "isInline": false,
                        "line": 6,
                        "name": "li",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "nesting.tokens.json",
                          "line": 7,
                          "nodes": Array [
                            Object {
                              "filename": "nesting.tokens.json",
                              "line": 7,
                              "type": "Text",
                              "val": "d",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "nesting.tokens.json",
                        "isInline": false,
                        "line": 7,
                        "name": "li",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "nesting.tokens.json",
                  "isInline": false,
                  "line": 5,
                  "name": "ul",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "nesting.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "nesting.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "filename": "nesting.tokens.json",
                  "line": 8,
                  "type": "Text",
                  "val": "e",
                },
              ],
              "type": "Block",
            },
            "filename": "nesting.tokens.json",
            "isInline": false,
            "line": 8,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "nesting.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test pipeless-comments.tokens.json 1`] = `
Object {
  "filename": "pipeless-comments.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "block": Object {
        "filename": "pipeless-comments.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "     .foo",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "	.bar",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": ".hey",
          },
        ],
        "type": "Block",
      },
      "buffer": true,
      "filename": "pipeless-comments.tokens.json",
      "line": 1,
      "type": "BlockComment",
      "val": "",
    },
  ],
  "type": "Block",
}
`;

exports[`test pipeless-filters.tokens.json 1`] = `
Object {
  "filename": "pipeless-filters.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attrs": Array [],
      "block": Object {
        "filename": "pipeless-filters.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "    code sample",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "# Heading",
          },
        ],
        "type": "Block",
      },
      "filename": "pipeless-filters.tokens.json",
      "line": 1,
      "name": "markdown-it",
      "type": "Filter",
    },
  ],
  "type": "Block",
}
`;

exports[`test pipeless-tag.tokens.json 1`] = `
Object {
  "filename": "pipeless-tag.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "pipeless-tag.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "  what",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "is ",
          },
          Object {
            "buffer": true,
            "filename": "pipeless-tag.tokens.json",
            "isInline": true,
            "line": 3,
            "mustEscape": true,
            "type": "Code",
            "val": "\'going\'",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": " ",
          },
          Object {
            "buffer": true,
            "filename": "pipeless-tag.tokens.json",
            "isInline": true,
            "line": 3,
            "mustEscape": true,
            "type": "Code",
            "val": "\'on\'",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "pipeless-tag.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "pre",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test pre.tokens.json 1`] = `
Object {
  "filename": "pre.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "pre.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "foo",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "bar",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "baz",
          },
          Object {
            "line": 5,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 5,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "pre.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "pre",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "pre.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "pre.tokens.json",
              "line": 7,
              "nodes": Array [
                Object {
                  "line": 8,
                  "type": "Text",
                  "val": "foo",
                },
                Object {
                  "line": 9,
                  "type": "Text",
                  "val": "
",
                },
                Object {
                  "line": 9,
                  "type": "Text",
                  "val": "bar",
                },
                Object {
                  "line": 10,
                  "type": "Text",
                  "val": "
",
                },
                Object {
                  "line": 10,
                  "type": "Text",
                  "val": "baz",
                },
              ],
              "type": "Block",
            },
            "filename": "pre.tokens.json",
            "isInline": true,
            "line": 7,
            "name": "code",
            "selfClosing": false,
            "textOnly": true,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "pre.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "pre",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test quotes.tokens.json 1`] = `
Object {
  "filename": "quotes.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "quotes.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "quotes.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "\"foo\"",
          },
        ],
        "type": "Block",
      },
      "filename": "quotes.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "quotes.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "filename": "quotes.tokens.json",
            "line": 2,
            "type": "Text",
            "val": "\'foo\'",
          },
        ],
        "type": "Block",
      },
      "filename": "quotes.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test regression.784.tokens.json 1`] = `
Object {
  "filename": "regression.784.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "regression.784.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var url = \'http://www.google.com\'",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "class",
          "val": "\'url\'",
        },
      ],
      "block": Object {
        "filename": "regression.784.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "regression.784.tokens.json",
            "isInline": true,
            "line": 2,
            "mustEscape": true,
            "type": "Code",
            "val": "url.replace(\'http://\', \'\').replace(/^www\\./, \'\')",
          },
        ],
        "type": "Block",
      },
      "filename": "regression.784.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test regression.1794.tokens.json 1`] = `
Object {
  "filename": "regression.1794.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "file": Object {
        "filename": "regression.1794.tokens.json",
        "line": 1,
        "path": "./auxiliary/1794-extends.pug",
        "type": "FileReference",
      },
      "filename": "regression.1794.tokens.json",
      "line": 1,
      "type": "Extends",
    },
    Object {
      "filename": "regression.1794.tokens.json",
      "line": 3,
      "mode": "replace",
      "name": "content",
      "nodes": Array [
        Object {
          "block": Object {
            "filename": "regression.1794.tokens.json",
            "line": 4,
            "nodes": Array [],
            "type": "Block",
          },
          "file": Object {
            "filename": "regression.1794.tokens.json",
            "line": 4,
            "path": "./auxiliary/1794-include.pug",
            "type": "FileReference",
          },
          "filename": "regression.1794.tokens.json",
          "line": 4,
          "type": "Include",
        },
      ],
      "type": "NamedBlock",
    },
  ],
  "type": "Block",
}
`;

exports[`test script.whitespace.tokens.json 1`] = `
Object {
  "filename": "script.whitespace.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "script.whitespace.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "if (foo) {",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "  ",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "  bar();",
          },
          Object {
            "line": 5,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 5,
            "type": "Text",
            "val": "",
          },
          Object {
            "line": 6,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 6,
            "type": "Text",
            "val": "}",
          },
        ],
        "type": "Block",
      },
      "filename": "script.whitespace.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test scripts.non-js.tokens.json 1`] = `
Object {
  "filename": "scripts.non-js.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "id",
          "val": "\'user-template\'",
        },
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'text/template\'",
        },
      ],
      "block": Object {
        "filename": "scripts.non-js.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": false,
                "name": "id",
                "val": "\'user\'",
              },
            ],
            "block": Object {
              "filename": "scripts.non-js.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "scripts.non-js.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "filename": "scripts.non-js.tokens.json",
                        "line": 3,
                        "type": "Text",
                        "val": "<%= user.name %>",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "scripts.non-js.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "h1",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "scripts.non-js.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "filename": "scripts.non-js.tokens.json",
                        "line": 4,
                        "type": "Text",
                        "val": "<%= user.description %>",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "scripts.non-js.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "scripts.non-js.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "div",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "scripts.non-js.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": false,
          "name": "id",
          "val": "\'user-template\'",
        },
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'text/template\'",
        },
      ],
      "block": Object {
        "filename": "scripts.non-js.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "line": 7,
            "type": "Text",
            "val": "if (foo) {",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "  bar();",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "}",
          },
        ],
        "type": "Block",
      },
      "filename": "scripts.non-js.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "script",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test scripts.tokens.json 1`] = `
Object {
  "filename": "scripts.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "scripts.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "line": 2,
            "type": "Text",
            "val": "if (foo) {",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 3,
            "type": "Text",
            "val": "  bar();",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 4,
            "type": "Text",
            "val": "}",
          },
        ],
        "type": "Block",
      },
      "filename": "scripts.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "scripts.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "buffer": true,
            "filename": "scripts.tokens.json",
            "isInline": true,
            "line": 5,
            "mustEscape": false,
            "type": "Code",
            "val": "\'foo()\'",
          },
        ],
        "type": "Block",
      },
      "filename": "scripts.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "scripts.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "filename": "scripts.tokens.json",
            "line": 6,
            "type": "Text",
            "val": "foo()",
          },
        ],
        "type": "Block",
      },
      "filename": "scripts.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "scripts.tokens.json",
        "line": 7,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "scripts.tokens.json",
      "isInline": false,
      "line": 7,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "scripts.tokens.json",
        "line": 8,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "scripts.tokens.json",
      "isInline": false,
      "line": 8,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test self-closing-html.tokens.json 1`] = `
Object {
  "filename": "self-closing-html.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "self-closing-html.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "html",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "self-closing-html.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "self-closing-html.tokens.json",
              "line": 3,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "self-closing-html.tokens.json",
                    "line": 4,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "self-closing-html.tokens.json",
                  "isInline": true,
                  "line": 4,
                  "name": "br",
                  "selfClosing": true,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "self-closing-html.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "self-closing-html.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test single-period.tokens.json 1`] = `
Object {
  "filename": "single-period.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "single-period.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "single-period.tokens.json",
            "line": 1,
            "type": "Text",
            "val": ".",
          },
        ],
        "type": "Block",
      },
      "filename": "single-period.tokens.json",
      "isInline": true,
      "line": 1,
      "name": "span",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test source.tokens.json 1`] = `
Object {
  "filename": "source.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "source.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "preload",
                "val": "\'auto\'",
              },
              Object {
                "mustEscape": false,
                "name": "autobuffer",
                "val": true,
              },
              Object {
                "mustEscape": false,
                "name": "controls",
                "val": true,
              },
            ],
            "block": Object {
              "filename": "source.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "src",
                      "val": "\'foo\'",
                    },
                  ],
                  "block": Object {
                    "filename": "source.tokens.json",
                    "line": 3,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "source.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "source",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "src",
                      "val": "\'bar\'",
                    },
                  ],
                  "block": Object {
                    "filename": "source.tokens.json",
                    "line": 4,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "source.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "source",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "source.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "audio",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "source.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test styles.tokens.json 1`] = `
Object {
  "filename": "styles.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "styles.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "styles.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "line": 4,
                        "type": "Text",
                        "val": "body {",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 5,
                        "type": "Text",
                        "val": "  padding: 50px;",
                      },
                      Object {
                        "line": 6,
                        "type": "Text",
                        "val": "
",
                      },
                      Object {
                        "line": 6,
                        "type": "Text",
                        "val": "}",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "style",
                  "selfClosing": false,
                  "textOnly": true,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "styles.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "head",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "styles.tokens.json",
              "line": 7,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "style",
                      "val": "\'color:red;background:green\'",
                    },
                  ],
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 8,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 8,
                  "name": "div",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "style",
                      "val": "{color: \'red\', background: \'green\'}",
                    },
                  ],
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 9,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 9,
                  "name": "div",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [
                    "{style: \'color:red;background:green\'}",
                  ],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 10,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 10,
                  "name": "div",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [
                    "{style: {color: \'red\', background: \'green\'}}",
                  ],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 11,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 11,
                  "name": "div",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "args": null,
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 13,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [
                          "attributes",
                        ],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "styles.tokens.json",
                          "line": 13,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "styles.tokens.json",
                        "isInline": false,
                        "line": 13,
                        "name": "div",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "call": false,
                  "filename": "styles.tokens.json",
                  "line": 12,
                  "name": "div",
                  "type": "Mixin",
                },
                Object {
                  "args": null,
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "style",
                      "val": "\'color:red;background:green\'",
                    },
                  ],
                  "block": null,
                  "call": true,
                  "filename": "styles.tokens.json",
                  "line": 14,
                  "name": "div",
                  "type": "Mixin",
                },
                Object {
                  "args": null,
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "style",
                      "val": "{color: \'red\', background: \'green\'}",
                    },
                  ],
                  "block": null,
                  "call": true,
                  "filename": "styles.tokens.json",
                  "line": 15,
                  "name": "div",
                  "type": "Mixin",
                },
                Object {
                  "buffer": false,
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 16,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "var bg = \'green\';",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "style",
                      "val": "{color: \'red\', background: bg}",
                    },
                  ],
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 17,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 17,
                  "name": "div",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [
                    "{style: {color: \'red\', background: bg}}",
                  ],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "styles.tokens.json",
                    "line": 18,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "styles.tokens.json",
                  "isInline": false,
                  "line": 18,
                  "name": "div",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "args": null,
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "style",
                      "val": "{color: \'red\', background: bg}",
                    },
                  ],
                  "block": null,
                  "call": true,
                  "filename": "styles.tokens.json",
                  "line": 19,
                  "name": "div",
                  "type": "Mixin",
                },
              ],
              "type": "Block",
            },
            "filename": "styles.tokens.json",
            "isInline": false,
            "line": 7,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "styles.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test tag.interpolation.tokens.json 1`] = `
Object {
  "filename": "tag.interpolation.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "tag.interpolation.tokens.json",
      "isInline": false,
      "line": 2,
      "mustEscape": false,
      "type": "Code",
      "val": "var tag = \'p\'",
    },
    Object {
      "buffer": false,
      "filename": "tag.interpolation.tokens.json",
      "isInline": false,
      "line": 3,
      "mustEscape": false,
      "type": "Code",
      "val": "var foo = \'bar\'",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "tag.interpolation.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "filename": "tag.interpolation.tokens.json",
            "line": 5,
            "type": "Text",
            "val": "value",
          },
        ],
        "type": "Block",
      },
      "expr": "tag",
      "filename": "tag.interpolation.tokens.json",
      "isInline": false,
      "line": 5,
      "selfClosing": false,
      "type": "InterpolatedTag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "foo",
          "val": "\'bar\'",
        },
      ],
      "block": Object {
        "filename": "tag.interpolation.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "filename": "tag.interpolation.tokens.json",
            "line": 6,
            "type": "Text",
            "val": "value",
          },
        ],
        "type": "Block",
      },
      "expr": "tag",
      "filename": "tag.interpolation.tokens.json",
      "isInline": false,
      "line": 6,
      "selfClosing": false,
      "type": "InterpolatedTag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "something",
          "val": true,
        },
      ],
      "block": Object {
        "filename": "tag.interpolation.tokens.json",
        "line": 7,
        "nodes": Array [
          Object {
            "filename": "tag.interpolation.tokens.json",
            "line": 7,
            "type": "Text",
            "val": "here",
          },
        ],
        "type": "Block",
      },
      "expr": "foo ? \'a\' : \'li\'",
      "filename": "tag.interpolation.tokens.json",
      "isInline": false,
      "line": 7,
      "selfClosing": false,
      "type": "InterpolatedTag",
    },
    Object {
      "args": "icon",
      "block": Object {
        "filename": "tag.interpolation.tokens.json",
        "line": 10,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tag.interpolation.tokens.json",
              "line": 10,
              "nodes": Array [
                Object {
                  "alternate": Object {
                    "filename": "tag.interpolation.tokens.json",
                    "line": 16,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [
                          "attributes",
                        ],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "tag.interpolation.tokens.json",
                          "line": 16,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [
                                Object {
                                  "mustEscape": false,
                                  "name": "class",
                                  "val": "\'icon\'",
                                },
                                Object {
                                  "mustEscape": true,
                                  "name": "src",
                                  "val": "icon",
                                },
                              ],
                              "block": Object {
                                "filename": "tag.interpolation.tokens.json",
                                "line": 17,
                                "nodes": Array [],
                                "type": "Block",
                              },
                              "filename": "tag.interpolation.tokens.json",
                              "isInline": true,
                              "line": 17,
                              "name": "img",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                            Object {
                              "filename": "tag.interpolation.tokens.json",
                              "line": 18,
                              "type": "MixinBlock",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "tag.interpolation.tokens.json",
                        "isInline": true,
                        "line": 16,
                        "name": "span",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "consequent": Object {
                    "filename": "tag.interpolation.tokens.json",
                    "line": 12,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [
                          "attributes",
                        ],
                        "attrs": Array [],
                        "block": Object {
                          "filename": "tag.interpolation.tokens.json",
                          "line": 12,
                          "nodes": Array [
                            Object {
                              "attributeBlocks": Array [],
                              "attrs": Array [
                                Object {
                                  "mustEscape": false,
                                  "name": "class",
                                  "val": "\'icon\'",
                                },
                                Object {
                                  "mustEscape": true,
                                  "name": "src",
                                  "val": "icon",
                                },
                              ],
                              "block": Object {
                                "filename": "tag.interpolation.tokens.json",
                                "line": 13,
                                "nodes": Array [],
                                "type": "Block",
                              },
                              "filename": "tag.interpolation.tokens.json",
                              "isInline": true,
                              "line": 13,
                              "name": "img",
                              "selfClosing": false,
                              "type": "Tag",
                            },
                            Object {
                              "filename": "tag.interpolation.tokens.json",
                              "line": 14,
                              "type": "MixinBlock",
                            },
                          ],
                          "type": "Block",
                        },
                        "filename": "tag.interpolation.tokens.json",
                        "isInline": true,
                        "line": 12,
                        "name": "a",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "tag.interpolation.tokens.json",
                  "line": 11,
                  "test": "attributes.href",
                  "type": "Conditional",
                },
              ],
              "type": "Block",
            },
            "filename": "tag.interpolation.tokens.json",
            "isInline": false,
            "line": 10,
            "name": "li",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "call": false,
      "filename": "tag.interpolation.tokens.json",
      "line": 9,
      "name": "item",
      "type": "Mixin",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "tag.interpolation.tokens.json",
        "line": 20,
        "nodes": Array [
          Object {
            "args": "\'contact\'",
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tag.interpolation.tokens.json",
              "line": 21,
              "nodes": Array [
                Object {
                  "filename": "tag.interpolation.tokens.json",
                  "line": 21,
                  "type": "Text",
                  "val": "Contact",
                },
              ],
              "type": "Block",
            },
            "call": true,
            "filename": "tag.interpolation.tokens.json",
            "line": 21,
            "name": "item",
            "type": "Mixin",
          },
          Object {
            "args": null,
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "href",
                "val": "\'/contact\'",
              },
            ],
            "block": Object {
              "filename": "tag.interpolation.tokens.json",
              "line": 22,
              "nodes": Array [
                Object {
                  "filename": "tag.interpolation.tokens.json",
                  "line": 22,
                  "type": "Text",
                  "val": "Contact",
                },
              ],
              "type": "Block",
            },
            "call": true,
            "filename": "tag.interpolation.tokens.json",
            "line": 22,
            "name": "item",
            "type": "Mixin",
          },
        ],
        "type": "Block",
      },
      "filename": "tag.interpolation.tokens.json",
      "isInline": false,
      "line": 20,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test tag-blocks.tokens.json 1`] = `
Object {
  "filename": "tag-blocks.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": true,
      "filename": "tag-blocks.tokens.json",
      "line": 1,
      "type": "Comment",
      "val": " we should not get blocks within blocks",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "tag-blocks.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "filename": "tag-blocks.tokens.json",
            "line": 3,
            "nodes": Array [
              Object {
                "filename": "tag-blocks.tokens.json",
                "line": 3,
                "type": "Text",
                "val": "We have sent an e-mail to ",
              },
              Object {
                "attributeBlocks": Array [],
                "attrs": Array [],
                "block": Object {
                  "filename": "tag-blocks.tokens.json",
                  "line": 3,
                  "nodes": Array [
                    Object {
                      "buffer": true,
                      "filename": "tag-blocks.tokens.json",
                      "isInline": true,
                      "line": 3,
                      "mustEscape": true,
                      "type": "Code",
                      "val": "this.props.email",
                    },
                  ],
                  "type": "Block",
                },
                "filename": "tag-blocks.tokens.json",
                "isInline": true,
                "line": 3,
                "name": "strong",
                "selfClosing": false,
                "type": "Tag",
              },
              Object {
                "filename": "tag-blocks.tokens.json",
                "line": 3,
                "type": "Text",
                "val": ".  Please click the link in the e-mail",
              },
            ],
            "type": "Block",
          },
          Object {
            "buffer": true,
            "filename": "tag-blocks.tokens.json",
            "isInline": false,
            "line": 4,
            "mustEscape": true,
            "type": "Code",
            "val": "\'  \'",
          },
          Object {
            "filename": "tag-blocks.tokens.json",
            "line": 5,
            "type": "Text",
            "val": "to confirm your e-mail address.",
          },
        ],
        "type": "Block",
      },
      "filename": "tag-blocks.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "div",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test tags.self-closing.tokens.json 1`] = `
Object {
  "filename": "tags.self-closing.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "tags.self-closing.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 3,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "foo",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "bar",
                "val": "\'baz\'",
              },
            ],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 4,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "foo",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 5,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 5,
            "name": "foo",
            "selfClosing": true,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "bar",
                "val": "\'baz\'",
              },
            ],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 6,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 6,
            "name": "foo",
            "selfClosing": true,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 7,
              "nodes": Array [
                Object {
                  "filename": "tags.self-closing.tokens.json",
                  "line": 7,
                  "type": "Text",
                  "val": "/",
                },
              ],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 7,
            "name": "foo",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "bar",
                "val": "\'baz\'",
              },
            ],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 8,
              "nodes": Array [
                Object {
                  "filename": "tags.self-closing.tokens.json",
                  "line": 8,
                  "type": "Text",
                  "val": "/",
                },
              ],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 8,
            "name": "foo",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 9,
              "nodes": Array [],
              "type": "Block",
            },
            "expr": "\'foo\'",
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 9,
            "selfClosing": true,
            "type": "InterpolatedTag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "bar",
                "val": "\'baz\'",
              },
            ],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 10,
              "nodes": Array [],
              "type": "Block",
            },
            "expr": "\'foo\'",
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 10,
            "selfClosing": true,
            "type": "InterpolatedTag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 11,
              "nodes": Array [
                Object {
                  "filename": "tags.self-closing.tokens.json",
                  "line": 11,
                  "type": "Text",
                  "val": "/",
                },
              ],
              "type": "Block",
            },
            "expr": "\'foo\'",
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 11,
            "selfClosing": false,
            "type": "InterpolatedTag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "bar",
                "val": "\'baz\'",
              },
            ],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 12,
              "nodes": Array [
                Object {
                  "filename": "tags.self-closing.tokens.json",
                  "line": 12,
                  "type": "Text",
                  "val": "/",
                },
              ],
              "type": "Block",
            },
            "expr": "\'foo\'",
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 12,
            "selfClosing": false,
            "type": "InterpolatedTag",
          },
          Object {
            "buffer": false,
            "filename": "tags.self-closing.tokens.json",
            "line": 13,
            "type": "Comment",
            "val": " can have a single space after them",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 14,
              "nodes": Array [
                Object {
                  "filename": "tags.self-closing.tokens.json",
                  "line": 14,
                  "type": "Text",
                  "val": " ",
                },
              ],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": true,
            "line": 14,
            "name": "img",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "buffer": false,
            "filename": "tags.self-closing.tokens.json",
            "line": 15,
            "type": "Comment",
            "val": " can have lots of white space after them",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 16,
              "nodes": Array [
                Object {
                  "filename": "tags.self-closing.tokens.json",
                  "line": 16,
                  "type": "Text",
                  "val": "   ",
                },
              ],
              "type": "Block",
            },
            "filename": "tags.self-closing.tokens.json",
            "isInline": true,
            "line": 16,
            "name": "img",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "tags.self-closing.tokens.json",
              "line": 17,
              "nodes": Array [],
              "type": "Block",
            },
            "expr": "
    \'foo\'
  ",
            "filename": "tags.self-closing.tokens.json",
            "isInline": false,
            "line": 17,
            "selfClosing": true,
            "type": "InterpolatedTag",
          },
        ],
        "type": "Block",
      },
      "filename": "tags.self-closing.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "body",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test template.tokens.json 1`] = `
Object {
  "filename": "template.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'text/x-template\'",
        },
      ],
      "block": Object {
        "filename": "template.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "template.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "template.tokens.json",
                    "line": 3,
                    "nodes": Array [
                      Object {
                        "filename": "template.tokens.json",
                        "line": 3,
                        "type": "Text",
                        "val": "{{title}}",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "template.tokens.json",
                  "isInline": false,
                  "line": 3,
                  "name": "h2",
                  "selfClosing": false,
                  "type": "Tag",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "template.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "filename": "template.tokens.json",
                        "line": 4,
                        "type": "Text",
                        "val": "{{description}}",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "template.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "name": "p",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "template.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "article",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "template.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "script",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "type",
          "val": "\'text/x-template\'",
        },
      ],
      "block": Object {
        "filename": "template.tokens.json",
        "line": 6,
        "nodes": Array [
          Object {
            "line": 7,
            "type": "Text",
            "val": "article",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 8,
            "type": "Text",
            "val": "  h2 {{title}}",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 9,
            "type": "Text",
            "val": "  p {{description}}",
          },
        ],
        "type": "Block",
      },
      "filename": "template.tokens.json",
      "isInline": false,
      "line": 6,
      "name": "script",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test text.tokens.json 1`] = `
Object {
  "filename": "text.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "value",
          "val": "\'\'",
        },
      ],
      "block": Object {
        "filename": "text.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "text.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "-- (selected) --",
          },
        ],
        "type": "Block",
      },
      "filename": "text.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "option",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "text.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text.tokens.json",
        "line": 5,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "text.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "p",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text.tokens.json",
        "line": 7,
        "nodes": Array [
          Object {
            "filename": "text.tokens.json",
            "line": 8,
            "nodes": Array [
              Object {
                "filename": "text.tokens.json",
                "line": 8,
                "type": "Text",
                "val": "foo",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 9,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 9,
                "type": "Text",
                "val": "bar",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 10,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 10,
                "type": "Text",
                "val": "baz",
              },
            ],
            "type": "Block",
          },
        ],
        "type": "Block",
      },
      "filename": "text.tokens.json",
      "isInline": false,
      "line": 7,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text.tokens.json",
        "line": 12,
        "nodes": Array [
          Object {
            "line": 13,
            "type": "Text",
            "val": "foo",
          },
          Object {
            "line": 14,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 14,
            "type": "Text",
            "val": "",
          },
          Object {
            "line": 15,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 15,
            "type": "Text",
            "val": "",
          },
          Object {
            "line": 16,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 16,
            "type": "Text",
            "val": "bar",
          },
          Object {
            "line": 17,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 17,
            "type": "Text",
            "val": "baz",
          },
          Object {
            "line": 18,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 18,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "text.tokens.json",
      "isInline": false,
      "line": 12,
      "name": "p",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
    Object {
      "filename": "text.tokens.json",
      "line": 21,
      "nodes": Array [
        Object {
          "line": 22,
          "type": "Text",
          "val": "foo",
        },
        Object {
          "line": 23,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 23,
          "type": "Text",
          "val": "",
        },
        Object {
          "line": 24,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 24,
          "type": "Text",
          "val": "",
        },
        Object {
          "line": 25,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 25,
          "type": "Text",
          "val": "bar",
        },
        Object {
          "line": 26,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 26,
          "type": "Text",
          "val": "baz",
        },
        Object {
          "line": 27,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 27,
          "type": "Text",
          "val": "",
        },
      ],
      "type": "Block",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text.tokens.json",
        "line": 28,
        "nodes": Array [
          Object {
            "filename": "text.tokens.json",
            "line": 29,
            "nodes": Array [
              Object {
                "filename": "text.tokens.json",
                "line": 29,
                "type": "Text",
                "val": "foo",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 30,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 30,
                "type": "Text",
                "val": "  bar",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 31,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 31,
                "type": "Text",
                "val": "    baz",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 32,
                "type": "Text",
                "val": "
",
              },
              Object {
                "filename": "text.tokens.json",
                "line": 32,
                "type": "Text",
                "val": ".",
              },
            ],
            "type": "Block",
          },
        ],
        "type": "Block",
      },
      "filename": "text.tokens.json",
      "isInline": false,
      "line": 28,
      "name": "pre",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text.tokens.json",
        "line": 34,
        "nodes": Array [
          Object {
            "line": 35,
            "type": "Text",
            "val": "foo",
          },
          Object {
            "line": 36,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 36,
            "type": "Text",
            "val": "  bar",
          },
          Object {
            "line": 37,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 37,
            "type": "Text",
            "val": "    baz",
          },
          Object {
            "line": 38,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 38,
            "type": "Text",
            "val": ".",
          },
          Object {
            "line": 39,
            "type": "Text",
            "val": "
",
          },
          Object {
            "line": 39,
            "type": "Text",
            "val": "",
          },
        ],
        "type": "Block",
      },
      "filename": "text.tokens.json",
      "isInline": false,
      "line": 34,
      "name": "pre",
      "selfClosing": false,
      "textOnly": true,
      "type": "Tag",
    },
    Object {
      "filename": "text.tokens.json",
      "line": 40,
      "nodes": Array [
        Object {
          "line": 41,
          "type": "Text",
          "val": "foo",
        },
        Object {
          "line": 42,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 42,
          "type": "Text",
          "val": "  bar",
        },
        Object {
          "line": 43,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 43,
          "type": "Text",
          "val": "    baz",
        },
        Object {
          "line": 44,
          "type": "Text",
          "val": "
",
        },
        Object {
          "line": 44,
          "type": "Text",
          "val": ".",
        },
      ],
      "type": "Block",
    },
  ],
  "type": "Block",
}
`;

exports[`test text-block.tokens.json 1`] = `
Object {
  "filename": "text-block.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text-block.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "filename": "text-block.tokens.json",
            "line": 2,
            "type": "Text",
            "val": "Username:",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "type",
                "val": "\'text\'",
              },
              Object {
                "mustEscape": true,
                "name": "name",
                "val": "\'user[name]\'",
              },
            ],
            "block": Object {
              "filename": "text-block.tokens.json",
              "line": 3,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "text-block.tokens.json",
            "isInline": false,
            "line": 3,
            "name": "input",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "text-block.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "label",
      "selfClosing": false,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "text-block.tokens.json",
        "line": 5,
        "nodes": Array [
          Object {
            "filename": "text-block.tokens.json",
            "line": 5,
            "type": "Text",
            "val": "Password:",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "type",
                "val": "\'text\'",
              },
              Object {
                "mustEscape": true,
                "name": "name",
                "val": "\'user[pass]\'",
              },
            ],
            "block": Object {
              "filename": "text-block.tokens.json",
              "line": 6,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "text-block.tokens.json",
            "isInline": false,
            "line": 6,
            "name": "input",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "text-block.tokens.json",
      "isInline": false,
      "line": 5,
      "name": "label",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test utf8bom.tokens.json 1`] = `
Object {
  "filename": "utf8bom.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "utf8bom.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "filename": "utf8bom.tokens.json",
            "line": 1,
            "type": "Text",
            "val": "\"foo\"",
          },
        ],
        "type": "Block",
      },
      "filename": "utf8bom.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "p",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test vars.tokens.json 1`] = `
Object {
  "filename": "vars.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "vars.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var foo = \'bar\'",
    },
    Object {
      "buffer": false,
      "filename": "vars.tokens.json",
      "isInline": false,
      "line": 2,
      "mustEscape": false,
      "type": "Code",
      "val": "var list = [1,2,3]",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "class",
          "val": "list",
        },
        Object {
          "mustEscape": true,
          "name": "id",
          "val": "foo",
        },
      ],
      "block": Object {
        "filename": "vars.tokens.json",
        "line": 3,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "vars.tokens.json",
      "isInline": true,
      "line": 3,
      "name": "a",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test while.tokens.json 1`] = `
Object {
  "filename": "while.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "buffer": false,
      "filename": "while.tokens.json",
      "isInline": false,
      "line": 1,
      "mustEscape": false,
      "type": "Code",
      "val": "var x = 1;",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "while.tokens.json",
        "line": 2,
        "nodes": Array [
          Object {
            "block": Object {
              "filename": "while.tokens.json",
              "line": 4,
              "nodes": Array [
                Object {
                  "buffer": false,
                  "filename": "while.tokens.json",
                  "isInline": false,
                  "line": 4,
                  "mustEscape": false,
                  "type": "Code",
                  "val": "x++;",
                },
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [],
                  "block": Object {
                    "filename": "while.tokens.json",
                    "line": 5,
                    "nodes": Array [
                      Object {
                        "buffer": true,
                        "filename": "while.tokens.json",
                        "isInline": true,
                        "line": 5,
                        "mustEscape": true,
                        "type": "Code",
                        "val": "x",
                      },
                    ],
                    "type": "Block",
                  },
                  "filename": "while.tokens.json",
                  "isInline": false,
                  "line": 5,
                  "name": "li",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "while.tokens.json",
            "line": 3,
            "test": "x < 10",
            "type": "While",
          },
        ],
        "type": "Block",
      },
      "filename": "while.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "ul",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test xml.tokens.json 1`] = `
Object {
  "filename": "xml.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "filename": "xml.tokens.json",
      "line": 1,
      "type": "Doctype",
      "val": "xml",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [
        Object {
          "mustEscape": true,
          "name": "term",
          "val": "\'some term\'",
        },
      ],
      "block": Object {
        "filename": "xml.tokens.json",
        "line": 2,
        "nodes": Array [],
        "type": "Block",
      },
      "filename": "xml.tokens.json",
      "isInline": false,
      "line": 2,
      "name": "category",
      "selfClosing": true,
      "type": "Tag",
    },
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "xml.tokens.json",
        "line": 3,
        "nodes": Array [
          Object {
            "filename": "xml.tokens.json",
            "line": 3,
            "type": "Text",
            "val": "http://google.com",
          },
        ],
        "type": "Block",
      },
      "filename": "xml.tokens.json",
      "isInline": false,
      "line": 3,
      "name": "link",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test yield.tokens.json 1`] = `
Object {
  "filename": "yield.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "yield.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "yield.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "block": Object {
                    "filename": "yield.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "src",
                            "val": "\'/caustic.js\'",
                          },
                        ],
                        "block": Object {
                          "filename": "yield.tokens.json",
                          "line": 4,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "yield.tokens.json",
                        "isInline": false,
                        "line": 4,
                        "name": "script",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "src",
                            "val": "\'/app.js\'",
                          },
                        ],
                        "block": Object {
                          "filename": "yield.tokens.json",
                          "line": 5,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "yield.tokens.json",
                        "isInline": false,
                        "line": 5,
                        "name": "script",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "file": Object {
                    "filename": "yield.tokens.json",
                    "line": 3,
                    "path": "yield-head.pug",
                    "type": "FileReference",
                  },
                  "filename": "yield.tokens.json",
                  "line": 3,
                  "type": "Include",
                },
              ],
              "type": "Block",
            },
            "filename": "yield.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "yield.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test yield-before-conditional.tokens.json 1`] = `
Object {
  "filename": "yield-before-conditional.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "yield-before-conditional.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "yield-before-conditional.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "block": Object {
                    "filename": "yield-before-conditional.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "src",
                            "val": "\'/caustic.js\'",
                          },
                        ],
                        "block": Object {
                          "filename": "yield-before-conditional.tokens.json",
                          "line": 4,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "yield-before-conditional.tokens.json",
                        "isInline": false,
                        "line": 4,
                        "name": "script",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                      Object {
                        "attributeBlocks": Array [],
                        "attrs": Array [
                          Object {
                            "mustEscape": true,
                            "name": "src",
                            "val": "\'/app.js\'",
                          },
                        ],
                        "block": Object {
                          "filename": "yield-before-conditional.tokens.json",
                          "line": 5,
                          "nodes": Array [],
                          "type": "Block",
                        },
                        "filename": "yield-before-conditional.tokens.json",
                        "isInline": false,
                        "line": 5,
                        "name": "script",
                        "selfClosing": false,
                        "type": "Tag",
                      },
                    ],
                    "type": "Block",
                  },
                  "file": Object {
                    "filename": "yield-before-conditional.tokens.json",
                    "line": 3,
                    "path": "yield-before-conditional-head.pug",
                    "type": "FileReference",
                  },
                  "filename": "yield-before-conditional.tokens.json",
                  "line": 3,
                  "type": "Include",
                },
              ],
              "type": "Block",
            },
            "filename": "yield-before-conditional.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "yield-before-conditional.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test yield-before-conditional-head.tokens.json 1`] = `
Object {
  "filename": "yield-before-conditional-head.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "yield-before-conditional-head.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "src",
                "val": "\'/jquery.js\'",
              },
            ],
            "block": Object {
              "filename": "yield-before-conditional-head.tokens.json",
              "line": 2,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "yield-before-conditional-head.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "script",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "filename": "yield-before-conditional-head.tokens.json",
            "line": 3,
            "type": "YieldBlock",
          },
          Object {
            "alternate": null,
            "consequent": Object {
              "filename": "yield-before-conditional-head.tokens.json",
              "line": 5,
              "nodes": Array [
                Object {
                  "attributeBlocks": Array [],
                  "attrs": Array [
                    Object {
                      "mustEscape": true,
                      "name": "src",
                      "val": "\'/jquery.ui.js\'",
                    },
                  ],
                  "block": Object {
                    "filename": "yield-before-conditional-head.tokens.json",
                    "line": 5,
                    "nodes": Array [],
                    "type": "Block",
                  },
                  "filename": "yield-before-conditional-head.tokens.json",
                  "isInline": false,
                  "line": 5,
                  "name": "script",
                  "selfClosing": false,
                  "type": "Tag",
                },
              ],
              "type": "Block",
            },
            "filename": "yield-before-conditional-head.tokens.json",
            "line": 4,
            "test": "false",
            "type": "Conditional",
          },
        ],
        "type": "Block",
      },
      "filename": "yield-before-conditional-head.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "head",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test yield-head.tokens.json 1`] = `
Object {
  "filename": "yield-head.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "yield-head.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "src",
                "val": "\'/jquery.js\'",
              },
            ],
            "block": Object {
              "filename": "yield-head.tokens.json",
              "line": 2,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "yield-head.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "script",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "filename": "yield-head.tokens.json",
            "line": 3,
            "type": "YieldBlock",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "src",
                "val": "\'/jquery.ui.js\'",
              },
            ],
            "block": Object {
              "filename": "yield-head.tokens.json",
              "line": 4,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "yield-head.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "script",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "yield-head.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "head",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test yield-title.tokens.json 1`] = `
Object {
  "filename": "yield-title.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "yield-title.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "yield-title.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "block": Object {
                    "filename": "yield-title.tokens.json",
                    "line": 4,
                    "nodes": Array [
                      Object {
                        "filename": "yield-title.tokens.json",
                        "line": 4,
                        "type": "Text",
                        "val": "My Title",
                      },
                    ],
                    "type": "Block",
                  },
                  "file": Object {
                    "filename": "yield-title.tokens.json",
                    "line": 3,
                    "path": "yield-title-head.pug",
                    "type": "FileReference",
                  },
                  "filename": "yield-title.tokens.json",
                  "line": 3,
                  "type": "Include",
                },
              ],
              "type": "Block",
            },
            "filename": "yield-title.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "body",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "yield-title.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "html",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;

exports[`test yield-title-head.tokens.json 1`] = `
Object {
  "filename": "yield-title-head.tokens.json",
  "line": 0,
  "nodes": Array [
    Object {
      "attributeBlocks": Array [],
      "attrs": Array [],
      "block": Object {
        "filename": "yield-title-head.tokens.json",
        "line": 1,
        "nodes": Array [
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [],
            "block": Object {
              "filename": "yield-title-head.tokens.json",
              "line": 2,
              "nodes": Array [
                Object {
                  "filename": "yield-title-head.tokens.json",
                  "line": 3,
                  "type": "YieldBlock",
                },
              ],
              "type": "Block",
            },
            "filename": "yield-title-head.tokens.json",
            "isInline": false,
            "line": 2,
            "name": "title",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "src",
                "val": "\'/jquery.js\'",
              },
            ],
            "block": Object {
              "filename": "yield-title-head.tokens.json",
              "line": 4,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "yield-title-head.tokens.json",
            "isInline": false,
            "line": 4,
            "name": "script",
            "selfClosing": false,
            "type": "Tag",
          },
          Object {
            "attributeBlocks": Array [],
            "attrs": Array [
              Object {
                "mustEscape": true,
                "name": "src",
                "val": "\'/jquery.ui.js\'",
              },
            ],
            "block": Object {
              "filename": "yield-title-head.tokens.json",
              "line": 5,
              "nodes": Array [],
              "type": "Block",
            },
            "filename": "yield-title-head.tokens.json",
            "isInline": false,
            "line": 5,
            "name": "script",
            "selfClosing": false,
            "type": "Tag",
          },
        ],
        "type": "Block",
      },
      "filename": "yield-title-head.tokens.json",
      "isInline": false,
      "line": 1,
      "name": "head",
      "selfClosing": false,
      "type": "Tag",
    },
  ],
  "type": "Block",
}
`;
