whole_func_string: function replace (regex, replacement, fileFilter) {
    if (fileFilter instanceof Array) {
      fileFilter = fileFilter.reduce(pcomp);
    } else if (!fileFilter) {
      fileFilter = () => true;
    }
    return files => {
      _.forEach(files, (file, path) => {
        if (fileFilter(file, path)) {
          file.contents = new Buffer(file.contents.toString().replace(regex, replacement));
        }
      });
    }
  }
func_code_string: function replace (regex, replacement, fileFilter) {
    if (fileFilter instanceof Array) {
      fileFilter = fileFilter.reduce(pcomp);
    } else if (!fileFilter) {
      fileFilter = () => true;
    }
    return files => {
      _.forEach(files, (file, path) => {
        if (fileFilter(file, path)) {
          file.contents = new Buffer(file.contents.toString().replace(regex, replacement));
        }
      });
    }
  }
func_documentation_string: return metalsmith ware for carrying out the given replacement
  on files for which the given fileFilter returns true