Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/pupa
Simple micro templating
https://github.com/sindresorhus/pupa
interpolation npm-package placeholder string template- template-engine template-library templating
Last synced: about 2 months ago
JSON representation
Simple micro templating
- Host: GitHub
- URL: https://github.com/sindresorhus/pupa
- Owner: sindresorhus
- License: mit
- Created: 2017-01-10T05:02:16.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2022-12-21T21:51:27.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T00:56:57.397Z (5 months ago)
- Topics: interpolation, npm-package, placeholder, string, template-, template-engine, template-library, templating
- Language: JavaScript
- Size: 20.5 KB
- Stars: 353
- Watchers: 7
- Forks: 22
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Funding: .github/funding.yml
- License: license
- Security: .github/security.md
Awesome Lists containing this project
README
# pupa
> Simple micro templating
Useful when all you need is to fill in some placeholders.
## Install
```sh
npm install pupa
```## Usage
```js
import pupa from 'pupa';pupa('The mobile number of {name} is {phone.mobile}', {
name: 'Sindre',
phone: {
mobile: '609 24 363'
}
});
//=> 'The mobile number of Sindre is 609 24 363'pupa('I like {0} and {1}', ['🦄', '🐮']);
//=> 'I like 🦄 and 🐮'// Double braces encodes the HTML entities to avoid code injection.
pupa('I like {{0}} and {{1}}', ['
🦄', '🐮']);
//=> 'I like <br>🦄</br> and <i>🐮</i>'
```Note: It does not support nesting placeholders: `pupa('{phone.{type}}', …)`
## API
### pupa(template, data, options?)
#### template
Type: `string`
Text with placeholders for `data` properties.
#### data
Type: `object | unknown[]`
Data to interpolate into `template`.
The keys should be a valid JS identifier or number (`a-z`, `A-Z`, `0-9`).
#### options
Type: `object`
##### ignoreMissing
Type: `boolean`\
Default: `false`By default, Pupa throws a `MissingValueError` when a placeholder resolves to `undefined`. With this option set to `true`, it simply ignores it and leaves the placeholder as is.
##### transform
Type: `((data: {value: unknown; key: string}) => unknown) | undefined` (default: `({value}) => value`)
Performs arbitrary operation for each interpolation. If the returned value was `undefined`, it behaves differently depending on the `ignoreMissing` option. Otherwise, the returned value will be interpolated into a string (and escaped when double-braced) and embedded into the template.
### MissingValueError
Exposed for instance checking.
## FAQ
### What about template literals?
Template literals expand on creation. This module expands the template on execution, which can be useful if either or both template and data are lazily created or user-supplied.
## Related
- [pupa-cli](https://github.com/sindresorhus/pupa-cli) - CLI for this module