docs: function interpolate(format, src, files) {
    for (var _len = arguments.length, additional = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
      additional[_key - 3] = arguments[_key];
    }
  
    let meta = _lodash.assign.apply(undefined, [{}].concat(additional));
    if ((0, _lodash.isString)(src)) (0, _lodash.assign)(meta, files[src], { path: src });else (0, _lodash.assign)(meta, src, files);
  
    // match tokens like {foo}
    return format.replace(/\{([^}]+)\}/g, (match, token) => {
      let slugify = false;
      let result;
      let resolved;
  
      // check for slugify tag
      if (/^[-_]/.test(token)) {
        slugify = token.slice(0, 1);
        token = token.slice(1);
      }
  
      resolved = (0, _lodash.some)(resolvers, r => {
        result = r(token, meta);
        // an 0 length string should return true
        return (0, _lodash.isString)(result) || result;
      });
      if (!resolved) throw new Error(`bad token: "${token}" in ${src}"`);
      if (slugify) result = (0, _slug2.default)(result, slugify);
      return result;
    });
  }