# spice

> No-frills string interpolation library.

Latest version **1.0.2** (published 2013-05-19) · MIT license · 0 weekly downloads

## Install

```sh
npm install spice
pnpm add spice
yarn add spice
bun add spice
```

## 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.2 |
| Published | 2013-05-19 |
| First published | 2013-01-03 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Quildreen "Sorella" Motta |
| Maintainers | killdream |
| Keywords | string, formatting, interpolation |

## Links

- npm: https://www.npmjs.com/package/spice
- Repository: https://github.com/killdream/spice
- npm.io page: https://npm.io/package/spice

## Alternatives

- [mobx-react](https://npm.io/package/mobx-react.md) — 2.8M weekly downloads
- [rc-tree](https://npm.io/package/rc-tree.md) — 2.6M weekly downloads
- [@react-oauth/google](https://npm.io/package/@react-oauth/google.md) — 1.3M weekly downloads
- [@wagmi/connectors](https://npm.io/package/@wagmi/connectors.md) — 877.0K weekly downloads
- [vee-validate](https://npm.io/package/vee-validate.md) — 836.4K weekly downloads

## Recent versions

- 1.0.2 (latest) — 2013-05-19
- 1.0.1 — 2013-05-19
- 1.0.0 — 2013-05-10
- 0.1.1 — 2013-01-03
- 0.1.0 — 2013-01-03

## README

Spice [![Build Status](https://travis-ci.org/killdream/spice.png)](https://travis-ci.org/killdream/spice) ![Dependencies Status](https://david-dm.org/killdream/spice.png)
=====

No-frills string interpolation library.

```js
var spice = require('spice')
spice('Hello, {:subject}!', { subject: 'world' })
// => (string) "Hello, world!"
```

Or, alternatively, mess with the `String#prototype`:

```js
var spice = require('spice')
String.prototype.format = function(mappings) {
  return spice(this, mappings)
}

'Hello, {:subject}!'.format({
  subject: 'world'
})
// => (string) "Hello, world!"
```


## Installing

The easiest way is to grab it from NPM (use [browserify][] if you're on a
Browser):

    $ npm install spice
    # Then require it as usual
    node> var spice = require('spice')
    
If you **really** want to suffer with old and terrible module/no-module
formats, you can run `make dist` yourself:

    $ git clone git://github.com/killdream/spice
    $ cd spice
    $ npm install
    $ make dist
    # And incldue `dist/spice.umd.js` on your AMD/script tag/whatever.


[browserify]: https://github.com/substack/node-browserify

## API

### `format(string, mappings)`

Performs string interpolation, given a template string as basis, and a
substitution map.

```hs
template-value: string | (string -> string)
format: string, { string -> template-value } -> string
```

If a mapping is not given, we assume it to be an empty object, in which case
the template variables are just stripped away.

A template variable is a special construct in the form:

    <template-variable> ::= "{:" (any but "}") "}"
    
For example, to provide a "Hello, world!" template, that adjusts to a given
name, one could write:

```js
format("Hello, {:subject}!", { subject: "world" })
// => "Hello, world!"
```

A template variable can be escaped by placing a backslash between the
open-curly braces and the colon, such that the construct would be output
verbatim:

```js
format("Hello, {\\:subject}!", { subject: "world" })
// => "Hello, {:subject}!"
```


## Platform support

ES3 and beyond!

[![browser support](https://ci.testling.com/killdream/spice.png)](http://ci.testling.com/killdream/spice)


## Testing

For Node, just:

    $ npm test
    

## Licence

MIT/X11. Just do whatever you want to.

    $ less LICENCE

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