Существует ли инструмент (идеально основанный на командной строке), который может помочь в преобразовании источника к HTML-таблицам в “графический текст” (думайте, возможно, ASCII-творчество для HTML-таблиц) для использования в комментариях к коду, как шоу ниже?
Например, учитывая следующий источник HTML-таблицы
A test table with merged cells
Average
other
category Misc
height weight
males 1.9 0.003
females 1.7 0.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-таблицу или щипает значения в определенных положениях ячейки.
HTML :: TreeBuilder плюс Text :: ASCIITable похоже, что им потребуется лишь немного клея для выполнения работы.
Я не знаю, о каком языке вы говорите, но я использую для этого эту функцию (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";