Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ESLint and Prettier #12

Merged
merged 4 commits into from
Jun 10, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module.exports = {
parserOptions: {
ecmaVersion: 6,
},
env: {
node: true,
},
extends: ['eslint:recommended', 'prettier'],
plugins: ['prettier'],
rules: {
'prettier/prettier': 'error',
'no-control-regex': 'off',
},
overrides: [
{
// tests
files: ['test/**/*.js'],
env: {
jest: true,
},
},
],
};
214 changes: 103 additions & 111 deletions examples/basic-usage-examples.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,208 +2,200 @@ var Table = require('../src/table');
var colors = require('colors/safe');

module.exports = function(runTest) {

function it(name, fn) {
var result = fn();
runTest(name, result[0], result[1], result[2]);
}

it('Basic Usage',function(){
function makeTable(){
it('Basic Usage', function() {
function makeTable() {
// By default, headers will be red, and borders will be grey
var table = new Table({head:['a','b']});
var table = new Table({ head: ['a', 'b'] });

table.push(['c','d']);
table.push(['c', 'd']);

return table;
}

var expected = [
colors.gray('┌───') + colors.gray('┬───┐')
, colors.gray('│') + colors.red(' a ') + colors.gray('│') + colors.red(' b ') + colors.gray('│')
, colors.gray('├───') + colors.gray('┼───┤')
, colors.gray('│') + (' c ') + colors.gray('│') + (' d ') + colors.gray('│')
, colors.gray('└───') + colors.gray('┴───┘')
colors.gray('┌───') + colors.gray('┬───┐'),
colors.gray('│') + colors.red(' a ') + colors.gray('│') + colors.red(' b ') + colors.gray('│'),
colors.gray('├───') + colors.gray('┼───┤'),
colors.gray('│') + ' c ' + colors.gray('│') + ' d ' + colors.gray('│'),
colors.gray('└───') + colors.gray('┴───┘'),
];

return [makeTable,expected,'basic-usage-with-colors'];
return [makeTable, expected, 'basic-usage-with-colors'];
});

it('Basic Usage - disable colors - (used often in the examples and tests)', function (){
function makeTable(){
it('Basic Usage - disable colors - (used often in the examples and tests)', function() {
function makeTable() {
// For most of these examples, and most of the unit tests we disable colors.
// It makes unit tests easier to write/understand, and allows these pages to
// display the examples as text instead of screen shots.
var table = new Table({
head: ['Rel', 'Change', 'By', 'When']
, style: {
head: [] //disable colors in header cells
, border: [] //disable colors for the border
}
, colWidths: [6, 21, 25, 17] //set the widths of each column (optional)
head: ['Rel', 'Change', 'By', 'When'],
style: {
head: [], //disable colors in header cells
border: [], //disable colors for the border
},
colWidths: [6, 21, 25, 17], //set the widths of each column (optional)
});

table.push(
['v0.1', 'Testing something cool', '[email protected]', '7 minutes ago']
, ['v0.1', 'Testing something cool', '[email protected]', '8 minutes ago']
['v0.1', 'Testing something cool', '[email protected]', '7 minutes ago'],
['v0.1', 'Testing something cool', '[email protected]', '8 minutes ago']
);

return table;
}

var expected = [
'┌──────┬─────────────────────┬─────────────────────────┬─────────────────┐'
, '│ Rel │ Change │ By │ When │'
, '├──────┼─────────────────────┼─────────────────────────┼─────────────────┤'
, '│ v0.1 │ Testing something … │ [email protected] │ 7 minutes ago │'
, '├──────┼─────────────────────┼─────────────────────────┼─────────────────┤'
, '│ v0.1 │ Testing something … │ [email protected] │ 8 minutes ago │'
, '└──────┴─────────────────────┴─────────────────────────┴─────────────────┘'
'┌──────┬─────────────────────┬─────────────────────────┬─────────────────┐',
'│ Rel │ Change │ By │ When │',
'├──────┼─────────────────────┼─────────────────────────┼─────────────────┤',
'│ v0.1 │ Testing something … │ [email protected] │ 7 minutes ago │',
'├──────┼─────────────────────┼─────────────────────────┼─────────────────┤',
'│ v0.1 │ Testing something … │ [email protected] │ 8 minutes ago │',
'└──────┴─────────────────────┴─────────────────────────┴─────────────────┘',
];

return [makeTable,expected];
return [makeTable, expected];
});

it('Create vertical tables by adding objects a that specify key-value pairs', function() {
function makeTable(){
var table = new Table({ style: {'padding-left':0, 'padding-right':0, head:[], border:[]} });
function makeTable() {
var table = new Table({
style: { 'padding-left': 0, 'padding-right': 0, head: [], border: [] },
});

table.push(
{'v0.1': 'Testing something cool'}
, {'v0.1': 'Testing something cool'}
);
table.push({ 'v0.1': 'Testing something cool' }, { 'v0.1': 'Testing something cool' });

return table;
}

var expected = [
'┌────┬──────────────────────┐'
, '│v0.1│Testing something cool│'
, '├────┼──────────────────────┤'
, '│v0.1│Testing something cool│'
, '└────┴──────────────────────┘'
'┌────┬──────────────────────┐',
'│v0.1│Testing something cool│',
'├────┼──────────────────────┤',
'│v0.1│Testing something cool│',
'└────┴──────────────────────┘',
];

return [makeTable,expected];
return [makeTable, expected];
});

it('Cross tables are similar to vertical tables, but include an empty string for the first header', function() {
function makeTable(){
var table = new Table({ head: ["", "Header 1", "Header 2"], style: {'padding-left':0, 'padding-right':0, head:[], border:[]} }); // clear styles to prevent color output
function makeTable() {
var table = new Table({
head: ['', 'Header 1', 'Header 2'],
style: { 'padding-left': 0, 'padding-right': 0, head: [], border: [] },
}); // clear styles to prevent color output

table.push(
{"Header 3": ['v0.1', 'Testing something cool'] }
, {"Header 4": ['v0.1', 'Testing something cool'] }
{ 'Header 3': ['v0.1', 'Testing something cool'] },
{ 'Header 4': ['v0.1', 'Testing something cool'] }
);

return table;
}

var expected = [
'┌────────┬────────┬──────────────────────┐'
, '│ │Header 1│Header 2 │'
, '├────────┼────────┼──────────────────────┤'
, '│Header 3│v0.1 │Testing something cool│'
, '├────────┼────────┼──────────────────────┤'
, '│Header 4│v0.1 │Testing something cool│'
, '└────────┴────────┴──────────────────────┘'
'┌────────┬────────┬──────────────────────┐',
'│ │Header 1│Header 2 │',
'├────────┼────────┼──────────────────────┤',
'│Header 3│v0.1 │Testing something cool│',
'├────────┼────────┼──────────────────────┤',
'│Header 4│v0.1 │Testing something cool│',
'└────────┴────────┴──────────────────────┘',
];

return [makeTable,expected];
return [makeTable, expected];
});

it('Stylize the table with custom border characters', function (){
function makeTable(){
it('Stylize the table with custom border characters', function() {
function makeTable() {
var table = new Table({
chars: {
'top': '═'
, 'top-mid': '╤'
, 'top-left': '╔'
, 'top-right': '╗'
, 'bottom': '═'
, 'bottom-mid': '╧'
, 'bottom-left': '╚'
, 'bottom-right': '╝'
, 'left': '║'
, 'left-mid': '╟'
, 'right': '║'
, 'right-mid': '╢'
top: '═',
'top-mid': '╤',
'top-left': '╔',
'top-right': '╗',
bottom: '═',
'bottom-mid': '╧',
'bottom-left': '╚',
'bottom-right': '╝',
left: '║',
'left-mid': '╟',
right: '║',
'right-mid': '╢',
},
style: {
head: []
, border: []
}
head: [],
border: [],
},
});

table.push(
['foo', 'bar', 'baz']
, ['frob', 'bar', 'quuz']
);
table.push(['foo', 'bar', 'baz'], ['frob', 'bar', 'quuz']);

return table;
}

var expected = [
'╔══════╤═════╤══════╗'
, '║ foo │ bar │ baz ║'
, '╟──────┼─────┼──────╢'
, '║ frob │ bar │ quuz ║'
, '╚══════╧═════╧══════╝'
'╔══════╤═════╤══════╗',
'║ foo │ bar │ baz ║',
'╟──────┼─────┼──────╢',
'║ frob │ bar │ quuz ║',
'╚══════╧═════╧══════╝',
];

return [makeTable,expected];
return [makeTable, expected];
});

it('Use ansi colors (i.e. colors.js) to style text within the cells at will, even across multiple lines',function(){
function makeTable(){
var table = new Table({style:{border:[],header:[]}});
it('Use ansi colors (i.e. colors.js) to style text within the cells at will, even across multiple lines', function() {
function makeTable() {
var table = new Table({ style: { border: [], header: [] } });

table.push([
colors.red('Hello\nhow\nare\nyou?'),
colors.blue('I\nam\nfine\nthanks!')
]);
table.push([colors.red('Hello\nhow\nare\nyou?'), colors.blue('I\nam\nfine\nthanks!')]);

return table;
}

var expected = [
'┌───────┬─────────┐'
, '│ ' + colors.red('Hello') + ' │ ' + colors.blue('I') + ' │'
, '│ ' + colors.red('how') + ' │ ' + colors.blue('am') + ' │'
, '│ ' + colors.red('are') + ' │ ' + colors.blue('fine') + ' │'
, '│ ' + colors.red('you?') + ' │ ' + colors.blue('thanks!') + ' │'
, '└───────┴─────────┘'
'┌───────┬─────────┐',
'│ ' + colors.red('Hello') + ' │ ' + colors.blue('I') + ' │',
'│ ' + colors.red('how') + ' │ ' + colors.blue('am') + ' │',
'│ ' + colors.red('are') + ' │ ' + colors.blue('fine') + ' │',
'│ ' + colors.red('you?') + ' │ ' + colors.blue('thanks!') + ' │',
'└───────┴─────────┘',
];

return [makeTable,expected,'multi-line-colors'];
return [makeTable, expected, 'multi-line-colors'];
});

it('Set `wordWrap` to true to make lines of text wrap instead of being truncated',function(){
function makeTable(){
it('Set `wordWrap` to true to make lines of text wrap instead of being truncated', function() {
function makeTable() {
var table = new Table({
style:{border:[],header:[]},
colWidths:[7,9],
wordWrap:true
style: { border: [], header: [] },
colWidths: [7, 9],
wordWrap: true,
});

table.push([
'Hello how are you?',
'I am fine thanks!'
]);
table.push(['Hello how are you?', 'I am fine thanks!']);

return table;
}

var expected = [
'┌───────┬─────────┐'
, '│ Hello │ I am │'
, '│ how │ fine │'
, '│ are │ thanks! │'
, '│ you? │ │'
, '└───────┴─────────┘'
'┌───────┬─────────┐',
'│ Hello │ I am │',
'│ how │ fine │',
'│ are │ thanks! │',
'│ you? │ │',
'└───────┴─────────┘',
];

return [makeTable,expected];
return [makeTable, expected];
});
};

Expand All @@ -219,4 +211,4 @@ module.exports = function(runTest) {
, '│ │ … │ │ │'
, '└──┴───┴──┴──┘'
];
*/
*/
Loading