CasperSecurity

Current Path : /usr/share/nodejs/cli-table2/lib/
Upload File :
Current File : //usr/share/nodejs/cli-table2/lib/print-example.js

var chai = require('chai');
var expect = chai.expect;
var colors = require('colors/safe');
var _ = require('lodash');
var fs = require('fs');
var git = require('git-rev');

function logExample(fn){
  runPrintingExample(fn,
    function logName(name){
      console.log(colors.gray('=========  ') + name + colors.gray('  ================'));
    },
    console.log,  //logTable
    console.log,  //logCode
    console.log,  //logSeparator
    identity      //screenShot
  )
}

function mdExample(fn,file,cb){
  git.long(function(commitHash){
    var buffer = [];

    runPrintingExample(fn,
      function logName(name){
        buffer.push('##### ' + name);
      },
      function logTable(table){
        //md files won't render color strings properly.
        table = stripColors(table);

        // indent table so is displayed preformatted text
        table = '    ' + (table.split('\n').join('\n    '));

        buffer.push(table);
      },
      function logCode(code){
        buffer.push('```javascript');
        buffer.push(stripColors(code));
        buffer.push('```');
      },
      function logSeparator(sep){
        buffer.push(stripColors(sep));
      },
      function logScreenShot(image){
          buffer.push('![table image](https://cdn.rawgit.com/jamestalmage/cli-table2/'
                  + commitHash + '/examples/screenshots/' + image + '.png)');
      }
    );

    fs.writeFileSync(file,buffer.join('\n'));

    if(cb){cb();}
  });
}

/**
 * Actually runs the tests and verifies the functions create the expected output.
 * @param name of the test suite, used in the mocha.describe call.
 * @param fn a function which creates the test suite.
 */
function runTest(name,fn){
  function testExample(name,fn,expected){
    it(name,function(){
      expect(fn().toString()).to.equal(expected.join('\n'));
    });
  }

  describe(name,function () {
    fn(testExample,identity);
  });
}

/**
 * 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.
 */
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){
    var 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);
}

// removes all the color characters from a string
function stripColors(str){
  return str.split( /\u001b\[(?:\d*;){0,5}\d*m/g).join('');
}

// returns the first arg - used as snapshot function
function identity(str){
  return str;
}

module.exports = {
  mdExample:mdExample,
  logExample:logExample,
  runTest:runTest
};
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY