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}]
}
};
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.