table

Помоћни програм из командне линије за форматирање и приказ CSV-а
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување d7373891edc4676918efe754e68485719a2daa25
родитељ 6cc1b47eb0a4b1dd8a7f3fc9b0494769d44bdd59
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Fri, 25 Feb 2022 17:54:39 +0100

Add `e` (empty) set specifier (https://aur.archlinux.org/packages/table#comment-853578)

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
ATHANKS | 3+++
MTODO | 2+-
Mdefs.h | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Mtable.c | 35+++++++++++++++++++++++++++++++++++
измењених датотека: 4, додавања: 105(+), брисања: 3(-)

diff --git a/THANKS b/THANKS @@ -0,0 +1,3 @@ +m040601 <https://aur.archlinux.org/account/m040601> + Suggestion about `--symbols=nn` which became `e` set specifier + https://aur.archlinux.org/packages/table#comment-853578 diff --git a/TODO b/TODO @@ -1,7 +1,7 @@ TODO ==== - [ ] Add "e" (=empty) specifier (thanks, m040601: + [x] Add "e" (=empty) specifier (thanks, m040601: https://aur.archlinux.org/packages/table#comment-853578) [x] Convert while to goto in main to ease indenting diff --git a/defs.h b/defs.h @@ -35,7 +35,8 @@ enum { TABLE_SYMBOLS_ASCII, TABLE_SYMBOLS_SINGLE, - TABLE_SYMBOLS_DOUBLE + TABLE_SYMBOLS_DOUBLE, + TABLE_SYMBOLS_EMPTY }; enum @@ -44,7 +45,14 @@ enum TABLE_INNER_SINGLE_SINGLE, TABLE_INNER_SINGLE_DOUBLE, TABLE_INNER_DOUBLE_SINGLE, - TABLE_INNER_DOUBLE_DOUBLE + TABLE_INNER_DOUBLE_DOUBLE, + TABLE_INNER_EMPTY_EMPTY, + TABLE_INNER_ASCII_EMPTY, + TABLE_INNER_SINGLE_EMPTY, + TABLE_INNER_DOUBLE_EMPTY, + TABLE_INNER_EMPTY_ASCII, + TABLE_INNER_EMPTY_SINGLE, + TABLE_INNER_EMPTY_DOUBLE, }; static const u32* table_symbols[][9] = @@ -66,6 +74,12 @@ static const u32* table_symbols[][9] = (u32*)L"\u2554", (u32*)L"\u2550", (u32*)L"\u2557", (u32*)L"\u2551", (u32*)L" ", (u32*)L"\u2551", (u32*)L"\u255a", (u32*)L"\u2550", (u32*)L"\u255d", + }, + [TABLE_SYMBOLS_EMPTY] = { + // empty + (u32*)L" ", (u32*)L" ", (u32*)L" ", + (u32*)L" ", (u32*)L" ", (u32*)L" ", + (u32*)L" ", (u32*)L" ", (u32*)L" ", } }; @@ -104,5 +118,55 @@ static const u32* table_inner_symbols[][3] = (u32*)L"\u2566", (u32*)L"\u2551", (u32*)L"\u2569", + }, + + [TABLE_INNER_EMPTY_EMPTY] = { + // empty -> empty + (u32*)L" ", + (u32*)L" ", + (u32*)L" ", + }, + + [TABLE_INNER_ASCII_EMPTY] = { + // ascii -> empty + (u32*)L"-", + (u32*)L" ", + (u32*)L"-", + }, + + [TABLE_INNER_SINGLE_EMPTY] = { + // single -> empty + (u32*)L"\u2500", + (u32*)L" ", + (u32*)L"\u2500", + }, + + [TABLE_INNER_DOUBLE_EMPTY] = { + // double -> empty + (u32*)L"\u2550", + (u32*)L" ", + (u32*)L"\u2550", + }, + + [TABLE_INNER_EMPTY_ASCII] = { + // empty -> ascii + (u32*)L" ", + (u32*)L"|", + (u32*)L" ", + }, + + [TABLE_INNER_EMPTY_SINGLE] = { + // empty -> single + (u32*)L" ", + (u32*)L"\u2502", + (u32*)L" ", + }, + + [TABLE_INNER_EMPTY_DOUBLE] = { + // empty -> double + (u32*)L" ", + (u32*)L"\u2551", + (u32*)L" ", } + }; diff --git a/table.c b/table.c @@ -173,6 +173,41 @@ set_symbol_set(char* arg, int* current_symbol_set, int* current_inner_symbol_set *current_symbol_set = TABLE_SYMBOLS_DOUBLE; *current_inner_symbol_set = TABLE_INNER_DOUBLE_DOUBLE; } + else if (!strcmp(arg, "ee")) + { + *current_symbol_set = TABLE_SYMBOLS_EMPTY; + *current_inner_symbol_set = TABLE_INNER_EMPTY_EMPTY; + } + else if (!strcmp(arg, "ae")) + { + *current_symbol_set = TABLE_SYMBOLS_ASCII; + *current_inner_symbol_set = TABLE_INNER_ASCII_EMPTY; + } + else if (!strcmp(arg, "se")) + { + *current_symbol_set = TABLE_SYMBOLS_SINGLE; + *current_inner_symbol_set = TABLE_INNER_SINGLE_EMPTY; + } + else if (!strcmp(arg, "de")) + { + *current_symbol_set = TABLE_SYMBOLS_DOUBLE; + *current_inner_symbol_set = TABLE_INNER_DOUBLE_EMPTY; + } + else if (!strcmp(arg, "ea")) + { + *current_symbol_set = TABLE_SYMBOLS_EMPTY; + *current_inner_symbol_set = TABLE_INNER_EMPTY_ASCII; + } + else if (!strcmp(arg, "es")) + { + *current_symbol_set = TABLE_SYMBOLS_EMPTY; + *current_inner_symbol_set = TABLE_INNER_EMPTY_SINGLE; + } + else if (!strcmp(arg, "ed")) + { + *current_symbol_set = TABLE_SYMBOLS_EMPTY; + *current_inner_symbol_set = TABLE_INNER_EMPTY_DOUBLE; + } else { return error(1, "Invalid symbol set: %s", arg);