lib/replacer.js
function (context) {
    return function (plugin) {
      var pattern = context.pattern;
      if (plugin.match(pattern, opts) === true) {
        plugin.transform(pattern, opts, function (items) {
          if (items instanceof Error) {
            throw items;
          } else {
            // store transformed pattern in context
            context.pattern = items;
          }
        });
      } else {
        // plugin doesn't apply
      }
    };
  }
function (context) {
    return function (plugin) {
      var pattern = context.pattern;
      if (plugin.match(pattern, opts) === true) {
        plugin.transform(pattern, opts, function (items) {
          if (items instanceof Error) {
            throw items;
          } else {
            // store transformed pattern in context
            context.pattern = items;
          }
        });
      } else {
        // plugin doesn't apply
      }
    };
  }
FIXME: handler for plugin management