2010-05-17 19 views
5

Esiste uno strumento (idealmente basato sulla riga di comando) che può aiutare a convertire la sorgente in tabelle HTML in "testo grafico" (penso forse ASCII art per le tabelle HTML) per l'uso nei commenti al codice, come mostrato di seguito?tabella HTML a "testo grafico" per i commenti del codice

Ad esempio, dato il seguente codice HTML origine di tabella

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

lo strumento sarebbe uscita qualcosa di simile a quanto segue per essere incorporato in commenti del codice (come /*…*/):

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

Background: Un pezzo del codice che legge valori da tabelle HTML può essere annotato con commenti che descrivono rappresentazioni grafiche basate su testo di layout di tabelle HTML complessi. Qualcuno che manterrà il codice più tardi potrà quindi trovare più facile capire, ad esempio, come un pezzo di codice affetta e segna una tabella HTML o preleva valori in determinate posizioni della cella.

risposta

0

non so quale lingua stai parlando, ma io uso questa funzione (PHP) per questo:

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

Usage:

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

Questo si avvicina e prontamente utilizzabile tranne che le celle non sono delineate, quindi è necessario continuare a lavorare per ottenere un formato utilizzabile per i commenti del codice. Ancora ottiene il mio voto per essermi avvicinato. –

2

HTML::TreeBuilder plus Text::ASCIITable sembra che avrebbero bisogno solo di un po 'di colla per fare il lavoro.

+0

Questo si avvicina, tranne che, come hai detto, ha bisogno di colla e imballaggio per essere prontamente disponibili per l'uso. –

Problemi correlati