1.1.0 • Published 11 years ago

deposit v1.1.0

Weekly downloads
10
License
MIT
Repository
github
Last release
11 years ago

deposit NPM Version Build Status

Inject dynamic resources into your html pages

Install

npm install deposit --save

Usage

var fs = require('fs');
var http = require('http');
var deposit = require('deposit');

var d = deposit();

// Set up injectors
d.injector('fetch', require('deposit-fetch'));
d.injector('env', function (options, done) {
  
  // Do stuff
  
  done();
});

http.createServer(function (req, res) {

  fs.createReadStream('/path/to/some/file.html')
    .pipe(d)
    .pipe(res);

}).listen(3000);

Sample HTML file

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  <!-- inject:env -->
  <script>window.__env = {};</script>
  <!-- endinject -->

</head>
<body>
  
  <!-- inject:fetch url=http://some.site.com/page timeout=5 assign=bob -->
  <h1>Default Content</h1>
  <p>This is what it looks like if the data doesn’t get fetched (or gets fetched with an error).</p>
  <!-- endinject -->

</body>
</html>

API

deposit(options)

  • options

d.injector(name, function (options, done) {})

  • name - The name of the inejctor. This is the name you will use in your html document. Only slug-valid names are allowed (i.e. fetch, custom-injector, etc).

d.tree(filepath, function (err, contents) {})

Parse and inject a file. By default, the function returns a stream. You may also provide a callback and it will be called and return the parsed file contents. This method also has a streaming interface.

  • filepath - The path to the file to parse and inject.

d.blockTree(filepath, function (err blocks) {})

Parse the given html file and return an object representation of the parseable blocks. This method also has a streaming interface.

  • filepath - The path to the file to parse and inject.

Injectors

Injectors are used to put dynamic content into the html as static content. Injectors are basically plugins that exports a function:

module.exports = function (options, done) {

});

The injector function recieves 2 parameters:

  • options - This is an object map of the options in the commented markup. If the html had <!-- inject:fetch url=http://some.site.com/page timeout=5 assign=bob -->, the options would be
    • url: http://some.site.com/page
    • timeout: 5
    • assign: bob
  • done - This callback gets called with these values - done(err, content). The content will be injected and replace the commented markup

Run Test

npm install
npm test