generate( rez, f, opts ) {

    // Prepare
    this.opts = EXTEND(true, { }, _defaultOpts, opts);

    // Call the string-based generation method
    const genInfo = this.invoke(rez, null);
    const outFolder = parsePath( f ).dirname;
    const curFmt = opts.themeObj.getFormat(this.format);

    // Process individual files within this format. For example, the HTML
    // output format for a theme may have multiple HTML files, CSS files,
    // etc. Process them here.
    genInfo.files.forEach(function( file ) {

      // console.dir _.omit(file.info,'cssData','data','css' )

      // Pre-processing
      file.info.orgPath = file.info.orgPath || '';
      const thisFilePath =
        file.info.primary
        ? f
        : PATH.join(outFolder, file.info.orgPath);

      if ((file.info.action !== 'copy') && this.onBeforeSave) {
        file.data = this.onBeforeSave({
          theme: opts.themeObj,
          outputFile: thisFilePath,
          mk: file.data,
          opts: this.opts,
          ext: file.info.ext
        });
        if (!file.data) {
          return;
        }
      }

      // Write the file
      if (typeof opts.beforeWrite === 'function') {
        opts.beforeWrite({data: thisFilePath});
      }
      MKDIRP.sync(PATH.dirname( thisFilePath ));

      if (file.info.action !== 'copy') {
        FS.writeFileSync(thisFilePath, file.data, {encoding: 'utf8', flags: 'w'});
      } else {
        FS.copySync(file.info.path, thisFilePath);
      }
      if (typeof opts.afterWrite === 'function') {
        opts.afterWrite({data: thisFilePath});
      }

      // Post-processing
      if (this.onAfterSave) {
        return this.onAfterSave({outputFile: thisFilePath, mk: file.data, opts: this.opts});
      }
    }

    , this);

    // Some themes require a symlink structure. If so, create it.
    createSymLinks(curFmt, outFolder);

    return genInfo;
  }
Generate a resume using file-based inputs and outputs. Requires access
  to the local filesystem.
  @method generate
  @param rez A FreshResume object.
  @param f Full path to the output resume file to generate.
  @param opts Generator options.