HTML-таблица с «графическим текстом» для комментариев кода - PullRequest
5 голосов
/ 17 мая 2010

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

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

<TABLE BORDER=1>
  <CAPTION>A test table with merged cells</CAPTION>
  <TR><TH ROWSPAN=2><TH COLSPAN=2>Average
  <TH ROWSPAN=2>other<BR>category<TH>Misc
  <TR><TH>height<TH>weight
  <TR><TH ALIGN=LEFT>males<TD>1.9<TD>0.003
  <TR><TH ALIGN=LEFT ROWSPAN=2>females<TD>1.7<TD>0.002
</TABLE>

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

/*
          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 ]

2 голосов
/ 17 мая 2010
2 голосов
/ 17 мая 2010

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

1 голос
/ 03 апреля 2018

Есть еще один инструмент (YATG, еще один генератор таблиц), который делает именно это, написанный на python:

См .: https://github.com/10gic/yatg

Пример вывода (в стиле emacs):

+---------+-----------------+----------+
|         | Average         | Red eyes |
|         +--------+--------+          |
|         | height | weight |          |
+---------+--------+--------+----------+
| Males   | 1.9    | 0.003  | 40%      |
+---------+--------+--------+----------+
| Females | 1.7    | 0.002  | 43%      |
+---------+--------+--------+----------+

Пример вывода (стиль orgmode):

| Header content 1 | Header content 2 |
|------------------+------------------|
| Body content 1   | Body content 2   |
| Body content 3   | Body content 4   |
| Body content 5   | Body content 6   |

Пример вывода (в стиле MySQL):

+------------------+------------------+
| Header content 1 | Header content 2 |
+------------------+------------------+
| Body content 1   | Body content 2   |
| Body content 3   | Body content 4   |
| Body content 5   | Body content 6   |
+------------------+------------------+

Пример вывода (стиль уценки):

| Header content 1 | Header content 2 |
|------------------|------------------|
| Body content 1   | Body content 2   |
| Body content 3   | Body content 4   |
| Body content 5   | Body content 6   |
0 голосов
/ 27 июня 2015

Есть инструмент, который делает именно это, написанный на python:

См .: https://github.com/gustavklopp/DashTable

DashTable

HTML-таблица к ASCII-таблице, colspan и Rowspan разрешены!

0 голосов
/ 17 мая 2010

Я не знаю, на каком языке вы говорите, но я использую эту функцию (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;
}

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

<code>    echo "<pre>\n";
    echo text_table($array);
    echo "
\ п ";
...