Skip to content

Simple java lib to pretty-print tables to console

Notifications You must be signed in to change notification settings

nartovm/PseudoTable

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

╔═══════════════════════════════════════════════════════════════════════════════════╗
║ PseudoTable lib is a simple way to pretty-print your table in pseudo-graphic mode ║
╚═══════════════════════════════════════════════════════════════════════════════════╝

PseudoTable lib requires List<String> headers and List<List<String>> data to print a table

List<String> headers = new ArrayList<>(List.of("Header", "And one more", "Third"));
List<List<String>> data = new ArrayList<>() {{
    add(List.of("v1", "v2", "v3"));
    add(List.of("value 1", "value 2", "value3"));
}};
╔═════════╤══════════════╤════════╗
║ Header  │ And one more │ Third  ║
╠═════════╪══════════════╪════════╣
║ v1      │ v2           │ v3     ║
╟─────────┼──────────────┼────────╢
║ value 1 │ value 2      │ value3 ║
╚═════════╧══════════════╧════════╝

Or the data only

 System.out.println(new PseudoTable(null, data).printTable());
╔═════════╤═════════╤════════╗
║ v1      │ v2      │ v3     ║
╟─────────┼─────────┼────────╢
║ value 1 │ value 2 │ value3 ║
╚═════════╧═════════╧════════╝

Or the header only

 System.out.println(new PseudoTable(headers, null).printTable());
╔════════╤══════════════╤═══════╗
║ Header │ And one more │ Third ║
╚════════╧══════════════╧═══════╝

Multi-line strings are supported

List<String> headers = new ArrayList<>(List.of("Header", "And one more", "Third"));
List<List<String>> data = new ArrayList<>() {{
    add(List.of("v1", "v2", "v3"));
    add(List.of("value 1", "multi-line\r\nvalue 2", "value3"));
}};
╔═════════╤══════════════╤════════╗
║ Header  │ And one more │ Third  ║
╠═════════╪══════════════╪════════╣
║ v1      │ v2           │ v3     ║
╟─────────┼──────────────┼────────╢
║ value 1 │ multi-line   │ value3 ║
║         │ value 2      │        ║
╚═════════╧══════════════╧════════╝

So nested tables are supported

List<String> nestedHeader = new ArrayList<>(List.of("Nested header", "Header2"));
List<List<String>> nestedData = new ArrayList<>() {{
    add(List.of("v1", "v2"));
    add(List.of("nested 1", "multi-line\r\nnested 2"));
}};
List<String> headers = new ArrayList<>(List.of("Header", "And one more", "Third"));
List<List<String>> data = new ArrayList<>() {{
    add(List.of("v1", "v2", "v3"));
    add(List.of("value 1", "multi-line\r\nvalue 2", new PseudoTable(nestedHeader, nestedData).printTable()));
}};
╔═════════╤══════════════╤═══════════════════════════════════╗
║ Header  │ And one more │ Third                             ║
╠═════════╪══════════════╪═══════════════════════════════════╣
║ v1      │ v2           │ v3                                ║
╟─────────┼──────────────┼───────────────────────────────────╢
║ value 1 │ multi-line   │ ╔═══════════════╤══════════════╗  ║
║         │ value 2      │ ║ Nested header │ Header2      ║  ║
║         │              │ ╠═══════════════╪══════════════╣  ║
║         │              │ ║ v1            │ v2           ║  ║
║         │              │ ╟───────────────┼──────────────╢  ║
║         │              │ ║ nested 1      │ multi-line   ║  ║
║         │              │ ║               │ nested 2     ║  ║
║         │              │ ╚═══════════════╧══════════════╝  ║
╚═════════╧══════════════╧═══════════════════════════════════╝

About

Simple java lib to pretty-print tables to console

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages