2010-05-17 31 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