Bake entities into your tweets; turning text plus entities into beautiful, customisable HTML.

Tweet Baker

Bake Twitter entities into your tweets; turning text plus entities into beautiful, customisable HTML. Useful when you're interacting with the Twitter API.

Current Version: 1.0.0
Build Status:
Node Support: 0.6, 0.8, 0.10
Browser Support: Android Browser 2.2–4.2, Firefox 3.6, Firefox 4–22, Google Chrome 14–28, Internet Explorer 6–10, Mobile Safari iOS 3–6, Safari 4–6

    text: "The toilet of fail… with @perryharlock",
    entities: {
        user_mentions: [ ... ],
        media: [ ... ]
//> The toilet of fail… with 
//> <a href="" title="Perry Harlock">@perryharlock</a> 
//> <a href=""></a> 

You can install the latest version of Tweet Baker on Node.js, with Bower, or with Component:

$ npm install tweet-baker
$ bower install tweet-baker
$ component install rowanmanning/tweet-baker

Alternatively, you can download lib/tweet-baker.js and include it in your page with a script.

Tweet Baker can be required with CommonJS and AMD, or found on window.bake if you're including with a script.

Tweet Baker provides sensible default templates, meaning that you can use it simply by calling bake with your tweet object as an argument.

var bake = require('tweet-baker');
var tweetHtml = bake(tweetObjectFromApi);

If you wish to customise the HTML which is output by Tweet Baker, you can do so by creating your own baker. Call bake.make with an object containing your template functions. These are simple functions which recieve an entity construct and return HTML:

var bake = require('tweet-baker');
var myBake = bake.make({
    user_mentionsfunction (ctx) {
        // use `ctx` to return HTML for a user mention 
    mediafunction (ctx) {
        // use `ctx` to return HTML for media URLs 
    hashtagsfunction (ctx) {
        // use `ctx` to return HTML for hashtags 
    urlsfunction (ctx) {
        // use `ctx` to return HTML for URLs 
var customTweetHtml = myBake(tweetObjectFromApi);

Note that each property in your template object matches the name of an entity type returned by the Twitter API. For an example of how to build custom templates, look for defaultTemplates in the library JavaScript.

Because Tweet Baker templates are just functions, you can use almost any template engine; just pass your compiled templates into bake.make.

If you wish to contribute to Tweet Baker, fork this repository locally and install dependencies with npm install. Now you can run the following commands to lint and test the code.

$ make lint  # Run JSHint on the code 
$ make test  # Run unit tests 

Please ensure there are no lint errors or failing tests before opening a pull request.

Tweet Baker is licensed under the MIT license.