Code coverage report for yeoman-generator/lib/env/adapter.js

Statements: 95.65% (22 / 23)      Branches: 75% (3 / 4)      Functions: 100% (6 / 6)      Lines: 95.65% (22 / 23)      Ignored: none     

All files » yeoman-generator/lib/env/ » adapter.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70    1 1 1 1               1   1 1 1 2 2                         1 2                 1 1 2 1     1 1             1               1 1     1  
'use strict';
 
var inquirer = require('inquirer');
var diff = require('diff');
var chalk = require('chalk');
var logger = require('../util/log');
 
/**
 * `TerminalAdapter` is the default implementation of `Adapter`, an abstraction
 * layer that defines the I/O interactions.
 *
 * It provides a CLI interaction
 */
var TerminalAdapter = module.exports = function TerminalAdapter() {};
 
TerminalAdapter.prototype._colorDiffAdded = chalk.black.bgGreen;
TerminalAdapter.prototype._colorDiffRemoved = chalk.bgRed;
TerminalAdapter.prototype._colorLines = function colorLines(name, str) {
  return str.split('\n').map(function (str) {
    return this['_colorDiff' + name](str);
  }, this).join('\n');
};
 
/**
 * Prompt a user for one or more questions and pass
 * the answer(s) to the provided callback.
 *
 * It shares its interface with `Base.prompt`
 *
 * @param {Array} questions
 * @param {Function} callback
 */
TerminalAdapter.prototype.prompt = function _prompt() {
  inquirer.prompt.apply(inquirer, arguments);
};
 
/**
 * Shows a color-based diff of two strings
 *
 * @param {string} actual
 * @param {string} expected
 */
TerminalAdapter.prototype.diff = function _diff(actual, expected) {
  var msg = diff.diffLines(actual, expected).map(function (str) {
    if (str.added) {
      return this._colorLines('Added', str.value);
    }
 
    Eif (str.removed) {
      return this._colorLines('Removed', str.value);
    }
 
    return str.value;
  }, this).join('');
 
  // legend
  msg = '\n' +
    this._colorDiffRemoved('removed') +
    ' ' +
    this._colorDiffAdded('added') +
    '\n\n' +
    msg +
    '\n';
 
  console.log(msg);
  return msg;
};
 
TerminalAdapter.prototype.log = logger();