Full Code of posthtml/posthtml-include for AI

master 8f5da6627d04 cached
43 files
67.6 KB
26.4k tokens
1 requests
Download .txt
Repository: posthtml/posthtml-include
Branch: master
Commit: 8f5da6627d04
Files: 43
Total size: 67.6 KB

Directory structure:
gitextract_pjkmsduc/

├── .editorconfig
├── .github/
│   ├── funding.yml
│   └── workflows/
│       └── nodejs.yml
├── .gitignore
├── .nycrc
├── LICENSE
├── README.md
├── lib/
│   └── index.js
├── package.json
├── test/
│   ├── expected/
│   │   ├── basic.html
│   │   ├── global-variables.html
│   │   ├── inner-locals-big-json.html
│   │   ├── inner-locals-not-json.html
│   │   ├── inner-locals.html
│   │   ├── locals-not-json.html
│   │   ├── locals.html
│   │   ├── multiple-include.html
│   │   ├── nested.html
│   │   ├── not-clear-rest.html
│   │   ├── override-global-variables.html
│   │   └── root.html
│   ├── fixtures/
│   │   ├── basic.html
│   │   ├── blocks/
│   │   │   ├── button/
│   │   │   │   └── button.html
│   │   │   └── partial/
│   │   │       └── phone.html
│   │   ├── global-variables.html
│   │   ├── includes/
│   │   │   ├── 1.html
│   │   │   ├── 2.html
│   │   │   ├── 3.html
│   │   │   ├── 4.html
│   │   │   ├── 5.html
│   │   │   └── 6.html
│   │   ├── inner-locals-big-json.html
│   │   ├── inner-locals-not-json.html
│   │   ├── inner-locals.html
│   │   ├── locals-not-json.html
│   │   ├── locals.html
│   │   ├── multiple-include.html
│   │   ├── nested.html
│   │   ├── not-clear-rest.html
│   │   ├── override-global-variables.html
│   │   └── root.html
│   └── test.js
└── xo.config.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
indent_size = 2
indent_style = space
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false


================================================
FILE: .github/funding.yml
================================================
# These are supported funding model platforms

github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: posthtml
open_collective: posthtml
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']


================================================
FILE: .github/workflows/nodejs.yml
================================================
name: Actions Status
on:
  pull_request:
    types: [opened, synchronize]
    branches:
      - master
env:
  CI: true

jobs:
  run:
    name: Node ${{ matrix.node }} on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}

    strategy:
      fail-fast: false
      matrix:
        node: [12, 14, 16]
        os: [ubuntu-latest]

    steps:
      - name: Clone repository
        uses: actions/checkout@v2

      - name: Set Node.js version
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node }}

      - name: Install npm dependencies
        run: npm ci

      - name: Run tests
        run: npm run test

      - name: Run Coveralls
        uses: coverallsapp/github-action@master
        with:
          github-token: "${{ secrets.GITHUB_TOKEN }}"


================================================
FILE: .gitignore
================================================
node_modules
coverage
.nyc_output
*.log


================================================
FILE: .nycrc
================================================
{
  "reporter": ["lcov", "text"]
}

================================================
FILE: LICENSE
================================================
MIT License (MIT)

Copyright (c) PostHTML Ivan Voischev

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
[![Actions Status][action]][action-url]
[![NPM][npm]][npm-url]
[![Coverage][cover]][cover-url]

<div align="center">
  <img width="220" height="150" title="PostHTML" src="http://posthtml.github.io/posthtml/logo.svg">
  <h1>Include Plugin</h1>
</div>

<h2 align="center">Install</h2>

```bash
npm i -D posthtml-include
```

<h2 align="center">Usage</h2>

```js
const { readFileSync } = require('fs')

const posthtml = require('posthtml')
const include = require('posthtml-include')

const html = readFileSync('index.html')

posthtml([ include({ encoding: 'utf8' }) ])
    .process(html)
    .then((result) => console.log(result.html))
```

### Options

__root__: Root directory for include. Default `process.cwd()`

__cwd__: Current working directory for include. Default `process.cwd()`

__encoding__: Default `utf-8`

__posthtmlExpressionsOptions__: Array to pass options posthtml-expression

### Component options
__locals__: Object containing any local variables that you want to be accessible inside the include component

<h2 align="center">Usage</h2>

__index.html__

```html
<html>
<head>
    <title>index.html</title>
</head>
<body>
    <include src="components/button.html" locals='{
        "text": "Button"
    }'></include>
</body>
</html>
```

__components/button.html__
```html
<button class="button"><div class="button__text">{{ text }}</div></button>
```

```js
const { readFileSync } = require('fs')

const posthtml = require('posthtml')
const include = require('posthtml-include')

const html = readFileSync('index.html')

posthtml([ include({ encoding: 'utf8' }) ])
    .process(html)
    .then((result) => console.log(result.html))
```

```html
<html>
<head>
  <title>index.html</title>
</head>
<body>
  <button class="button">
    <div class="button__text">Button</div>
  </button>
</body>
</html>
```

You can also pass your locals directly on the \<include> content, just drop a JSON there. When doing it, all the "\n" chars will be removed from your data.
If you need "\n" chars on your data, you can still use the "locals" attribute.

```html
<include src="components/button.html">
  {
    "text": "Button"
  }
</include>
```

> **Note:** Also supports multi nesting.

<h2 align="center">LICENSE</h2>

> MIT License (MIT)

> Copyright (c) PostHTML Ivan Voischev

> Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

> The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

[action]: https://github.com/posthtml/posthtml-include/workflows/Actions%20Status/badge.svg?style=flat-square
[action-url]: https://github.com/posthtml/posthtml-include/actions?query=workflow%3A%22CI+tests%22

[npm]: https://img.shields.io/npm/v/posthtml-include.svg
[npm-url]: https://npmjs.com/package/posthtml-include

[cover]: https://coveralls.io/repos/github/posthtml/posthtml-include/badge.svg?branch=master
[cover-url]: https://coveralls.io/github/posthtml/posthtml-include?branch=master


================================================
FILE: lib/index.js
================================================
'use strict';

const fs = require('fs');
const path = require('path');
const posthtml = require('posthtml');
const {parser} = require('posthtml-parser');
const {match} = require('posthtml/lib/api');
const expressions = require('posthtml-expressions');

module.exports = (options = {}) => {
  options.root = options.root ? path.resolve(options.root) : process.cwd();
  options.encoding = options.encoding || 'utf-8';

  return function posthtmlInclude(tree) {
    const cwd = options.cwd ?
      path.resolve(options.cwd) :
      (tree.options.from ?
        path.dirname(path.resolve(tree.options.from)) :
        process.cwd());

    tree.parser = tree.parser || parser;
    tree.match = tree.match || match;

    tree.match({tag: 'include'}, node => {
      let src = node.attrs.src || false;
      let content;
      let subtree;
      let source;
      let posthtmlExpressionsOptions = options.posthtmlExpressionsOptions || {
        locals: false
      };
      if (options.delimiters) {
        posthtmlExpressionsOptions.delimiters = options.delimiters;
      }

      if (src) {
        src = path.isAbsolute(src) ?
          path.resolve(cwd, src) :
          path.join(options.root, src);
        source = fs.readFileSync(src, options.encoding);

        try {
          const localsRaw =
            node.attrs.locals ||
            (node.content ? node.content.join().replace(/\n/g, '') : false);
          const localsJson = JSON.parse(localsRaw);
          posthtmlExpressionsOptions = {
            ...posthtmlExpressionsOptions,
            locals: posthtmlExpressionsOptions.locals ? {...posthtmlExpressionsOptions.locals, ...localsJson} : localsJson
          };
        } catch {}

        if (posthtmlExpressionsOptions.locals) {
          const result = posthtml()
            .use(expressions(posthtmlExpressionsOptions))
            .process(source, {sync: true});
          source = result.html;
        }

        subtree = tree.parser(source);
        subtree.options = subtree.options || {};
        subtree.options.from = path.isAbsolute(src) ?
          src :
          (tree.options.from ?
            path.relative(tree.options.from, src) :
            src);
        subtree.match = tree.match;
        subtree.parser = tree.parser;
        subtree.messages = tree.messages;
        content = source.includes('include') ?
          posthtmlInclude(subtree) :
          subtree;

        if (tree.messages) {
          tree.messages.push({
            type: 'dependency',
            file: src
          });
        }
      }

      return {
        tag: false,
        content
      };
    });

    return tree;
  };
};


================================================
FILE: package.json
================================================
{
  "name": "posthtml-include",
  "version": "2.0.1",
  "description": "Include files in HTML",
  "license": "MIT",
  "author": "Ivan Voischev <voischev.ivan@ya.ru>",
  "bugs": "https://github.com/posthtml/posthtml-include/issues",
  "homepage": "https://github.com/posthtml/posthtml-include",
  "repository": "posthtml/posthtml-include",
  "main": "lib",
  "files": [
    "lib"
  ],
  "engines": {
    "node": ">=12"
  },
  "scripts": {
    "test": "nyc ava",
    "pretest": "xo"
  },
  "keywords": [
    "html",
    "include",
    "postproccessor",
    "parser",
    "transform",
    "manipulation"
  ],
  "dependencies": {
    "posthtml": "^0.16.6",
    "posthtml-expressions": "^1.7.1",
    "posthtml-parser": "^0.11.0"
  },
  "devDependencies": {
    "ava": "^4.1.0",
    "nyc": "^15.1.0",
    "xo": "^0.37.1"
  }
}


================================================
FILE: test/expected/basic.html
================================================
<div class="button"><div class="button__text">Text</div></div>


================================================
FILE: test/expected/global-variables.html
================================================
<div>Should merge global locals</div>
<div>local</div>
<div>global</div>


================================================
FILE: test/expected/inner-locals-big-json.html
================================================
<h1>index</h1>

<ul>
  <li>5f80a36f5be511b1fc7afb87</li>
  <li>0</li>
  <li>0bc2e2bc-69f5-4fa4-9d05-3167ed5e33f2</li>
  <li>false</li>
  <li>$1,307.93</li>
  <li>http://placehold.it/32x32</li>
  <li>28</li>
  <li>blue</li>
  <li>Blankenship Schneider</li>
  <li>male</li>
  <li>EXOVENT</li>
  <li>blankenshipschneider@exovent.com</li>
  <li>+1 (885) 459-3832</li>
  <li>420 Farragut Place, Brazos, Kentucky, 2848</li>
  <li>Ex sit proident velit ut enim dolore. Tempor proident aliqua fugiat tempor excepteur magna anim elit.</li>
  <li>2014-06-12T05:37:51 +03:00</li>
  <li>-71.554141</li>
  <li>-73.693833</li>
  <li>0</li>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
  <li>11</li>
  <li>12</li>
  <li>13</li>
  <li>14</li>
  <li>15</li>
  <li>16</li>
  <li>17</li>
  <li>18</li>
  <li>19</li>
  <li>20</li>
  <li>21</li>
  <li>22</li>
  <li>23</li>
  <li>24</li>
  <li>25</li>
  <li>26</li>
  <li>27</li>
  <li>28</li>
  <li>29</li>
  <li>30</li>
  <li>31</li>
  <li>32</li>
  <li>33</li>
  <li>34</li>
  <li>35</li>
  <li>36</li>
  <li>37</li>
  <li>38</li>
  <li>39</li>
  <li>40</li>
  <li>41</li>
  <li>42</li>
  <li>43</li>
  <li>44</li>
  <li>45</li>
  <li>46</li>
  <li>47</li>
  <li>48</li>
  <li>49</li>
  <li>50</li>
  <li>51</li>
  <li>52</li>
  <li>53</li>
  <li>54</li>
  <li>55</li>
  <li>56</li>
  <li>57</li>
  <li>58</li>
  <li>59</li>
  <li>60</li>
  <li>61</li>
  <li>62</li>
  <li>63</li>
  <li>64</li>
  <li>65</li>
  <li>66</li>
  <li>67</li>
  <li>68</li>
  <li>69</li>
  <li>70</li>
  <li>71</li>
  <li>72</li>
  <li>73</li>
  <li>74</li>
  <li>75</li>
  <li>76</li>
  <li>77</li>
  <li>78</li>
  <li>79</li>
  <li>80</li>
  <li>81</li>
  <li>82</li>
  <li>83</li>
  <li>84</li>
  <li>85</li>
  <li>86</li>
  <li>87</li>
  <li>88</li>
  <li>89</li>
  <li>90</li>
  <li>91</li>
  <li>92</li>
  <li>93</li>
  <li>94</li>
  <li>95</li>
  <li>96</li>
  <li>97</li>
  <li>98</li>
  <li>99</li>
  <li>100</li>
  <li>101</li>
  <li>102</li>
  <li>103</li>
  <li>104</li>
  <li>105</li>
  <li>106</li>
  <li>107</li>
  <li>108</li>
  <li>109</li>
  <li>110</li>
  <li>111</li>
  <li>112</li>
  <li>113</li>
  <li>114</li>
  <li>115</li>
  <li>116</li>
  <li>117</li>
  <li>118</li>
  <li>119</li>
  <li>120</li>
  <li>121</li>
  <li>122</li>
  <li>123</li>
  <li>124</li>
  <li>125</li>
  <li>126</li>
  <li>127</li>
  <li>128</li>
  <li>129</li>
  <li>130</li>
  <li>131</li>
  <li>132</li>
  <li>133</li>
  <li>134</li>
  <li>135</li>
  <li>136</li>
  <li>137</li>
  <li>138</li>
  <li>139</li>
  <li>140</li>
  <li>141</li>
  <li>142</li>
  <li>143</li>
  <li>144</li>
  <li>145</li>
  <li>146</li>
  <li>147</li>
  <li>148</li>
  <li>149</li>
  <li>150</li>
  <li>151</li>
  <li>152</li>
  <li>153</li>
  <li>154</li>
  <li>155</li>
  <li>156</li>
  <li>157</li>
  <li>158</li>
  <li>159</li>
  <li>160</li>
  <li>161</li>
  <li>162</li>
  <li>163</li>
  <li>164</li>
  <li>165</li>
  <li>166</li>
  <li>167</li>
  <li>168</li>
  <li>169</li>
  <li>170</li>
  <li>171</li>
  <li>172</li>
  <li>173</li>
  <li>174</li>
  <li>175</li>
  <li>176</li>
  <li>177</li>
  <li>178</li>
  <li>179</li>
  <li>180</li>
  <li>181</li>
  <li>182</li>
  <li>183</li>
  <li>184</li>
  <li>185</li>
  <li>186</li>
  <li>187</li>
  <li>188</li>
  <li>189</li>
  <li>190</li>
  <li>191</li>
  <li>192</li>
  <li>193</li>
  <li>194</li>
  <li>195</li>
  <li>196</li>
  <li>197</li>
  <li>198</li>
  <li>199</li>
  <li>200</li>
  <li>201</li>
  <li>202</li>
  <li>203</li>
  <li>204</li>
  <li>205</li>
  <li>206</li>
  <li>207</li>
  <li>208</li>
  <li>209</li>
  <li>210</li>
  <li>211</li>
  <li>212</li>
  <li>213</li>
  <li>214</li>
  <li>215</li>
  <li>216</li>
  <li>217</li>
  <li>218</li>
  <li>219</li>
  <li>220</li>
  <li>221</li>
  <li>222</li>
  <li>223</li>
  <li>224</li>
  <li>225</li>
  <li>226</li>
  <li>227</li>
  <li>228</li>
  <li>229</li>
  <li>230</li>
  <li>231</li>
  <li>232</li>
  <li>233</li>
  <li>234</li>
  <li>235</li>
  <li>236</li>
  <li>237</li>
  <li>238</li>
  <li>239</li>
  <li>240</li>
  <li>241</li>
  <li>242</li>
  <li>243</li>
  <li>244</li>
  <li>245</li>
  <li>246</li>
  <li>247</li>
  <li>248</li>
  <li>249</li>
  <li>250</li>
  <li>251</li>
  <li>252</li>
  <li>253</li>
  <li>254</li>
  <li>255</li>
  <li>256</li>
  <li>257</li>
  <li>258</li>
  <li>259</li>
  <li>260</li>
  <li>261</li>
  <li>262</li>
  <li>263</li>
  <li>264</li>
  <li>265</li>
  <li>266</li>
  <li>267</li>
  <li>268</li>
  <li>269</li>
  <li>270</li>
  <li>271</li>
  <li>272</li>
  <li>273</li>
  <li>274</li>
  <li>275</li>
  <li>276</li>
  <li>277</li>
  <li>278</li>
  <li>279</li>
  <li>280</li>
  <li>281</li>
  <li>282</li>
  <li>283</li>
  <li>284</li>
  <li>285</li>
  <li>286</li>
  <li>287</li>
  <li>288</li>
  <li>289</li>
  <li>290</li>
  <li>291</li>
  <li>292</li>
  <li>293</li>
  <li>294</li>
  <li>295</li>
  <li>296</li>
  <li>297</li>
  <li>298</li>
  <li>299</li>
  <li>300</li>
  <li>301</li>
  <li>302</li>
  <li>303</li>
  <li>304</li>
  <li>305</li>
  <li>306</li>
  <li>307</li>
  <li>308</li>
  <li>309</li>
  <li>310</li>
  <li>311</li>
  <li>312</li>
  <li>313</li>
  <li>314</li>
  <li>315</li>
  <li>316</li>
  <li>317</li>
  <li>318</li>
  <li>319</li>
  <li>320</li>
  <li>321</li>
  <li>322</li>
  <li>323</li>
  <li>324</li>
  <li>325</li>
  <li>326</li>
  <li>327</li>
  <li>328</li>
  <li>329</li>
  <li>330</li>
  <li>331</li>
  <li>332</li>
  <li>333</li>
  <li>334</li>
  <li>335</li>
  <li>336</li>
  <li>337</li>
  <li>338</li>
  <li>339</li>
  <li>340</li>
  <li>341</li>
  <li>342</li>
  <li>343</li>
  <li>344</li>
  <li>345</li>
  <li>346</li>
  <li>347</li>
  <li>348</li>
  <li>349</li>
  <li>350</li>
  <li>351</li>
  <li>352</li>
  <li>353</li>
  <li>354</li>
  <li>355</li>
  <li>356</li>
  <li>357</li>
  <li>358</li>
  <li>359</li>
  <li>360</li>
  <li>361</li>
  <li>362</li>
  <li>363</li>
  <li>364</li>
  <li>365</li>
  <li>366</li>
  <li>367</li>
  <li>368</li>
  <li>369</li>
  <li>370</li>
  <li>371</li>
  <li>372</li>
  <li>373</li>
  <li>374</li>
  <li>375</li>
  <li>376</li>
  <li>377</li>
  <li>378</li>
  <li>379</li>
  <li>380</li>
  <li>381</li>
  <li>382</li>
  <li>383</li>
  <li>384</li>
  <li>385</li>
  <li>386</li>
  <li>387</li>
  <li>388</li>
  <li>389</li>
  <li>390</li>
  <li>391</li>
  <li>392</li>
  <li>393</li>
  <li>394</li>
  <li>395</li>
  <li>396</li>
  <li>397</li>
  <li>398</li>
  <li>399</li>
  <li>400</li>
  <li>401</li>
  <li>402</li>
  <li>403</li>
  <li>404</li>
  <li>405</li>
  <li>406</li>
  <li>407</li>
  <li>408</li>
  <li>409</li>
  <li>410</li>
  <li>411</li>
  <li>412</li>
  <li>413</li>
  <li>414</li>
  <li>415</li>
  <li>416</li>
  <li>417</li>
  <li>418</li>
  <li>419</li>
  <li>420</li>
  <li>421</li>
  <li>422</li>
  <li>423</li>
  <li>424</li>
  <li>425</li>
  <li>426</li>
  <li>427</li>
  <li>428</li>
  <li>429</li>
  <li>430</li>
  <li>431</li>
  <li>432</li>
  <li>433</li>
  <li>434</li>
  <li>435</li>
  <li>436</li>
  <li>437</li>
  <li>438</li>
  <li>439</li>
  <li>440</li>
  <li>441</li>
  <li>442</li>
  <li>443</li>
  <li>444</li>
  <li>445</li>
  <li>446</li>
  <li>447</li>
  <li>448</li>
  <li>449</li>
  <li>450</li>
  <li>451</li>
  <li>452</li>
  <li>453</li>
  <li>454</li>
  <li>455</li>
  <li>456</li>
  <li>457</li>
  <li>458</li>
  <li>459</li>
  <li>460</li>
  <li>461</li>
  <li>462</li>
  <li>463</li>
  <li>464</li>
  <li>465</li>
  <li>466</li>
  <li>467</li>
  <li>468</li>
  <li>469</li>
  <li>470</li>
  <li>471</li>
  <li>472</li>
  <li>473</li>
  <li>474</li>
  <li>475</li>
  <li>476</li>
  <li>477</li>
  <li>478</li>
  <li>479</li>
  <li>480</li>
  <li>481</li>
  <li>482</li>
  <li>483</li>
  <li>484</li>
  <li>485</li>
  <li>486</li>
  <li>487</li>
  <li>488</li>
  <li>489</li>
  <li>490</li>
  <li>491</li>
  <li>492</li>
  <li>493</li>
  <li>494</li>
  <li>495</li>
  <li>496</li>
  <li>497</li>
  <li>498</li>
  <li>499</li>
  <li>500</li>
  <li>501</li>
  <li>502</li>
  <li>503</li>
  <li>504</li>
  <li>505</li>
  <li>506</li>
  <li>507</li>
  <li>508</li>
  <li>509</li>
  <li>510</li>
  <li>511</li>
  <li>512</li>
  <li>513</li>
  <li>514</li>
  <li>515</li>
  <li>516</li>
  <li>517</li>
  <li>518</li>
  <li>519</li>
  <li>520</li>
  <li>521</li>
  <li>522</li>
  <li>523</li>
  <li>524</li>
  <li>525</li>
  <li>526</li>
  <li>527</li>
  <li>528</li>
  <li>529</li>
  <li>530</li>
  <li>531</li>
  <li>532</li>
  <li>533</li>
  <li>534</li>
  <li>535</li>
  <li>536</li>
  <li>537</li>
  <li>538</li>
  <li>539</li>
  <li>540</li>
  <li>541</li>
  <li>542</li>
  <li>543</li>
  <li>544</li>
  <li>545</li>
  <li>546</li>
  <li>547</li>
  <li>548</li>
  <li>549</li>
  <li>550</li>
  <li>551</li>
  <li>552</li>
  <li>553</li>
  <li>554</li>
  <li>555</li>
  <li>556</li>
  <li>557</li>
  <li>558</li>
  <li>559</li>
  <li>560</li>
  <li>561</li>
  <li>562</li>
  <li>563</li>
  <li>564</li>
  <li>565</li>
  <li>566</li>
  <li>567</li>
  <li>568</li>
  <li>569</li>
  <li>570</li>
  <li>571</li>
  <li>572</li>
  <li>573</li>
  <li>574</li>
  <li>575</li>
  <li>576</li>
  <li>577</li>
  <li>578</li>
  <li>579</li>
  <li>580</li>
  <li>581</li>
  <li>582</li>
  <li>583</li>
  <li>584</li>
  <li>585</li>
  <li>586</li>
  <li>587</li>
  <li>588</li>
  <li>589</li>
  <li>590</li>
  <li>591</li>
  <li>592</li>
  <li>593</li>
  <li>594</li>
  <li>595</li>
  <li>596</li>
  <li>597</li>
  <li>598</li>
  <li>599</li>
  <li>600</li>
  <li>601</li>
  <li>602</li>
  <li>603</li>
  <li>604</li>
  <li>605</li>
  <li>606</li>
  <li>607</li>
  <li>608</li>
  <li>609</li>
  <li>610</li>
  <li>611</li>
  <li>612</li>
  <li>613</li>
  <li>614</li>
  <li>615</li>
  <li>616</li>
  <li>617</li>
  <li>618</li>
  <li>619</li>
  <li>620</li>
  <li>621</li>
  <li>622</li>
  <li>623</li>
  <li>624</li>
  <li>625</li>
  <li>626</li>
  <li>627</li>
  <li>628</li>
  <li>629</li>
  <li>630</li>
  <li>631</li>
  <li>632</li>
  <li>633</li>
  <li>634</li>
  <li>635</li>
  <li>636</li>
  <li>637</li>
  <li>638</li>
  <li>639</li>
  <li>640</li>
  <li>641</li>
  <li>642</li>
  <li>643</li>
  <li>644</li>
  <li>645</li>
  <li>646</li>
  <li>647</li>
  <li>648</li>
  <li>649</li>
  <li>650</li>
  <li>651</li>
  <li>652</li>
  <li>653</li>
  <li>654</li>
  <li>655</li>
  <li>656</li>
  <li>657</li>
  <li>658</li>
  <li>659</li>
  <li>660</li>
  <li>661</li>
  <li>662</li>
  <li>663</li>
  <li>664</li>
  <li>665</li>
  <li>666</li>
  <li>667</li>
  <li>668</li>
  <li>669</li>
  <li>670</li>
  <li>671</li>
  <li>672</li>
  <li>673</li>
  <li>674</li>
  <li>675</li>
  <li>676</li>
  <li>677</li>
  <li>678</li>
  <li>679</li>
  <li>680</li>
  <li>681</li>
  <li>682</li>
  <li>683</li>
  <li>684</li>
  <li>685</li>
  <li>686</li>
  <li>687</li>
  <li>688</li>
  <li>689</li>
  <li>690</li>
  <li>691</li>
  <li>692</li>
  <li>693</li>
  <li>694</li>
  <li>695</li>
  <li>696</li>
  <li>697</li>
  <li>698</li>
  <li>699</li>
  <li>700</li>
  <li>701</li>
  <li>702</li>
  <li>703</li>
  <li>704</li>
  <li>705</li>
  <li>706</li>
  <li>707</li>
  <li>708</li>
  <li>709</li>
  <li>710</li>
  <li>711</li>
  <li>712</li>
  <li>713</li>
  <li>714</li>
  <li>715</li>
  <li>716</li>
  <li>717</li>
  <li>718</li>
  <li>719</li>
  <li>720</li>
  <li>721</li>
  <li>722</li>
  <li>723</li>
  <li>724</li>
  <li>725</li>
  <li>726</li>
  <li>727</li>
  <li>728</li>
  <li>729</li>
  <li>730</li>
  <li>731</li>
  <li>732</li>
  <li>733</li>
  <li>734</li>
  <li>735</li>
  <li>736</li>
  <li>737</li>
  <li>738</li>
  <li>739</li>
  <li>740</li>
  <li>741</li>
  <li>742</li>
  <li>743</li>
  <li>744</li>
  <li>745</li>
  <li>746</li>
  <li>747</li>
  <li>748</li>
  <li>749</li>
  <li>750</li>
  <li>751</li>
  <li>752</li>
  <li>753</li>
  <li>754</li>
  <li>755</li>
  <li>756</li>
  <li>757</li>
  <li>758</li>
  <li>759</li>
  <li>760</li>
  <li>761</li>
  <li>762</li>
  <li>763</li>
  <li>764</li>
  <li>765</li>
  <li>766</li>
  <li>767</li>
  <li>768</li>
  <li>769</li>
  <li>770</li>
  <li>771</li>
  <li>772</li>
  <li>773</li>
  <li>774</li>
  <li>775</li>
  <li>776</li>
  <li>777</li>
  <li>778</li>
  <li>779</li>
  <li>780</li>
  <li>781</li>
  <li>782</li>
  <li>783</li>
  <li>784</li>
  <li>785</li>
  <li>786</li>
  <li>787</li>
  <li>788</li>
  <li>789</li>
  <li>790</li>
  <li>791</li>
  <li>792</li>
  <li>793</li>
  <li>794</li>
  <li>795</li>
  <li>796</li>
  <li>797</li>
  <li>798</li>
  <li>799</li>
  <li>800</li>
  <li>801</li>
  <li>802</li>
  <li>803</li>
  <li>804</li>
  <li>805</li>
  <li>806</li>
  <li>807</li>
  <li>808</li>
  <li>809</li>
  <li>810</li>
  <li>811</li>
  <li>812</li>
  <li>813</li>
  <li>814</li>
  <li>815</li>
  <li>816</li>
  <li>817</li>
  <li>818</li>
  <li>819</li>
  <li>820</li>
  <li>821</li>
  <li>822</li>
</ul>

================================================
FILE: test/expected/inner-locals-not-json.html
================================================
<h1>index</h1>

<h2>{{ text }}</h2>


================================================
FILE: test/expected/inner-locals.html
================================================
<h1>index</h1>

<h2>3</h2>

================================================
FILE: test/expected/locals-not-json.html
================================================
<h1>index</h1><h2>{{ text }}</h2>


================================================
FILE: test/expected/locals.html
================================================
<h1>index</h1><h2>3</h2>


================================================
FILE: test/expected/multiple-include.html
================================================
<div>local1</div>
<div>global</div>

<div>local2</div>
<div>global</div>

<div>local3</div>
<div>global</div>

<div>local4</div>
<div>global</div>

<div>local5</div>
<div>global</div>


================================================
FILE: test/expected/nested.html
================================================
<h1>index</h1><h2>1</h2>
<h2>2</h2>


================================================
FILE: test/expected/not-clear-rest.html
================================================
<section>
  <h1>Contact</h1>
  <div>
  <h2>Bar</h2>
  <p>
    <a href="callto:+123456">+123456</a>
    <br>
    <a href="mailto:email@company.com">email@company.com</a>
  </p>
</div>

</section>


================================================
FILE: test/expected/override-global-variables.html
================================================
<div>Should override global locals</div>
<div>local</div>
<div>local</div>


================================================
FILE: test/expected/root.html
================================================
<div class="button"><div class="button__text">Text</div></div>


================================================
FILE: test/fixtures/basic.html
================================================
<include src="./test/fixtures/blocks/button/button.html">


================================================
FILE: test/fixtures/blocks/button/button.html
================================================
<div class="button"><div class="button__text">Text</div></div>


================================================
FILE: test/fixtures/blocks/partial/phone.html
================================================
<a href="callto:+123456">+123456</a>

================================================
FILE: test/fixtures/global-variables.html
================================================
<div>Should merge global locals</div>
<include src="./test/fixtures/includes/6.html">
  {
  "localVariable": "local"
  }
</include>


================================================
FILE: test/fixtures/includes/1.html
================================================
<h2>1</h2>
<include src="./test/fixtures/includes/2.html"></include>


================================================
FILE: test/fixtures/includes/2.html
================================================
<h2>2</h2>

================================================
FILE: test/fixtures/includes/3.html
================================================
<h2>{{ text }}</h2>

================================================
FILE: test/fixtures/includes/4.html
================================================
<div>
  <h2>{{ foo }}</h2>
  <p>
    <include src="./test/fixtures/blocks/partial/phone.html"></include>
    <br>
    <a href="mailto:email@company.com">email@company.com</a>
  </p>
</div>


================================================
FILE: test/fixtures/includes/5.html
================================================
<ul>
  <li>{{_id}}</li>
  <li>{{index}}</li>
  <li>{{guid}}</li>
  <li>{{isActive}}</li>
  <li>{{balance}}</li>
  <li>{{picture}}</li>
  <li>{{age}}</li>
  <li>{{eyeColor}}</li>
  <li>{{name}}</li>
  <li>{{gender}}</li>
  <li>{{company}}</li>
  <li>{{email}}</li>
  <li>{{phone}}</li>
  <li>{{address}}</li>
  <li>{{about}}</li>
  <li>{{registered}}</li>
  <li>{{latitude}}</li>
  <li>{{longitude}}</li>
  <li>{{number0}}</li>
  <li>{{number1}}</li>
  <li>{{number2}}</li>
  <li>{{number3}}</li>
  <li>{{number4}}</li>
  <li>{{number5}}</li>
  <li>{{number6}}</li>
  <li>{{number7}}</li>
  <li>{{number8}}</li>
  <li>{{number9}}</li>
  <li>{{number10}}</li>
  <li>{{number11}}</li>
  <li>{{number12}}</li>
  <li>{{number13}}</li>
  <li>{{number14}}</li>
  <li>{{number15}}</li>
  <li>{{number16}}</li>
  <li>{{number17}}</li>
  <li>{{number18}}</li>
  <li>{{number19}}</li>
  <li>{{number20}}</li>
  <li>{{number21}}</li>
  <li>{{number22}}</li>
  <li>{{number23}}</li>
  <li>{{number24}}</li>
  <li>{{number25}}</li>
  <li>{{number26}}</li>
  <li>{{number27}}</li>
  <li>{{number28}}</li>
  <li>{{number29}}</li>
  <li>{{number30}}</li>
  <li>{{number31}}</li>
  <li>{{number32}}</li>
  <li>{{number33}}</li>
  <li>{{number34}}</li>
  <li>{{number35}}</li>
  <li>{{number36}}</li>
  <li>{{number37}}</li>
  <li>{{number38}}</li>
  <li>{{number39}}</li>
  <li>{{number40}}</li>
  <li>{{number41}}</li>
  <li>{{number42}}</li>
  <li>{{number43}}</li>
  <li>{{number44}}</li>
  <li>{{number45}}</li>
  <li>{{number46}}</li>
  <li>{{number47}}</li>
  <li>{{number48}}</li>
  <li>{{number49}}</li>
  <li>{{number50}}</li>
  <li>{{number51}}</li>
  <li>{{number52}}</li>
  <li>{{number53}}</li>
  <li>{{number54}}</li>
  <li>{{number55}}</li>
  <li>{{number56}}</li>
  <li>{{number57}}</li>
  <li>{{number58}}</li>
  <li>{{number59}}</li>
  <li>{{number60}}</li>
  <li>{{number61}}</li>
  <li>{{number62}}</li>
  <li>{{number63}}</li>
  <li>{{number64}}</li>
  <li>{{number65}}</li>
  <li>{{number66}}</li>
  <li>{{number67}}</li>
  <li>{{number68}}</li>
  <li>{{number69}}</li>
  <li>{{number70}}</li>
  <li>{{number71}}</li>
  <li>{{number72}}</li>
  <li>{{number73}}</li>
  <li>{{number74}}</li>
  <li>{{number75}}</li>
  <li>{{number76}}</li>
  <li>{{number77}}</li>
  <li>{{number78}}</li>
  <li>{{number79}}</li>
  <li>{{number80}}</li>
  <li>{{number81}}</li>
  <li>{{number82}}</li>
  <li>{{number83}}</li>
  <li>{{number84}}</li>
  <li>{{number85}}</li>
  <li>{{number86}}</li>
  <li>{{number87}}</li>
  <li>{{number88}}</li>
  <li>{{number89}}</li>
  <li>{{number90}}</li>
  <li>{{number91}}</li>
  <li>{{number92}}</li>
  <li>{{number93}}</li>
  <li>{{number94}}</li>
  <li>{{number95}}</li>
  <li>{{number96}}</li>
  <li>{{number97}}</li>
  <li>{{number98}}</li>
  <li>{{number99}}</li>
  <li>{{number100}}</li>
  <li>{{number101}}</li>
  <li>{{number102}}</li>
  <li>{{number103}}</li>
  <li>{{number104}}</li>
  <li>{{number105}}</li>
  <li>{{number106}}</li>
  <li>{{number107}}</li>
  <li>{{number108}}</li>
  <li>{{number109}}</li>
  <li>{{number110}}</li>
  <li>{{number111}}</li>
  <li>{{number112}}</li>
  <li>{{number113}}</li>
  <li>{{number114}}</li>
  <li>{{number115}}</li>
  <li>{{number116}}</li>
  <li>{{number117}}</li>
  <li>{{number118}}</li>
  <li>{{number119}}</li>
  <li>{{number120}}</li>
  <li>{{number121}}</li>
  <li>{{number122}}</li>
  <li>{{number123}}</li>
  <li>{{number124}}</li>
  <li>{{number125}}</li>
  <li>{{number126}}</li>
  <li>{{number127}}</li>
  <li>{{number128}}</li>
  <li>{{number129}}</li>
  <li>{{number130}}</li>
  <li>{{number131}}</li>
  <li>{{number132}}</li>
  <li>{{number133}}</li>
  <li>{{number134}}</li>
  <li>{{number135}}</li>
  <li>{{number136}}</li>
  <li>{{number137}}</li>
  <li>{{number138}}</li>
  <li>{{number139}}</li>
  <li>{{number140}}</li>
  <li>{{number141}}</li>
  <li>{{number142}}</li>
  <li>{{number143}}</li>
  <li>{{number144}}</li>
  <li>{{number145}}</li>
  <li>{{number146}}</li>
  <li>{{number147}}</li>
  <li>{{number148}}</li>
  <li>{{number149}}</li>
  <li>{{number150}}</li>
  <li>{{number151}}</li>
  <li>{{number152}}</li>
  <li>{{number153}}</li>
  <li>{{number154}}</li>
  <li>{{number155}}</li>
  <li>{{number156}}</li>
  <li>{{number157}}</li>
  <li>{{number158}}</li>
  <li>{{number159}}</li>
  <li>{{number160}}</li>
  <li>{{number161}}</li>
  <li>{{number162}}</li>
  <li>{{number163}}</li>
  <li>{{number164}}</li>
  <li>{{number165}}</li>
  <li>{{number166}}</li>
  <li>{{number167}}</li>
  <li>{{number168}}</li>
  <li>{{number169}}</li>
  <li>{{number170}}</li>
  <li>{{number171}}</li>
  <li>{{number172}}</li>
  <li>{{number173}}</li>
  <li>{{number174}}</li>
  <li>{{number175}}</li>
  <li>{{number176}}</li>
  <li>{{number177}}</li>
  <li>{{number178}}</li>
  <li>{{number179}}</li>
  <li>{{number180}}</li>
  <li>{{number181}}</li>
  <li>{{number182}}</li>
  <li>{{number183}}</li>
  <li>{{number184}}</li>
  <li>{{number185}}</li>
  <li>{{number186}}</li>
  <li>{{number187}}</li>
  <li>{{number188}}</li>
  <li>{{number189}}</li>
  <li>{{number190}}</li>
  <li>{{number191}}</li>
  <li>{{number192}}</li>
  <li>{{number193}}</li>
  <li>{{number194}}</li>
  <li>{{number195}}</li>
  <li>{{number196}}</li>
  <li>{{number197}}</li>
  <li>{{number198}}</li>
  <li>{{number199}}</li>
  <li>{{number200}}</li>
  <li>{{number201}}</li>
  <li>{{number202}}</li>
  <li>{{number203}}</li>
  <li>{{number204}}</li>
  <li>{{number205}}</li>
  <li>{{number206}}</li>
  <li>{{number207}}</li>
  <li>{{number208}}</li>
  <li>{{number209}}</li>
  <li>{{number210}}</li>
  <li>{{number211}}</li>
  <li>{{number212}}</li>
  <li>{{number213}}</li>
  <li>{{number214}}</li>
  <li>{{number215}}</li>
  <li>{{number216}}</li>
  <li>{{number217}}</li>
  <li>{{number218}}</li>
  <li>{{number219}}</li>
  <li>{{number220}}</li>
  <li>{{number221}}</li>
  <li>{{number222}}</li>
  <li>{{number223}}</li>
  <li>{{number224}}</li>
  <li>{{number225}}</li>
  <li>{{number226}}</li>
  <li>{{number227}}</li>
  <li>{{number228}}</li>
  <li>{{number229}}</li>
  <li>{{number230}}</li>
  <li>{{number231}}</li>
  <li>{{number232}}</li>
  <li>{{number233}}</li>
  <li>{{number234}}</li>
  <li>{{number235}}</li>
  <li>{{number236}}</li>
  <li>{{number237}}</li>
  <li>{{number238}}</li>
  <li>{{number239}}</li>
  <li>{{number240}}</li>
  <li>{{number241}}</li>
  <li>{{number242}}</li>
  <li>{{number243}}</li>
  <li>{{number244}}</li>
  <li>{{number245}}</li>
  <li>{{number246}}</li>
  <li>{{number247}}</li>
  <li>{{number248}}</li>
  <li>{{number249}}</li>
  <li>{{number250}}</li>
  <li>{{number251}}</li>
  <li>{{number252}}</li>
  <li>{{number253}}</li>
  <li>{{number254}}</li>
  <li>{{number255}}</li>
  <li>{{number256}}</li>
  <li>{{number257}}</li>
  <li>{{number258}}</li>
  <li>{{number259}}</li>
  <li>{{number260}}</li>
  <li>{{number261}}</li>
  <li>{{number262}}</li>
  <li>{{number263}}</li>
  <li>{{number264}}</li>
  <li>{{number265}}</li>
  <li>{{number266}}</li>
  <li>{{number267}}</li>
  <li>{{number268}}</li>
  <li>{{number269}}</li>
  <li>{{number270}}</li>
  <li>{{number271}}</li>
  <li>{{number272}}</li>
  <li>{{number273}}</li>
  <li>{{number274}}</li>
  <li>{{number275}}</li>
  <li>{{number276}}</li>
  <li>{{number277}}</li>
  <li>{{number278}}</li>
  <li>{{number279}}</li>
  <li>{{number280}}</li>
  <li>{{number281}}</li>
  <li>{{number282}}</li>
  <li>{{number283}}</li>
  <li>{{number284}}</li>
  <li>{{number285}}</li>
  <li>{{number286}}</li>
  <li>{{number287}}</li>
  <li>{{number288}}</li>
  <li>{{number289}}</li>
  <li>{{number290}}</li>
  <li>{{number291}}</li>
  <li>{{number292}}</li>
  <li>{{number293}}</li>
  <li>{{number294}}</li>
  <li>{{number295}}</li>
  <li>{{number296}}</li>
  <li>{{number297}}</li>
  <li>{{number298}}</li>
  <li>{{number299}}</li>
  <li>{{number300}}</li>
  <li>{{number301}}</li>
  <li>{{number302}}</li>
  <li>{{number303}}</li>
  <li>{{number304}}</li>
  <li>{{number305}}</li>
  <li>{{number306}}</li>
  <li>{{number307}}</li>
  <li>{{number308}}</li>
  <li>{{number309}}</li>
  <li>{{number310}}</li>
  <li>{{number311}}</li>
  <li>{{number312}}</li>
  <li>{{number313}}</li>
  <li>{{number314}}</li>
  <li>{{number315}}</li>
  <li>{{number316}}</li>
  <li>{{number317}}</li>
  <li>{{number318}}</li>
  <li>{{number319}}</li>
  <li>{{number320}}</li>
  <li>{{number321}}</li>
  <li>{{number322}}</li>
  <li>{{number323}}</li>
  <li>{{number324}}</li>
  <li>{{number325}}</li>
  <li>{{number326}}</li>
  <li>{{number327}}</li>
  <li>{{number328}}</li>
  <li>{{number329}}</li>
  <li>{{number330}}</li>
  <li>{{number331}}</li>
  <li>{{number332}}</li>
  <li>{{number333}}</li>
  <li>{{number334}}</li>
  <li>{{number335}}</li>
  <li>{{number336}}</li>
  <li>{{number337}}</li>
  <li>{{number338}}</li>
  <li>{{number339}}</li>
  <li>{{number340}}</li>
  <li>{{number341}}</li>
  <li>{{number342}}</li>
  <li>{{number343}}</li>
  <li>{{number344}}</li>
  <li>{{number345}}</li>
  <li>{{number346}}</li>
  <li>{{number347}}</li>
  <li>{{number348}}</li>
  <li>{{number349}}</li>
  <li>{{number350}}</li>
  <li>{{number351}}</li>
  <li>{{number352}}</li>
  <li>{{number353}}</li>
  <li>{{number354}}</li>
  <li>{{number355}}</li>
  <li>{{number356}}</li>
  <li>{{number357}}</li>
  <li>{{number358}}</li>
  <li>{{number359}}</li>
  <li>{{number360}}</li>
  <li>{{number361}}</li>
  <li>{{number362}}</li>
  <li>{{number363}}</li>
  <li>{{number364}}</li>
  <li>{{number365}}</li>
  <li>{{number366}}</li>
  <li>{{number367}}</li>
  <li>{{number368}}</li>
  <li>{{number369}}</li>
  <li>{{number370}}</li>
  <li>{{number371}}</li>
  <li>{{number372}}</li>
  <li>{{number373}}</li>
  <li>{{number374}}</li>
  <li>{{number375}}</li>
  <li>{{number376}}</li>
  <li>{{number377}}</li>
  <li>{{number378}}</li>
  <li>{{number379}}</li>
  <li>{{number380}}</li>
  <li>{{number381}}</li>
  <li>{{number382}}</li>
  <li>{{number383}}</li>
  <li>{{number384}}</li>
  <li>{{number385}}</li>
  <li>{{number386}}</li>
  <li>{{number387}}</li>
  <li>{{number388}}</li>
  <li>{{number389}}</li>
  <li>{{number390}}</li>
  <li>{{number391}}</li>
  <li>{{number392}}</li>
  <li>{{number393}}</li>
  <li>{{number394}}</li>
  <li>{{number395}}</li>
  <li>{{number396}}</li>
  <li>{{number397}}</li>
  <li>{{number398}}</li>
  <li>{{number399}}</li>
  <li>{{number400}}</li>
  <li>{{number401}}</li>
  <li>{{number402}}</li>
  <li>{{number403}}</li>
  <li>{{number404}}</li>
  <li>{{number405}}</li>
  <li>{{number406}}</li>
  <li>{{number407}}</li>
  <li>{{number408}}</li>
  <li>{{number409}}</li>
  <li>{{number410}}</li>
  <li>{{number411}}</li>
  <li>{{number412}}</li>
  <li>{{number413}}</li>
  <li>{{number414}}</li>
  <li>{{number415}}</li>
  <li>{{number416}}</li>
  <li>{{number417}}</li>
  <li>{{number418}}</li>
  <li>{{number419}}</li>
  <li>{{number420}}</li>
  <li>{{number421}}</li>
  <li>{{number422}}</li>
  <li>{{number423}}</li>
  <li>{{number424}}</li>
  <li>{{number425}}</li>
  <li>{{number426}}</li>
  <li>{{number427}}</li>
  <li>{{number428}}</li>
  <li>{{number429}}</li>
  <li>{{number430}}</li>
  <li>{{number431}}</li>
  <li>{{number432}}</li>
  <li>{{number433}}</li>
  <li>{{number434}}</li>
  <li>{{number435}}</li>
  <li>{{number436}}</li>
  <li>{{number437}}</li>
  <li>{{number438}}</li>
  <li>{{number439}}</li>
  <li>{{number440}}</li>
  <li>{{number441}}</li>
  <li>{{number442}}</li>
  <li>{{number443}}</li>
  <li>{{number444}}</li>
  <li>{{number445}}</li>
  <li>{{number446}}</li>
  <li>{{number447}}</li>
  <li>{{number448}}</li>
  <li>{{number449}}</li>
  <li>{{number450}}</li>
  <li>{{number451}}</li>
  <li>{{number452}}</li>
  <li>{{number453}}</li>
  <li>{{number454}}</li>
  <li>{{number455}}</li>
  <li>{{number456}}</li>
  <li>{{number457}}</li>
  <li>{{number458}}</li>
  <li>{{number459}}</li>
  <li>{{number460}}</li>
  <li>{{number461}}</li>
  <li>{{number462}}</li>
  <li>{{number463}}</li>
  <li>{{number464}}</li>
  <li>{{number465}}</li>
  <li>{{number466}}</li>
  <li>{{number467}}</li>
  <li>{{number468}}</li>
  <li>{{number469}}</li>
  <li>{{number470}}</li>
  <li>{{number471}}</li>
  <li>{{number472}}</li>
  <li>{{number473}}</li>
  <li>{{number474}}</li>
  <li>{{number475}}</li>
  <li>{{number476}}</li>
  <li>{{number477}}</li>
  <li>{{number478}}</li>
  <li>{{number479}}</li>
  <li>{{number480}}</li>
  <li>{{number481}}</li>
  <li>{{number482}}</li>
  <li>{{number483}}</li>
  <li>{{number484}}</li>
  <li>{{number485}}</li>
  <li>{{number486}}</li>
  <li>{{number487}}</li>
  <li>{{number488}}</li>
  <li>{{number489}}</li>
  <li>{{number490}}</li>
  <li>{{number491}}</li>
  <li>{{number492}}</li>
  <li>{{number493}}</li>
  <li>{{number494}}</li>
  <li>{{number495}}</li>
  <li>{{number496}}</li>
  <li>{{number497}}</li>
  <li>{{number498}}</li>
  <li>{{number499}}</li>
  <li>{{number500}}</li>
  <li>{{number501}}</li>
  <li>{{number502}}</li>
  <li>{{number503}}</li>
  <li>{{number504}}</li>
  <li>{{number505}}</li>
  <li>{{number506}}</li>
  <li>{{number507}}</li>
  <li>{{number508}}</li>
  <li>{{number509}}</li>
  <li>{{number510}}</li>
  <li>{{number511}}</li>
  <li>{{number512}}</li>
  <li>{{number513}}</li>
  <li>{{number514}}</li>
  <li>{{number515}}</li>
  <li>{{number516}}</li>
  <li>{{number517}}</li>
  <li>{{number518}}</li>
  <li>{{number519}}</li>
  <li>{{number520}}</li>
  <li>{{number521}}</li>
  <li>{{number522}}</li>
  <li>{{number523}}</li>
  <li>{{number524}}</li>
  <li>{{number525}}</li>
  <li>{{number526}}</li>
  <li>{{number527}}</li>
  <li>{{number528}}</li>
  <li>{{number529}}</li>
  <li>{{number530}}</li>
  <li>{{number531}}</li>
  <li>{{number532}}</li>
  <li>{{number533}}</li>
  <li>{{number534}}</li>
  <li>{{number535}}</li>
  <li>{{number536}}</li>
  <li>{{number537}}</li>
  <li>{{number538}}</li>
  <li>{{number539}}</li>
  <li>{{number540}}</li>
  <li>{{number541}}</li>
  <li>{{number542}}</li>
  <li>{{number543}}</li>
  <li>{{number544}}</li>
  <li>{{number545}}</li>
  <li>{{number546}}</li>
  <li>{{number547}}</li>
  <li>{{number548}}</li>
  <li>{{number549}}</li>
  <li>{{number550}}</li>
  <li>{{number551}}</li>
  <li>{{number552}}</li>
  <li>{{number553}}</li>
  <li>{{number554}}</li>
  <li>{{number555}}</li>
  <li>{{number556}}</li>
  <li>{{number557}}</li>
  <li>{{number558}}</li>
  <li>{{number559}}</li>
  <li>{{number560}}</li>
  <li>{{number561}}</li>
  <li>{{number562}}</li>
  <li>{{number563}}</li>
  <li>{{number564}}</li>
  <li>{{number565}}</li>
  <li>{{number566}}</li>
  <li>{{number567}}</li>
  <li>{{number568}}</li>
  <li>{{number569}}</li>
  <li>{{number570}}</li>
  <li>{{number571}}</li>
  <li>{{number572}}</li>
  <li>{{number573}}</li>
  <li>{{number574}}</li>
  <li>{{number575}}</li>
  <li>{{number576}}</li>
  <li>{{number577}}</li>
  <li>{{number578}}</li>
  <li>{{number579}}</li>
  <li>{{number580}}</li>
  <li>{{number581}}</li>
  <li>{{number582}}</li>
  <li>{{number583}}</li>
  <li>{{number584}}</li>
  <li>{{number585}}</li>
  <li>{{number586}}</li>
  <li>{{number587}}</li>
  <li>{{number588}}</li>
  <li>{{number589}}</li>
  <li>{{number590}}</li>
  <li>{{number591}}</li>
  <li>{{number592}}</li>
  <li>{{number593}}</li>
  <li>{{number594}}</li>
  <li>{{number595}}</li>
  <li>{{number596}}</li>
  <li>{{number597}}</li>
  <li>{{number598}}</li>
  <li>{{number599}}</li>
  <li>{{number600}}</li>
  <li>{{number601}}</li>
  <li>{{number602}}</li>
  <li>{{number603}}</li>
  <li>{{number604}}</li>
  <li>{{number605}}</li>
  <li>{{number606}}</li>
  <li>{{number607}}</li>
  <li>{{number608}}</li>
  <li>{{number609}}</li>
  <li>{{number610}}</li>
  <li>{{number611}}</li>
  <li>{{number612}}</li>
  <li>{{number613}}</li>
  <li>{{number614}}</li>
  <li>{{number615}}</li>
  <li>{{number616}}</li>
  <li>{{number617}}</li>
  <li>{{number618}}</li>
  <li>{{number619}}</li>
  <li>{{number620}}</li>
  <li>{{number621}}</li>
  <li>{{number622}}</li>
  <li>{{number623}}</li>
  <li>{{number624}}</li>
  <li>{{number625}}</li>
  <li>{{number626}}</li>
  <li>{{number627}}</li>
  <li>{{number628}}</li>
  <li>{{number629}}</li>
  <li>{{number630}}</li>
  <li>{{number631}}</li>
  <li>{{number632}}</li>
  <li>{{number633}}</li>
  <li>{{number634}}</li>
  <li>{{number635}}</li>
  <li>{{number636}}</li>
  <li>{{number637}}</li>
  <li>{{number638}}</li>
  <li>{{number639}}</li>
  <li>{{number640}}</li>
  <li>{{number641}}</li>
  <li>{{number642}}</li>
  <li>{{number643}}</li>
  <li>{{number644}}</li>
  <li>{{number645}}</li>
  <li>{{number646}}</li>
  <li>{{number647}}</li>
  <li>{{number648}}</li>
  <li>{{number649}}</li>
  <li>{{number650}}</li>
  <li>{{number651}}</li>
  <li>{{number652}}</li>
  <li>{{number653}}</li>
  <li>{{number654}}</li>
  <li>{{number655}}</li>
  <li>{{number656}}</li>
  <li>{{number657}}</li>
  <li>{{number658}}</li>
  <li>{{number659}}</li>
  <li>{{number660}}</li>
  <li>{{number661}}</li>
  <li>{{number662}}</li>
  <li>{{number663}}</li>
  <li>{{number664}}</li>
  <li>{{number665}}</li>
  <li>{{number666}}</li>
  <li>{{number667}}</li>
  <li>{{number668}}</li>
  <li>{{number669}}</li>
  <li>{{number670}}</li>
  <li>{{number671}}</li>
  <li>{{number672}}</li>
  <li>{{number673}}</li>
  <li>{{number674}}</li>
  <li>{{number675}}</li>
  <li>{{number676}}</li>
  <li>{{number677}}</li>
  <li>{{number678}}</li>
  <li>{{number679}}</li>
  <li>{{number680}}</li>
  <li>{{number681}}</li>
  <li>{{number682}}</li>
  <li>{{number683}}</li>
  <li>{{number684}}</li>
  <li>{{number685}}</li>
  <li>{{number686}}</li>
  <li>{{number687}}</li>
  <li>{{number688}}</li>
  <li>{{number689}}</li>
  <li>{{number690}}</li>
  <li>{{number691}}</li>
  <li>{{number692}}</li>
  <li>{{number693}}</li>
  <li>{{number694}}</li>
  <li>{{number695}}</li>
  <li>{{number696}}</li>
  <li>{{number697}}</li>
  <li>{{number698}}</li>
  <li>{{number699}}</li>
  <li>{{number700}}</li>
  <li>{{number701}}</li>
  <li>{{number702}}</li>
  <li>{{number703}}</li>
  <li>{{number704}}</li>
  <li>{{number705}}</li>
  <li>{{number706}}</li>
  <li>{{number707}}</li>
  <li>{{number708}}</li>
  <li>{{number709}}</li>
  <li>{{number710}}</li>
  <li>{{number711}}</li>
  <li>{{number712}}</li>
  <li>{{number713}}</li>
  <li>{{number714}}</li>
  <li>{{number715}}</li>
  <li>{{number716}}</li>
  <li>{{number717}}</li>
  <li>{{number718}}</li>
  <li>{{number719}}</li>
  <li>{{number720}}</li>
  <li>{{number721}}</li>
  <li>{{number722}}</li>
  <li>{{number723}}</li>
  <li>{{number724}}</li>
  <li>{{number725}}</li>
  <li>{{number726}}</li>
  <li>{{number727}}</li>
  <li>{{number728}}</li>
  <li>{{number729}}</li>
  <li>{{number730}}</li>
  <li>{{number731}}</li>
  <li>{{number732}}</li>
  <li>{{number733}}</li>
  <li>{{number734}}</li>
  <li>{{number735}}</li>
  <li>{{number736}}</li>
  <li>{{number737}}</li>
  <li>{{number738}}</li>
  <li>{{number739}}</li>
  <li>{{number740}}</li>
  <li>{{number741}}</li>
  <li>{{number742}}</li>
  <li>{{number743}}</li>
  <li>{{number744}}</li>
  <li>{{number745}}</li>
  <li>{{number746}}</li>
  <li>{{number747}}</li>
  <li>{{number748}}</li>
  <li>{{number749}}</li>
  <li>{{number750}}</li>
  <li>{{number751}}</li>
  <li>{{number752}}</li>
  <li>{{number753}}</li>
  <li>{{number754}}</li>
  <li>{{number755}}</li>
  <li>{{number756}}</li>
  <li>{{number757}}</li>
  <li>{{number758}}</li>
  <li>{{number759}}</li>
  <li>{{number760}}</li>
  <li>{{number761}}</li>
  <li>{{number762}}</li>
  <li>{{number763}}</li>
  <li>{{number764}}</li>
  <li>{{number765}}</li>
  <li>{{number766}}</li>
  <li>{{number767}}</li>
  <li>{{number768}}</li>
  <li>{{number769}}</li>
  <li>{{number770}}</li>
  <li>{{number771}}</li>
  <li>{{number772}}</li>
  <li>{{number773}}</li>
  <li>{{number774}}</li>
  <li>{{number775}}</li>
  <li>{{number776}}</li>
  <li>{{number777}}</li>
  <li>{{number778}}</li>
  <li>{{number779}}</li>
  <li>{{number780}}</li>
  <li>{{number781}}</li>
  <li>{{number782}}</li>
  <li>{{number783}}</li>
  <li>{{number784}}</li>
  <li>{{number785}}</li>
  <li>{{number786}}</li>
  <li>{{number787}}</li>
  <li>{{number788}}</li>
  <li>{{number789}}</li>
  <li>{{number790}}</li>
  <li>{{number791}}</li>
  <li>{{number792}}</li>
  <li>{{number793}}</li>
  <li>{{number794}}</li>
  <li>{{number795}}</li>
  <li>{{number796}}</li>
  <li>{{number797}}</li>
  <li>{{number798}}</li>
  <li>{{number799}}</li>
  <li>{{number800}}</li>
  <li>{{number801}}</li>
  <li>{{number802}}</li>
  <li>{{number803}}</li>
  <li>{{number804}}</li>
  <li>{{number805}}</li>
  <li>{{number806}}</li>
  <li>{{number807}}</li>
  <li>{{number808}}</li>
  <li>{{number809}}</li>
  <li>{{number810}}</li>
  <li>{{number811}}</li>
  <li>{{number812}}</li>
  <li>{{number813}}</li>
  <li>{{number814}}</li>
  <li>{{number815}}</li>
  <li>{{number816}}</li>
  <li>{{number817}}</li>
  <li>{{number818}}</li>
  <li>{{number819}}</li>
  <li>{{number820}}</li>
  <li>{{number821}}</li>
  <li>{{number822}}</li>
</ul>

================================================
FILE: test/fixtures/includes/6.html
================================================
<div>{{ localVariable }}</div>
<div>{{ globalVariable }}</div>


================================================
FILE: test/fixtures/inner-locals-big-json.html
================================================
<h1>index</h1>

<include src="./test/fixtures/includes/5.html">
  {
    "_id": "5f80a36f5be511b1fc7afb87",
    "index": 0,
    "guid": "0bc2e2bc-69f5-4fa4-9d05-3167ed5e33f2",
    "isActive": false,
    "balance": "$1,307.93",
    "picture": "http://placehold.it/32x32",
    "age": 28,
    "eyeColor": "blue",
    "name": "Blankenship Schneider",
    "gender": "male",
    "company": "EXOVENT",
    "email": "blankenshipschneider@exovent.com",
    "phone": "+1 (885) 459-3832",
    "address": "420 Farragut Place, Brazos, Kentucky, 2848",
    "about": "Ex sit proident velit ut enim dolore. Tempor proident aliqua fugiat tempor excepteur magna anim elit.",
    "registered": "2014-06-12T05:37:51 +03:00",
    "latitude": -71.554141,
    "longitude": -73.693833,
    "greeting": "Hello, Blankenship Schneider! You have 4 unread messages.",
    "favoriteFruit": "banana",
    "number0": "0",
    "number1": "1",
    "number2": "2",
    "number3": "3",
    "number4": "4",
    "number5": "5",
    "number6": "6",
    "number7": "7",
    "number8": "8",
    "number9": "9",
    "number10": "10",
    "number11": "11",
    "number12": "12",
    "number13": "13",
    "number14": "14",
    "number15": "15",
    "number16": "16",
    "number17": "17",
    "number18": "18",
    "number19": "19",
    "number20": "20",
    "number21": "21",
    "number22": "22",
    "number23": "23",
    "number24": "24",
    "number25": "25",
    "number26": "26",
    "number27": "27",
    "number28": "28",
    "number29": "29",
    "number30": "30",
    "number31": "31",
    "number32": "32",
    "number33": "33",
    "number34": "34",
    "number35": "35",
    "number36": "36",
    "number37": "37",
    "number38": "38",
    "number39": "39",
    "number40": "40",
    "number41": "41",
    "number42": "42",
    "number43": "43",
    "number44": "44",
    "number45": "45",
    "number46": "46",
    "number47": "47",
    "number48": "48",
    "number49": "49",
    "number50": "50",
    "number51": "51",
    "number52": "52",
    "number53": "53",
    "number54": "54",
    "number55": "55",
    "number56": "56",
    "number57": "57",
    "number58": "58",
    "number59": "59",
    "number60": "60",
    "number61": "61",
    "number62": "62",
    "number63": "63",
    "number64": "64",
    "number65": "65",
    "number66": "66",
    "number67": "67",
    "number68": "68",
    "number69": "69",
    "number70": "70",
    "number71": "71",
    "number72": "72",
    "number73": "73",
    "number74": "74",
    "number75": "75",
    "number76": "76",
    "number77": "77",
    "number78": "78",
    "number79": "79",
    "number80": "80",
    "number81": "81",
    "number82": "82",
    "number83": "83",
    "number84": "84",
    "number85": "85",
    "number86": "86",
    "number87": "87",
    "number88": "88",
    "number89": "89",
    "number90": "90",
    "number91": "91",
    "number92": "92",
    "number93": "93",
    "number94": "94",
    "number95": "95",
    "number96": "96",
    "number97": "97",
    "number98": "98",
    "number99": "99",
    "number100": "100",
    "number101": "101",
    "number102": "102",
    "number103": "103",
    "number104": "104",
    "number105": "105",
    "number106": "106",
    "number107": "107",
    "number108": "108",
    "number109": "109",
    "number110": "110",
    "number111": "111",
    "number112": "112",
    "number113": "113",
    "number114": "114",
    "number115": "115",
    "number116": "116",
    "number117": "117",
    "number118": "118",
    "number119": "119",
    "number120": "120",
    "number121": "121",
    "number122": "122",
    "number123": "123",
    "number124": "124",
    "number125": "125",
    "number126": "126",
    "number127": "127",
    "number128": "128",
    "number129": "129",
    "number130": "130",
    "number131": "131",
    "number132": "132",
    "number133": "133",
    "number134": "134",
    "number135": "135",
    "number136": "136",
    "number137": "137",
    "number138": "138",
    "number139": "139",
    "number140": "140",
    "number141": "141",
    "number142": "142",
    "number143": "143",
    "number144": "144",
    "number145": "145",
    "number146": "146",
    "number147": "147",
    "number148": "148",
    "number149": "149",
    "number150": "150",
    "number151": "151",
    "number152": "152",
    "number153": "153",
    "number154": "154",
    "number155": "155",
    "number156": "156",
    "number157": "157",
    "number158": "158",
    "number159": "159",
    "number160": "160",
    "number161": "161",
    "number162": "162",
    "number163": "163",
    "number164": "164",
    "number165": "165",
    "number166": "166",
    "number167": "167",
    "number168": "168",
    "number169": "169",
    "number170": "170",
    "number171": "171",
    "number172": "172",
    "number173": "173",
    "number174": "174",
    "number175": "175",
    "number176": "176",
    "number177": "177",
    "number178": "178",
    "number179": "179",
    "number180": "180",
    "number181": "181",
    "number182": "182",
    "number183": "183",
    "number184": "184",
    "number185": "185",
    "number186": "186",
    "number187": "187",
    "number188": "188",
    "number189": "189",
    "number190": "190",
    "number191": "191",
    "number192": "192",
    "number193": "193",
    "number194": "194",
    "number195": "195",
    "number196": "196",
    "number197": "197",
    "number198": "198",
    "number199": "199",
    "number200": "200",
    "number201": "201",
    "number202": "202",
    "number203": "203",
    "number204": "204",
    "number205": "205",
    "number206": "206",
    "number207": "207",
    "number208": "208",
    "number209": "209",
    "number210": "210",
    "number211": "211",
    "number212": "212",
    "number213": "213",
    "number214": "214",
    "number215": "215",
    "number216": "216",
    "number217": "217",
    "number218": "218",
    "number219": "219",
    "number220": "220",
    "number221": "221",
    "number222": "222",
    "number223": "223",
    "number224": "224",
    "number225": "225",
    "number226": "226",
    "number227": "227",
    "number228": "228",
    "number229": "229",
    "number230": "230",
    "number231": "231",
    "number232": "232",
    "number233": "233",
    "number234": "234",
    "number235": "235",
    "number236": "236",
    "number237": "237",
    "number238": "238",
    "number239": "239",
    "number240": "240",
    "number241": "241",
    "number242": "242",
    "number243": "243",
    "number244": "244",
    "number245": "245",
    "number246": "246",
    "number247": "247",
    "number248": "248",
    "number249": "249",
    "number250": "250",
    "number251": "251",
    "number252": "252",
    "number253": "253",
    "number254": "254",
    "number255": "255",
    "number256": "256",
    "number257": "257",
    "number258": "258",
    "number259": "259",
    "number260": "260",
    "number261": "261",
    "number262": "262",
    "number263": "263",
    "number264": "264",
    "number265": "265",
    "number266": "266",
    "number267": "267",
    "number268": "268",
    "number269": "269",
    "number270": "270",
    "number271": "271",
    "number272": "272",
    "number273": "273",
    "number274": "274",
    "number275": "275",
    "number276": "276",
    "number277": "277",
    "number278": "278",
    "number279": "279",
    "number280": "280",
    "number281": "281",
    "number282": "282",
    "number283": "283",
    "number284": "284",
    "number285": "285",
    "number286": "286",
    "number287": "287",
    "number288": "288",
    "number289": "289",
    "number290": "290",
    "number291": "291",
    "number292": "292",
    "number293": "293",
    "number294": "294",
    "number295": "295",
    "number296": "296",
    "number297": "297",
    "number298": "298",
    "number299": "299",
    "number300": "300",
    "number301": "301",
    "number302": "302",
    "number303": "303",
    "number304": "304",
    "number305": "305",
    "number306": "306",
    "number307": "307",
    "number308": "308",
    "number309": "309",
    "number310": "310",
    "number311": "311",
    "number312": "312",
    "number313": "313",
    "number314": "314",
    "number315": "315",
    "number316": "316",
    "number317": "317",
    "number318": "318",
    "number319": "319",
    "number320": "320",
    "number321": "321",
    "number322": "322",
    "number323": "323",
    "number324": "324",
    "number325": "325",
    "number326": "326",
    "number327": "327",
    "number328": "328",
    "number329": "329",
    "number330": "330",
    "number331": "331",
    "number332": "332",
    "number333": "333",
    "number334": "334",
    "number335": "335",
    "number336": "336",
    "number337": "337",
    "number338": "338",
    "number339": "339",
    "number340": "340",
    "number341": "341",
    "number342": "342",
    "number343": "343",
    "number344": "344",
    "number345": "345",
    "number346": "346",
    "number347": "347",
    "number348": "348",
    "number349": "349",
    "number350": "350",
    "number351": "351",
    "number352": "352",
    "number353": "353",
    "number354": "354",
    "number355": "355",
    "number356": "356",
    "number357": "357",
    "number358": "358",
    "number359": "359",
    "number360": "360",
    "number361": "361",
    "number362": "362",
    "number363": "363",
    "number364": "364",
    "number365": "365",
    "number366": "366",
    "number367": "367",
    "number368": "368",
    "number369": "369",
    "number370": "370",
    "number371": "371",
    "number372": "372",
    "number373": "373",
    "number374": "374",
    "number375": "375",
    "number376": "376",
    "number377": "377",
    "number378": "378",
    "number379": "379",
    "number380": "380",
    "number381": "381",
    "number382": "382",
    "number383": "383",
    "number384": "384",
    "number385": "385",
    "number386": "386",
    "number387": "387",
    "number388": "388",
    "number389": "389",
    "number390": "390",
    "number391": "391",
    "number392": "392",
    "number393": "393",
    "number394": "394",
    "number395": "395",
    "number396": "396",
    "number397": "397",
    "number398": "398",
    "number399": "399",
    "number400": "400",
    "number401": "401",
    "number402": "402",
    "number403": "403",
    "number404": "404",
    "number405": "405",
    "number406": "406",
    "number407": "407",
    "number408": "408",
    "number409": "409",
    "number410": "410",
    "number411": "411",
    "number412": "412",
    "number413": "413",
    "number414": "414",
    "number415": "415",
    "number416": "416",
    "number417": "417",
    "number418": "418",
    "number419": "419",
    "number420": "420",
    "number421": "421",
    "number422": "422",
    "number423": "423",
    "number424": "424",
    "number425": "425",
    "number426": "426",
    "number427": "427",
    "number428": "428",
    "number429": "429",
    "number430": "430",
    "number431": "431",
    "number432": "432",
    "number433": "433",
    "number434": "434",
    "number435": "435",
    "number436": "436",
    "number437": "437",
    "number438": "438",
    "number439": "439",
    "number440": "440",
    "number441": "441",
    "number442": "442",
    "number443": "443",
    "number444": "444",
    "number445": "445",
    "number446": "446",
    "number447": "447",
    "number448": "448",
    "number449": "449",
    "number450": "450",
    "number451": "451",
    "number452": "452",
    "number453": "453",
    "number454": "454",
    "number455": "455",
    "number456": "456",
    "number457": "457",
    "number458": "458",
    "number459": "459",
    "number460": "460",
    "number461": "461",
    "number462": "462",
    "number463": "463",
    "number464": "464",
    "number465": "465",
    "number466": "466",
    "number467": "467",
    "number468": "468",
    "number469": "469",
    "number470": "470",
    "number471": "471",
    "number472": "472",
    "number473": "473",
    "number474": "474",
    "number475": "475",
    "number476": "476",
    "number477": "477",
    "number478": "478",
    "number479": "479",
    "number480": "480",
    "number481": "481",
    "number482": "482",
    "number483": "483",
    "number484": "484",
    "number485": "485",
    "number486": "486",
    "number487": "487",
    "number488": "488",
    "number489": "489",
    "number490": "490",
    "number491": "491",
    "number492": "492",
    "number493": "493",
    "number494": "494",
    "number495": "495",
    "number496": "496",
    "number497": "497",
    "number498": "498",
    "number499": "499",
    "number500": "500",
    "number501": "501",
    "number502": "502",
    "number503": "503",
    "number504": "504",
    "number505": "505",
    "number506": "506",
    "number507": "507",
    "number508": "508",
    "number509": "509",
    "number510": "510",
    "number511": "511",
    "number512": "512",
    "number513": "513",
    "number514": "514",
    "number515": "515",
    "number516": "516",
    "number517": "517",
    "number518": "518",
    "number519": "519",
    "number520": "520",
    "number521": "521",
    "number522": "522",
    "number523": "523",
    "number524": "524",
    "number525": "525",
    "number526": "526",
    "number527": "527",
    "number528": "528",
    "number529": "529",
    "number530": "530",
    "number531": "531",
    "number532": "532",
    "number533": "533",
    "number534": "534",
    "number535": "535",
    "number536": "536",
    "number537": "537",
    "number538": "538",
    "number539": "539",
    "number540": "540",
    "number541": "541",
    "number542": "542",
    "number543": "543",
    "number544": "544",
    "number545": "545",
    "number546": "546",
    "number547": "547",
    "number548": "548",
    "number549": "549",
    "number550": "550",
    "number551": "551",
    "number552": "552",
    "number553": "553",
    "number554": "554",
    "number555": "555",
    "number556": "556",
    "number557": "557",
    "number558": "558",
    "number559": "559",
    "number560": "560",
    "number561": "561",
    "number562": "562",
    "number563": "563",
    "number564": "564",
    "number565": "565",
    "number566": "566",
    "number567": "567",
    "number568": "568",
    "number569": "569",
    "number570": "570",
    "number571": "571",
    "number572": "572",
    "number573": "573",
    "number574": "574",
    "number575": "575",
    "number576": "576",
    "number577": "577",
    "number578": "578",
    "number579": "579",
    "number580": "580",
    "number581": "581",
    "number582": "582",
    "number583": "583",
    "number584": "584",
    "number585": "585",
    "number586": "586",
    "number587": "587",
    "number588": "588",
    "number589": "589",
    "number590": "590",
    "number591": "591",
    "number592": "592",
    "number593": "593",
    "number594": "594",
    "number595": "595",
    "number596": "596",
    "number597": "597",
    "number598": "598",
    "number599": "599",
    "number600": "600",
    "number601": "601",
    "number602": "602",
    "number603": "603",
    "number604": "604",
    "number605": "605",
    "number606": "606",
    "number607": "607",
    "number608": "608",
    "number609": "609",
    "number610": "610",
    "number611": "611",
    "number612": "612",
    "number613": "613",
    "number614": "614",
    "number615": "615",
    "number616": "616",
    "number617": "617",
    "number618": "618",
    "number619": "619",
    "number620": "620",
    "number621": "621",
    "number622": "622",
    "number623": "623",
    "number624": "624",
    "number625": "625",
    "number626": "626",
    "number627": "627",
    "number628": "628",
    "number629": "629",
    "number630": "630",
    "number631": "631",
    "number632": "632",
    "number633": "633",
    "number634": "634",
    "number635": "635",
    "number636": "636",
    "number637": "637",
    "number638": "638",
    "number639": "639",
    "number640": "640",
    "number641": "641",
    "number642": "642",
    "number643": "643",
    "number644": "644",
    "number645": "645",
    "number646": "646",
    "number647": "647",
    "number648": "648",
    "number649": "649",
    "number650": "650",
    "number651": "651",
    "number652": "652",
    "number653": "653",
    "number654": "654",
    "number655": "655",
    "number656": "656",
    "number657": "657",
    "number658": "658",
    "number659": "659",
    "number660": "660",
    "number661": "661",
    "number662": "662",
    "number663": "663",
    "number664": "664",
    "number665": "665",
    "number666": "666",
    "number667": "667",
    "number668": "668",
    "number669": "669",
    "number670": "670",
    "number671": "671",
    "number672": "672",
    "number673": "673",
    "number674": "674",
    "number675": "675",
    "number676": "676",
    "number677": "677",
    "number678": "678",
    "number679": "679",
    "number680": "680",
    "number681": "681",
    "number682": "682",
    "number683": "683",
    "number684": "684",
    "number685": "685",
    "number686": "686",
    "number687": "687",
    "number688": "688",
    "number689": "689",
    "number690": "690",
    "number691": "691",
    "number692": "692",
    "number693": "693",
    "number694": "694",
    "number695": "695",
    "number696": "696",
    "number697": "697",
    "number698": "698",
    "number699": "699",
    "number700": "700",
    "number701": "701",
    "number702": "702",
    "number703": "703",
    "number704": "704",
    "number705": "705",
    "number706": "706",
    "number707": "707",
    "number708": "708",
    "number709": "709",
    "number710": "710",
    "number711": "711",
    "number712": "712",
    "number713": "713",
    "number714": "714",
    "number715": "715",
    "number716": "716",
    "number717": "717",
    "number718": "718",
    "number719": "719",
    "number720": "720",
    "number721": "721",
    "number722": "722",
    "number723": "723",
    "number724": "724",
    "number725": "725",
    "number726": "726",
    "number727": "727",
    "number728": "728",
    "number729": "729",
    "number730": "730",
    "number731": "731",
    "number732": "732",
    "number733": "733",
    "number734": "734",
    "number735": "735",
    "number736": "736",
    "number737": "737",
    "number738": "738",
    "number739": "739",
    "number740": "740",
    "number741": "741",
    "number742": "742",
    "number743": "743",
    "number744": "744",
    "number745": "745",
    "number746": "746",
    "number747": "747",
    "number748": "748",
    "number749": "749",
    "number750": "750",
    "number751": "751",
    "number752": "752",
    "number753": "753",
    "number754": "754",
    "number755": "755",
    "number756": "756",
    "number757": "757",
    "number758": "758",
    "number759": "759",
    "number760": "760",
    "number761": "761",
    "number762": "762",
    "number763": "763",
    "number764": "764",
    "number765": "765",
    "number766": "766",
    "number767": "767",
    "number768": "768",
    "number769": "769",
    "number770": "770",
    "number771": "771",
    "number772": "772",
    "number773": "773",
    "number774": "774",
    "number775": "775",
    "number776": "776",
    "number777": "777",
    "number778": "778",
    "number779": "779",
    "number780": "780",
    "number781": "781",
    "number782": "782",
    "number783": "783",
    "number784": "784",
    "number785": "785",
    "number786": "786",
    "number787": "787",
    "number788": "788",
    "number789": "789",
    "number790": "790",
    "number791": "791",
    "number792": "792",
    "number793": "793",
    "number794": "794",
    "number795": "795",
    "number796": "796",
    "number797": "797",
    "number798": "798",
    "number799": "799",
    "number800": "800",
    "number801": "801",
    "number802": "802",
    "number803": "803",
    "number804": "804",
    "number805": "805",
    "number806": "806",
    "number807": "807",
    "number808": "808",
    "number809": "809",
    "number810": "810",
    "number811": "811",
    "number812": "812",
    "number813": "813",
    "number814": "814",
    "number815": "815",
    "number816": "816",
    "number817": "817",
    "number818": "818",
    "number819": "819",
    "number820": "820",
    "number821": "821",
    "number822": "822"
  }
</include>

================================================
FILE: test/fixtures/inner-locals-not-json.html
================================================
<h1>index</h1>

<include src="./test/fixtures/includes/3.html">
  text: fail
</include>

================================================
FILE: test/fixtures/inner-locals.html
================================================
<h1>index</h1>

<include src="./test/fixtures/includes/3.html">
  {
    "text": 3
  }
</include>

================================================
FILE: test/fixtures/locals-not-json.html
================================================
<h1>index</h1><include src="./test/fixtures/includes/3.html" locals='{{ response }}'></include>


================================================
FILE: test/fixtures/locals.html
================================================
<h1>index</h1><include src="./test/fixtures/includes/3.html" locals='{"text": 3}'></include>


================================================
FILE: test/fixtures/multiple-include.html
================================================
<include src="./test/fixtures/includes/6.html">{ "localVariable": "local1" }</include>
<include src="./test/fixtures/includes/6.html">{ "localVariable": "local2" }</include>
<include src="./test/fixtures/includes/6.html">{ "localVariable": "local3" }</include>
<include src="./test/fixtures/includes/6.html">{ "localVariable": "local4" }</include>
<include src="./test/fixtures/includes/6.html">{ "localVariable": "local5" }</include>


================================================
FILE: test/fixtures/nested.html
================================================
<h1>index</h1><include src="./test/fixtures/includes/1.html"></include>


================================================
FILE: test/fixtures/not-clear-rest.html
================================================
<section>
  <h1>Contact</h1>
  <include src="./test/fixtures/includes/4.html"
    locals='{"foo":"Bar"}'></include>
</section>


================================================
FILE: test/fixtures/override-global-variables.html
================================================
<div>Should override global locals</div>
<div>local</div>
<div>local</div>


================================================
FILE: test/fixtures/root.html
================================================
<include src="./button/button.html">


================================================
FILE: test/test.js
================================================
const test = require('ava')
const plugin = require('../lib/index.js')
const posthtml = require('posthtml')

const path = require('path')
const {readFileSync} = require('fs')

const fixture = file => readFileSync(path.join(__dirname, 'fixtures', `${file}.html`), 'utf8')
const expected = file => readFileSync(path.join(__dirname, 'expected', `${file}.html`), 'utf8')

const clean = html => html.replace(/[^\S\r\n]+$/gm, '').trim()

const process = (t, name, options, log = false) => {
  return posthtml([plugin(options)])
    .process(fixture(name))
    .then(result => log ? console.log(result.html) : clean(result.html))
    .then(html => t.is(html, expected(name).trim()))
}

test('Basic', t => {
  return process(t, 'basic')
})

test('Root option', t => {
  return process(t, 'root', {root: './test/fixtures/blocks/'})
})

test('Nested includes', t => {
  return process(t, 'nested')
})

test('Locals', t => {
  return process(t, 'locals')
})

test('Locals not json', t => {
  return process(t, 'locals-not-json')
})

test('Inner locals', t => {
  return process(t, 'inner-locals')
})

test('Inner locals not json', t => {
  return process(t, 'inner-locals-not-json')
})

test('Inner locals big json', t => {
  return process(t, 'inner-locals-big-json')
})

test('Shoult not cut children elements', t => {
  return process(t, 'not-clear-rest')
})

test('Should merge global locals', t => {
  return process(t, 'global-variables', {
    posthtmlExpressionsOptions: {
      locals: {globalVariable: 'global'}
    }})
})

test('Should override global locals', t => {
  return process(t, 'override-global-variables', {
    posthtmlExpressionsOptions: {
      locals: {globalVariable: 'global'}
    }})
})

test('Should merge global variables and evaluate each local variable', t => {
  return process(t, 'multiple-include', {
    posthtmlExpressionsOptions: {
      locals: {globalVariable: 'global'}
    }})
})

test('addDependency message', t => {
  const includePath = require('path').resolve('./test/fixtures/blocks/button/button.html')

  return posthtml()
    .use(plugin())
    .process('<include src="./test/fixtures/blocks/button/button.html">')
    .then(result => t.is(result.messages[0].file, includePath))
})


================================================
FILE: xo.config.js
================================================
module.exports = {
  space: true,
  rules: {
    semi: 0,
    'unicorn/string-content': 0,
    'ava/prefer-async-await': 0,
    'promise/prefer-await-to-then': 0,
    'unicorn/no-abusive-eslint-disable': 0,
    quotes: ['error', 'single', {allowTemplateLiterals: true}]
  }
};
Download .txt
gitextract_pjkmsduc/

├── .editorconfig
├── .github/
│   ├── funding.yml
│   └── workflows/
│       └── nodejs.yml
├── .gitignore
├── .nycrc
├── LICENSE
├── README.md
├── lib/
│   └── index.js
├── package.json
├── test/
│   ├── expected/
│   │   ├── basic.html
│   │   ├── global-variables.html
│   │   ├── inner-locals-big-json.html
│   │   ├── inner-locals-not-json.html
│   │   ├── inner-locals.html
│   │   ├── locals-not-json.html
│   │   ├── locals.html
│   │   ├── multiple-include.html
│   │   ├── nested.html
│   │   ├── not-clear-rest.html
│   │   ├── override-global-variables.html
│   │   └── root.html
│   ├── fixtures/
│   │   ├── basic.html
│   │   ├── blocks/
│   │   │   ├── button/
│   │   │   │   └── button.html
│   │   │   └── partial/
│   │   │       └── phone.html
│   │   ├── global-variables.html
│   │   ├── includes/
│   │   │   ├── 1.html
│   │   │   ├── 2.html
│   │   │   ├── 3.html
│   │   │   ├── 4.html
│   │   │   ├── 5.html
│   │   │   └── 6.html
│   │   ├── inner-locals-big-json.html
│   │   ├── inner-locals-not-json.html
│   │   ├── inner-locals.html
│   │   ├── locals-not-json.html
│   │   ├── locals.html
│   │   ├── multiple-include.html
│   │   ├── nested.html
│   │   ├── not-clear-rest.html
│   │   ├── override-global-variables.html
│   │   └── root.html
│   └── test.js
└── xo.config.js
Condensed preview — 43 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (78K chars).
[
  {
    "path": ".editorconfig",
    "chars": 171,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nindent_size = 2\nindent_style = space\ntrim_trailing_whitespace = true\ninsert_final_newli"
  },
  {
    "path": ".github/funding.yml",
    "chars": 639,
    "preview": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [u"
  },
  {
    "path": ".github/workflows/nodejs.yml",
    "chars": 785,
    "preview": "name: Actions Status\non:\n  pull_request:\n    types: [opened, synchronize]\n    branches:\n      - master\nenv:\n  CI: true\n\n"
  },
  {
    "path": ".gitignore",
    "chars": 40,
    "preview": "node_modules\ncoverage\n.nyc_output\n*.log\n"
  },
  {
    "path": ".nycrc",
    "chars": 34,
    "preview": "{\n  \"reporter\": [\"lcov\", \"text\"]\n}"
  },
  {
    "path": "LICENSE",
    "chars": 1080,
    "preview": "MIT License (MIT)\n\nCopyright (c) PostHTML Ivan Voischev\n\nPermission is hereby granted, free of charge, to any person obt"
  },
  {
    "path": "README.md",
    "chars": 3814,
    "preview": "[![Actions Status][action]][action-url]\n[![NPM][npm]][npm-url]\n[![Coverage][cover]][cover-url]\n\n<div align=\"center\">\n  <"
  },
  {
    "path": "lib/index.js",
    "chars": 2651,
    "preview": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst posthtml = require('posthtml');\nconst {pars"
  },
  {
    "path": "package.json",
    "chars": 821,
    "preview": "{\n  \"name\": \"posthtml-include\",\n  \"version\": \"2.0.1\",\n  \"description\": \"Include files in HTML\",\n  \"license\": \"MIT\",\n  \"a"
  },
  {
    "path": "test/expected/basic.html",
    "chars": 63,
    "preview": "<div class=\"button\"><div class=\"button__text\">Text</div></div>\n"
  },
  {
    "path": "test/expected/global-variables.html",
    "chars": 73,
    "preview": "<div>Should merge global locals</div>\n<div>local</div>\n<div>global</div>\n"
  },
  {
    "path": "test/expected/inner-locals-big-json.html",
    "chars": 12853,
    "preview": "<h1>index</h1>\n\n<ul>\n  <li>5f80a36f5be511b1fc7afb87</li>\n  <li>0</li>\n  <li>0bc2e2bc-69f5-4fa4-9d05-3167ed5e33f2</li>\n  "
  },
  {
    "path": "test/expected/inner-locals-not-json.html",
    "chars": 36,
    "preview": "<h1>index</h1>\n\n<h2>{{ text }}</h2>\n"
  },
  {
    "path": "test/expected/inner-locals.html",
    "chars": 26,
    "preview": "<h1>index</h1>\n\n<h2>3</h2>"
  },
  {
    "path": "test/expected/locals-not-json.html",
    "chars": 34,
    "preview": "<h1>index</h1><h2>{{ text }}</h2>\n"
  },
  {
    "path": "test/expected/locals.html",
    "chars": 25,
    "preview": "<h1>index</h1><h2>3</h2>\n"
  },
  {
    "path": "test/expected/multiple-include.html",
    "chars": 184,
    "preview": "<div>local1</div>\n<div>global</div>\n\n<div>local2</div>\n<div>global</div>\n\n<div>local3</div>\n<div>global</div>\n\n<div>loca"
  },
  {
    "path": "test/expected/nested.html",
    "chars": 36,
    "preview": "<h1>index</h1><h2>1</h2>\n<h2>2</h2>\n"
  },
  {
    "path": "test/expected/not-clear-rest.html",
    "chars": 195,
    "preview": "<section>\n  <h1>Contact</h1>\n  <div>\n  <h2>Bar</h2>\n  <p>\n    <a href=\"callto:+123456\">+123456</a>\n    <br>\n    <a href="
  },
  {
    "path": "test/expected/override-global-variables.html",
    "chars": 75,
    "preview": "<div>Should override global locals</div>\n<div>local</div>\n<div>local</div>\n"
  },
  {
    "path": "test/expected/root.html",
    "chars": 63,
    "preview": "<div class=\"button\"><div class=\"button__text\">Text</div></div>\n"
  },
  {
    "path": "test/fixtures/basic.html",
    "chars": 58,
    "preview": "<include src=\"./test/fixtures/blocks/button/button.html\">\n"
  },
  {
    "path": "test/fixtures/blocks/button/button.html",
    "chars": 63,
    "preview": "<div class=\"button\"><div class=\"button__text\">Text</div></div>\n"
  },
  {
    "path": "test/fixtures/blocks/partial/phone.html",
    "chars": 36,
    "preview": "<a href=\"callto:+123456\">+123456</a>"
  },
  {
    "path": "test/fixtures/global-variables.html",
    "chars": 132,
    "preview": "<div>Should merge global locals</div>\n<include src=\"./test/fixtures/includes/6.html\">\n  {\n  \"localVariable\": \"local\"\n  }"
  },
  {
    "path": "test/fixtures/includes/1.html",
    "chars": 69,
    "preview": "<h2>1</h2>\n<include src=\"./test/fixtures/includes/2.html\"></include>\n"
  },
  {
    "path": "test/fixtures/includes/2.html",
    "chars": 10,
    "preview": "<h2>2</h2>"
  },
  {
    "path": "test/fixtures/includes/3.html",
    "chars": 19,
    "preview": "<h2>{{ text }}</h2>"
  },
  {
    "path": "test/fixtures/includes/4.html",
    "chars": 189,
    "preview": "<div>\n  <h2>{{ foo }}</h2>\n  <p>\n    <include src=\"./test/fixtures/blocks/partial/phone.html\"></include>\n    <br>\n    <a"
  },
  {
    "path": "test/fixtures/includes/5.html",
    "chars": 20874,
    "preview": "<ul>\n  <li>{{_id}}</li>\n  <li>{{index}}</li>\n  <li>{{guid}}</li>\n  <li>{{isActive}}</li>\n  <li>{{balance}}</li>\n  <li>{{"
  },
  {
    "path": "test/fixtures/includes/6.html",
    "chars": 63,
    "preview": "<div>{{ localVariable }}</div>\n<div>{{ globalVariable }}</div>\n"
  },
  {
    "path": "test/fixtures/inner-locals-big-json.html",
    "chars": 20414,
    "preview": "<h1>index</h1>\n\n<include src=\"./test/fixtures/includes/5.html\">\n  {\n    \"_id\": \"5f80a36f5be511b1fc7afb87\",\n    \"index\": "
  },
  {
    "path": "test/fixtures/inner-locals-not-json.html",
    "chars": 87,
    "preview": "<h1>index</h1>\n\n<include src=\"./test/fixtures/includes/3.html\">\n  text: fail\n</include>"
  },
  {
    "path": "test/fixtures/inner-locals.html",
    "chars": 96,
    "preview": "<h1>index</h1>\n\n<include src=\"./test/fixtures/includes/3.html\">\n  {\n    \"text\": 3\n  }\n</include>"
  },
  {
    "path": "test/fixtures/locals-not-json.html",
    "chars": 96,
    "preview": "<h1>index</h1><include src=\"./test/fixtures/includes/3.html\" locals='{{ response }}'></include>\n"
  },
  {
    "path": "test/fixtures/locals.html",
    "chars": 93,
    "preview": "<h1>index</h1><include src=\"./test/fixtures/includes/3.html\" locals='{\"text\": 3}'></include>\n"
  },
  {
    "path": "test/fixtures/multiple-include.html",
    "chars": 435,
    "preview": "<include src=\"./test/fixtures/includes/6.html\">{ \"localVariable\": \"local1\" }</include>\n<include src=\"./test/fixtures/inc"
  },
  {
    "path": "test/fixtures/nested.html",
    "chars": 72,
    "preview": "<h1>index</h1><include src=\"./test/fixtures/includes/1.html\"></include>\n"
  },
  {
    "path": "test/fixtures/not-clear-rest.html",
    "chars": 127,
    "preview": "<section>\n  <h1>Contact</h1>\n  <include src=\"./test/fixtures/includes/4.html\"\n    locals='{\"foo\":\"Bar\"}'></include>\n</se"
  },
  {
    "path": "test/fixtures/override-global-variables.html",
    "chars": 75,
    "preview": "<div>Should override global locals</div>\n<div>local</div>\n<div>local</div>\n"
  },
  {
    "path": "test/fixtures/root.html",
    "chars": 37,
    "preview": "<include src=\"./button/button.html\">\n"
  },
  {
    "path": "test/test.js",
    "chars": 2221,
    "preview": "const test = require('ava')\nconst plugin = require('../lib/index.js')\nconst posthtml = require('posthtml')\n\nconst path ="
  },
  {
    "path": "xo.config.js",
    "chars": 277,
    "preview": "module.exports = {\n  space: true,\n  rules: {\n    semi: 0,\n    'unicorn/string-content': 0,\n    'ava/prefer-async-await':"
  }
]

About this extraction

This page contains the full source code of the posthtml/posthtml-include GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 43 files (67.6 KB), approximately 26.4k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!