code: function runPrintingExample(fn, logName, logTable, logCode, logSeparator, logScreenShot) {
    /**
     * Called by every test/demo
     * @param name - the name of this test.
     * @param makeTable - a function which builds the table under test. Also, The contents of this function will be printed.
     * @param expected -  The expected result.
     * @param screenshot - If present, there is an image containing a screenshot of the output
     */
    function printExample(name, makeTable, expected, screenshot) {
      let code = makeTable
        .toString()
        .split('\n')
        .slice(1, -2)
        .join('\n');
  
      logName(name);
      if (screenshot && logScreenShot) {
        logScreenShot(screenshot);
      } else {
        logTable(makeTable().toString());
      }
      logCode(code);
      logSeparator('\n');
    }
  
    fn(printExample);
  }
docs: Common execution for runs that print output (either to console or to a Markdown file);
  @param fn - a function containing the tests/demos.
  @param logName - callback to print the name of this test to the console or file.
  @param logTable - callback to print the output of the table to the console or file.
  @param logCode - callback to print the output of the table to the console or file.
  @param logSeparator - callback to print extra whitespace between demos.
  @param logScreenShot - write out a link to the screenShot image.