code: function interpolate (format, src, files, ...additional) {
    let meta = assign({}, ...additional)
    if (isString(src)) assign(meta, files[src], { path: src })
    else 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 = some(resolvers, (r) => {
        result = r(token, meta)
        // an 0 length string should return true
        return isString(result) || result
      })
      if (!resolved) throw new Error(`bad token: "${token}" in ${src}"`)
      if (slugify) result = slug(result, slugify)
      return result
    })
  }
docs: ## interpolate
  
  @param {String} format - a format string with tokens delimited by curly
  braces.
  @param {String} src - the key for this file in metadata
  @param {Object} files - the metadata / files structure as passed to
  metalsmith plugins
  @param {Object} additional - any additional key value pairs for interpolation