Skip to content

Commit

Permalink
feat: getTable() function to return table string instead of printing …
Browse files Browse the repository at this point in the history
…it (#16)

* Create exported function getTable to return created table instead of just printing it.

* fix(missing-semicolon): Update missing semicolon on index.js and commit package-lock.json

* feat(return): Create new functions to return the created table string instead of printing it.

* fix(): fix formatting and minor bugs in some test cases

* Update README.md

* Update README.md
  • Loading branch information
GCrispino authored and bahmutov committed Jan 16, 2018
1 parent b92cc58 commit 74548c0
Show file tree
Hide file tree
Showing 5 changed files with 5,760 additions and 8 deletions.
23 changes: 22 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ bower install console.table --save

```
// call once somewhere in the beginning of the app
require('console.table');
const cTable = require('console.table');
console.table([
{
name: 'foo',
Expand All @@ -41,6 +41,27 @@ bar 20
You can pass multiple strings and arrays in a single console.table call.
Each argument will be formatted and printed separately on new line

**Get only table string**
```
const table = cTable.getTable([
{
name: 'foo',
age: 10
}, {
name: 'bar',
age: 20
}
]);
console.log(table);
// prints
name age
---- ---
foo 10
bar 20
```

## Use in browser

**INCOMPLETE, PROBABLY CHROME ONLY FOR NOW**
Expand Down
64 changes: 61 additions & 3 deletions dist/console.table.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
return t.toString();
}

function printTableWithColumnTitles(titles, items) {
function printTableWithColumnTitles(titles, items,noConsole) {
var t = new Table();
items.forEach(function (item) {
item.forEach(function (value, k) {
Expand All @@ -54,7 +54,8 @@
t.newRow();
});
var str = t.toString();
console.log(str);

return noConsole ? str : console.log(str);
}

function printTitleTable(title, arr) {
Expand All @@ -68,12 +69,33 @@
var sep = '-', k, line = '';
for (k = 0; k < rowLength; k += 1) {
line += sep;
}
}
console.log(line);
}
console.log(str);
}

function getTitleTable(title, arr) {
var str = arrayToString(arr);
var rowLength = str.indexOf('\n');
var strToReturn = '';
if (rowLength > 0) {
if (title.length > rowLength) {
rowLength = title.length;
}

strToReturn += title + '\n';
var sep = '-', k, line = '';
for (k = 0; k < rowLength; k += 1) {
line += sep;
}

strToReturn += line + '\n';
}

return strToReturn + str;
}

function objectToArray(obj) {
var keys = Object.keys(obj);
return keys.map(function (key) {
Expand Down Expand Up @@ -114,6 +136,42 @@
}
});
}

module.exports.getTable = function(){
var args = Array.prototype.slice.call(arguments);

var strToReturn = '';

if (args.length === 2 &&
typeof args[0] === 'string' &&
Array.isArray(args[1])) {

return getTitleTable(args[0], args[1]);
}

if (args.length === 2 &&
isArrayOfStrings(args[0]) &&
isArrayOfArrays(args[1])) {
return printTableWithColumnTitles(args[0], args[1],true);
}

args.forEach(function (k,i) {
if (typeof k === 'string') {
strToReturn += k;
if (i !== args.length - 1){
strToReturn += '\n';
}
return ;
} else if (Array.isArray(k)) {
strToReturn += arrayToString(k) + '\n';
} else if (typeof k === 'object') {
strToReturn += objectToString(k);
}
});

return strToReturn;
};

console.table = consoleTable;
}

Expand Down
2 changes: 1 addition & 1 deletion dist/console.table.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

64 changes: 61 additions & 3 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
return t.toString();
}

function printTableWithColumnTitles(titles, items) {
function printTableWithColumnTitles(titles, items,noConsole) {
var t = new Table();
items.forEach(function (item) {
item.forEach(function (value, k) {
Expand All @@ -54,7 +54,8 @@
t.newRow();
});
var str = t.toString();
console.log(str);

return noConsole ? str : console.log(str);
}

function printTitleTable(title, arr) {
Expand All @@ -68,12 +69,33 @@
var sep = '-', k, line = '';
for (k = 0; k < rowLength; k += 1) {
line += sep;
}
}
console.log(line);
}
console.log(str);
}

function getTitleTable(title, arr) {
var str = arrayToString(arr);
var rowLength = str.indexOf('\n');
var strToReturn = '';
if (rowLength > 0) {
if (title.length > rowLength) {
rowLength = title.length;
}

strToReturn += title + '\n';
var sep = '-', k, line = '';
for (k = 0; k < rowLength; k += 1) {
line += sep;
}

strToReturn += line + '\n';
}

return strToReturn + str;
}

function objectToArray(obj) {
var keys = Object.keys(obj);
return keys.map(function (key) {
Expand Down Expand Up @@ -114,6 +136,42 @@
}
});
}

module.exports.getTable = function(){
var args = Array.prototype.slice.call(arguments);

var strToReturn = '';

if (args.length === 2 &&
typeof args[0] === 'string' &&
Array.isArray(args[1])) {

return getTitleTable(args[0], args[1]);
}

if (args.length === 2 &&
isArrayOfStrings(args[0]) &&
isArrayOfArrays(args[1])) {
return printTableWithColumnTitles(args[0], args[1],true);
}

args.forEach(function (k,i) {
if (typeof k === 'string') {
strToReturn += k;
if (i !== args.length - 1){
strToReturn += '\n';
}
return ;
} else if (Array.isArray(k)) {
strToReturn += arrayToString(k) + '\n';
} else if (typeof k === 'object') {
strToReturn += objectToString(k);
}
});

return strToReturn;
};

console.table = consoleTable;
}

Expand Down
Loading

0 comments on commit 74548c0

Please sign in to comment.