2010-05-17 28 views
5

Có một công cụ (lý tưởng dựa trên dòng lệnh) có thể giúp chuyển đổi nguồn thành các bảng HTML thành “văn bản đồ họa” (nghĩ rằng có lẽ ASCII art cho các bảng HTML) để sử dụng trong các bình luận mã, như hiển thị dưới đây?Bảng HTML để “văn bản đồ họa” cho các chú thích mã

Ví dụ, với HTML sau bảng nguồn

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

công cụ sẽ ra một cái gì đó như sau để được nhúng vào comments mã (như /*…*/):

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

Bối cảnh: Một mảnh mã đọc các giá trị từ các bảng HTML có thể được chú thích bằng các chú thích mô tả các biểu diễn đồ họa dựa trên văn bản của các bố cục bảng HTML phức tạp. Một người nào đó duy trì mã sau đó có thể tìm thấy nó dễ hiểu hơn, ví dụ, làm thế nào một đoạn mã được cắt và dicing một bảng HTML hoặc các giá trị tuốt tại các vị trí tế bào nhất định.

Trả lời

0

Tôi không biết ngôn ngữ đang nói về nhưng tôi sử dụng chức năng này (PHP) cho rằng:

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

Cách sử dụng:

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

Điều này đến gần và có thể sử dụng được, ngoại trừ các ô không được mô tả nên vẫn cần thực hiện một số công việc để có được chúng ở định dạng có thể sử dụng cho nhận xét mã. Vẫn nhận được phiếu bầu của tôi cho đến gần. –

2

HTML::TreeBuilder cộng Text::ASCIITable có vẻ như họ chỉ cần một chút keo để thực hiện công việc.

+0

Điều này đến gần, ngoại trừ như bạn đã nói, cần keo và bao gói để sẵn sàng để sử dụng. –

Các vấn đề liên quan