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]

Include Plugin

Install

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

Usage

```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

Usage

__index.html__ ```html index.html ``` __components/button.html__ ```html ``` ```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 index.html ``` You can also pass your locals directly on the \ 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 { "text": "Button" } ``` > **Note:** Also supports multi nesting.

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. [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 ", "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 ================================================
Text
================================================ FILE: test/expected/global-variables.html ================================================
Should merge global locals
local
global
================================================ FILE: test/expected/inner-locals-big-json.html ================================================

index

================================================ FILE: test/expected/inner-locals-not-json.html ================================================

index

{{ text }}

================================================ FILE: test/expected/inner-locals.html ================================================

index

3

================================================ FILE: test/expected/locals-not-json.html ================================================

index

{{ text }}

================================================ FILE: test/expected/locals.html ================================================

index

3

================================================ FILE: test/expected/multiple-include.html ================================================
local1
global
local2
global
local3
global
local4
global
local5
global
================================================ FILE: test/expected/nested.html ================================================

index

1

2

================================================ FILE: test/expected/not-clear-rest.html ================================================

Contact

Bar

+123456
email@company.com

================================================ FILE: test/expected/override-global-variables.html ================================================
Should override global locals
local
local
================================================ FILE: test/expected/root.html ================================================
Text
================================================ FILE: test/fixtures/basic.html ================================================ ================================================ FILE: test/fixtures/blocks/button/button.html ================================================
Text
================================================ FILE: test/fixtures/blocks/partial/phone.html ================================================ +123456 ================================================ FILE: test/fixtures/global-variables.html ================================================
Should merge global locals
{ "localVariable": "local" } ================================================ FILE: test/fixtures/includes/1.html ================================================

1

================================================ FILE: test/fixtures/includes/2.html ================================================

2

================================================ FILE: test/fixtures/includes/3.html ================================================

{{ text }}

================================================ FILE: test/fixtures/includes/4.html ================================================

{{ foo }}


email@company.com

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

index

{ "_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" } ================================================ FILE: test/fixtures/inner-locals-not-json.html ================================================

index

text: fail ================================================ FILE: test/fixtures/inner-locals.html ================================================

index

{ "text": 3 } ================================================ FILE: test/fixtures/locals-not-json.html ================================================

index

================================================ FILE: test/fixtures/locals.html ================================================

index

================================================ FILE: test/fixtures/multiple-include.html ================================================ { "localVariable": "local1" } { "localVariable": "local2" } { "localVariable": "local3" } { "localVariable": "local4" } { "localVariable": "local5" } ================================================ FILE: test/fixtures/nested.html ================================================

index

================================================ FILE: test/fixtures/not-clear-rest.html ================================================

Contact

================================================ FILE: test/fixtures/override-global-variables.html ================================================
Should override global locals
local
local
================================================ FILE: test/fixtures/root.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('') .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}] } };