将HTML表格转换为“图形文本”以用于代码注释

8

有没有一种工具(最好是基于命令行的),可以将HTML表格转换为“图形文本”(类似于 ASCII艺术用于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表格或在特定单元格位置提取值。
1个回答

0

我不知道你在说哪种语言,但我用这个函数(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";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接