2010-05-17 14 views
5

是否有工具(最好命令行为主),可以在源HTML表格转换为“图形文字”帮助(想对于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表或在特定的细胞位置拔毛值。

回答

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"; 
2
+0

除非单元格没有描绘出来,否则这个代码很贴近并且很容易使用,所以还需要做一些工作才能使它们成为代码注释的可用格式。仍然得到我的投票接近。 – 2010-05-17 14:23:11

2

HTML::TreeBuilderText::ASCIITable看起来像他们只需要一点胶就可以完成这项工作。

+0

此接近,但正如你所说,需要胶水和包装可供随时使用。 – 2010-05-17 14:05:45