# hb-interpolate-helpers

> Interpolate a json file through a Handlebars template file (with optional helpers) to stdout.

Latest version **1.0.5** (published 2017-04-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install hb-interpolate-helpers
pnpm add hb-interpolate-helpers
yarn add hb-interpolate-helpers
bun add hb-interpolate-helpers
```

Provides the command `hb-interpolate-helpers`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.5 |
| Published | 2017-04-05 |
| First published | 2017-03-04 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Known vulnerabilities | 0 (+9 in 2 direct dependencies) |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Tom Marrs |
| Maintainers | tmarrs |
| Keywords | handlebars, json, interpolate, render, cli, helpers |

## Links

- npm: https://www.npmjs.com/package/hb-interpolate-helpers
- Repository: https://github.com/tmarrs/hb-interpolate-helpers
- Issues: https://github.com/tmarrs/hb-interpolate-helpers/issues
- npm.io page: https://npm.io/package/hb-interpolate-helpers

## Dependencies (8)

- [chalk](https://npm.io/package/chalk.md) ^1.0.0
- [debug](https://npm.io/package/debug.md) ^2.2.0
- [lodash](https://npm.io/package/lodash.md) ^3.8.0
- [bluebird](https://npm.io/package/bluebird.md) ^2.9.25
- [jsonfile](https://npm.io/package/jsonfile.md) ^2.0.0
- [commander](https://npm.io/package/commander.md) ^2.8.1
- [handlebars](https://npm.io/package/handlebars.md) ^3.0.3
- [read-package-json](https://npm.io/package/read-package-json.md) ^2.0.0

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.0.5 (latest) — 2017-04-05
- 1.0.4 — 2017-04-05
- 1.0.3 — 2017-04-05
- 1.0.2 — 2017-03-07
- 1.0.1 — 2017-03-04
- 1.0.0 — 2017-03-04

## README

hb-interpolate-helpers
======================
*Interpolate a json file through a [Handlebars](http://handlebarsjs.com/) template file to stdout.*


## Contents
- [About](#about)
- [Usage](#usage)
- [Notes](#notes)
- [Handlebars Helpers File](#handlebars-helpers-file)
    - [Further Information on Handlebars Helpers and Node.js Modules](#further-information-on-handlebars-helpers-and-nodejs-modules)
- [References](#references)


## About
`hb-interpolate-helpers` (based on [`hb-interpolate`](https://www.npmjs.com/package/hb-interpolate)) is a very simple command line tool that reads a `.json` file and a Handlebars template file, and then writes the implied interpolation to stdout. This project was forked from 
[`hb-interpolate`](https://github.com/jimlloyd/hb-interpolate.git), and adds the ability to pass in an optional Handlebars helpers file.


## Usage

```
$ hb-interpolate-helpers --help

  Usage: hb-interpolate-helpers [options]

  Options:

    -f, --file             Handlebars helpers file
    -h, --help             Output usage information
    -j, --json [path]      JSON file with input data
    -t, --template [path]  Handlebars template to interpolate
    -n, --noEscape         Don't do HTML escaping

If the JSON file is a package.json, read-package-json is used to read the file.
Note that read-package-json normalizes some fields.
  `--json [path]` and `--tempate [path]` are REQUIRED.
```


## Notes

* The `--json [path]` and `--template [path]` arguments are required.
* If the basename of the json path is `package.json`, `hb-interpolate-helpers` uses the node package [read-package-json](https://www.npmjs.com/package/read-package-json) to read the file, which normalizes some fields, in particular all [people fields](https://docs.npmjs.com/files/package.json#people-fields-author-contributors). Any other JSON file is returned directly as read.
* The `--noEscape` option may be used to turn off Handlebars HTML escaping.
* The `--file` option may be used to add in a Handlebars helpers file.


## Handlebars Helpers File
The optional Handlebars helpers file enables you to add your own customized helpers that enable you to add
more complex logic to Handlebars template processing. Here's how to create a Handlebars Helpers file (written in JavaScript) to work with `hb-interpolate-helpers`:

* Create helper functions. There's no need to export these functions - just keep them internal.
* Create and export method called `registerHelpers()` that takes a Handlebars object as a parameter.
  * Use the module exports mechanism from Node.js. 
  * Register all your helpers with the `Handlebars.registerHelper()` method. You can register each helper by name or with a single object.
  * `hb-interpolate-helpers` has already initialized the Handlebars object, so you only need to call 
`registerHelpers()`. Also, there's no need to do a `require()` on Handlebars or setup a Node.js project
with `package.json`.


### Further Information on Handlebars Helpers and Node.js Modules

Please see the following for more information:

* Here's a sample Handlebars helpers file that follows the above instructions and integrates with `hb-interpolate-helpers` - [testHelpers.js](https://github.com/tmarrs/hb-interpolate-helpers/blob/master/testdata/testHelpers.js).
  * This project's [`test.sh` script](https://github.com/tmarrs/hb-interpolate-helpers/blob/master/test.sh) shows an example of how to use the helpers file. 
* For more information on how `registerHelpers()` works, please see the [Handlebars API Reference](http://handlebarsjs.com/reference.html).
* The `registerHelpers()` method enables the developer to extend this utility. This follows the 
principle of [Inversion of Control](https://martinfowler.com/bliki/InversionOfControl.html).
* To learn more about Node.js modules, please see SitePoint's excellent article on [Understanding module.exports and exports in Node.js](https://www.sitepoint.com/understanding-module-exports-exports-node-js).


## References
TOC generated by [md-toc](https://www.npmjs.com/package/md-toc).

---
_Source: https://npm.io/package/hb-interpolate-helpers · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
