2010-05-17 7 views
5

Gibt es ein Tool (idealerweise Kommandozeilen-basiert), das bei der Konvertierung der Quelle in HTML-Tabellen in "graphischen Text" (vielleicht ASCII art für HTML-Tabellen) zu verwenden in Code-Kommentaren, wie unten gezeigt?HTML-Tabelle zu "graphischem Text" für Code-Kommentare

Zum Beispiel angesichts der folgenden HTML-Tabelle Quelle

<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> 

das Werkzeug ausgegeben würden so etwas wie die folgenden in Code-Kommentaren eingebettet werden (wie /*…*/):

/* 
      A test table with merged cells 
+----------+-------------------+----------+--------+ 
|   |  Average  | other | Misc | 
|   +---------+---------+ category +--------| 
|   | height | weight |   |  | 
|----------+---------+---------+----------+--------| 
| males | 1.9 | 0.003 |   |  | 
|----------+---------+---------+----------+--------| 
| females | 1.7 | 0.002 |   |  | 
+----------+---------+---------+----------+--------+ 
*/ 

Hintergrund: Ein Stück Code, der Werte aus HTML-Tabellen liest, kann mit Kommentaren kommentiert werden, die textbasierte grafische Darstellungen komplexer HTML-Tabellenlayouts darstellen. Jemand, der später den Code beibehält, kann es dann leichter verstehen, zum Beispiel, wie ein Codeabschnitt eine HTML-Tabelle aufschneidet und würfelt oder Werte an bestimmten Zellenpositionen auswählt.

Antwort

0

Ich weiß nicht, welche Sprache sprechen Sie aber ich benutze diese Funktion (PHP) dafür:

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; 
} 

Verbrauch:

echo "<pre>\n"; 
    echo text_table($array); 
    echo "</pre>\n"; 
2
+0

Dies kommt nahe und leicht nutzbar, außer die Zellen sind nicht abgegrenzt, so dass man noch etwas arbeiten muss, um sie in ein brauchbares Format für Code-Kommentare zu bekommen. Ich bekomme immer noch meine Stimme dafür, dass ich näher gekommen bin. –

2

HTML::TreeBuilder plus Text::ASCIITable sieht aus, als würden sie nur ein wenig Klebstoff brauchen, um den Job zu erledigen.

+0

Dies kommt nahe, außer, wie Sie gesagt haben, braucht Klebstoff und Verpackungen für den Einsatz bereit. –