Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

No-frills string interpolation library.

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 test
Octocat-spinner-32 .hgignore
Octocat-spinner-32 .hgtags
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 CHANGELOG.md
Octocat-spinner-32 LICENCE
Octocat-spinner-32 Makefile
Octocat-spinner-32 README.md
Octocat-spinner-32 package.json
Octocat-spinner-32 spice.js
README.md

Spice

Build Status NPM version Dependencies Status stable

No-frills string interpolation library.

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

Or, alternatively, mess with the String#prototype:

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 bundle yourself:

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

API

format(string, mappings)

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

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:

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:

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

Platform support

ES3 and beyond!

browser support

Testing

For Node, just:

$ npm test

For the browser:

$ npm install -g brofist-browser
$ make test
$ brofist-browser serve test/specs
# Then point your browsers to the URL on yer console.

Licence

MIT/X11. Just do whatever you want to.

$ less LICENCE
Something went wrong with that request. Please try again.