HTML-таблица к “графическому тексту” для комментариев к коду

Существует ли инструмент (идеально основанный на командной строке), который может помочь в преобразовании источника к HTML-таблицам в “графический текст” (думайте, возможно, ASCII-творчество для HTML-таблиц) для использования в комментариях к коду, как шоу ниже?

Например, учитывая следующий источник HTML-таблицы

A test table with merged cells
Average other
category
Misc
heightweight
males1.90.003
females1.70.002

инструмент произвел бы что-то как следующее, которое будет встроено в комментарии к коду (как /*…*/):

/*
          A test table with merged cells
+----------+-------------------+----------+--------+ 
|          |      Average      |  other   |  Misc  |
|          +---------+---------+ category +--------|
|          |  height |  weight |          |        |
|----------+---------+---------+----------+--------|
| males    |   1.9   |  0.003  |          |        |
|----------+---------+---------+----------+--------|
| females  |   1.7   |  0.002  |          |        |
+----------+---------+---------+----------+--------+
*/

Фон: часть кода, который читает значения из HTML-таблиц, может быть аннотирована комментариями, изображающими основанные на тексте графические представления сложных разметок HTML-таблицы. Кто-то поддерживающий код позже может затем найти легче понять, например, как часть кода нарезает и ставит на карту HTML-таблицу или щипает значения в определенных положениях ячейки.

5
задан Brian Tompsett - 汤莱恩 29 May 2017 в 19:48
поделиться

3 ответа

2
ответ дан 14 December 2019 в 19:05
поделиться

HTML :: TreeBuilder плюс Text :: ASCIITable похоже, что им потребуется лишь немного клея для выполнения работы.

2
ответ дан 14 December 2019 в 19:05
поделиться

Я не знаю, о каком языке вы говорите, но я использую для этого эту функцию (PHP):

function text_table($data)
{
    $keys = array_keys(end($data));
    $size = array_map('strlen', $keys);

    foreach(array_map('array_values', $data) as $e)
        $size = array_map('max', $size,
            array_map('strlen', $e));

    foreach($size as $n) {
        $form[] = "%-{$n}s";
        $line[] = str_repeat('-', $n);
    }

    $form = '| ' . implode(' | ', $form) . " |\n";
    $line = '+-' . implode('-+-', $line) . "-+\n";
    $rows = array(vsprintf($form, $keys));

    foreach($data as $e)
        $rows[] = vsprintf($form, $e);
    return $line . implode($line, $rows) . $line;
}

Использование:

    echo "<pre>\n";
    echo text_table($array);
    echo "</pre>\n";
0
ответ дан 14 December 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: