First let me say that I appreciate the responses that everyone has
given.

A friend of mine is a ruby programmer but knows nothing about python.
He gave me the script below and it does exactly what I want, only it is
in Ruby.  Not knowing ruby this is greek to me, and I would like to
re-write it in python.

I ask then, is this essentially what others here have shown me to do,
or is it in a different vein all together?

Code:

class TsvToHTML
        @@styleBlock = <<-ENDMARK
        <style type='text/css'>
        td {
                border-left:1px solid #000000;
                padding-right:4px;
                padding-left:4px;
                white-space: nowrap;
        }
        .cellTitle {
                border-bottom:1px solid #000000;
                background:#ffffe0;
                font-weight: bold;
                text-align: center;
        }
        .cell0 { background:#eff1f1; }
        .cell1 { background:#f8f8f8; }
        </style>
        ENDMARK

        def TsvToHTML::wrapTag(data,tag,modifier = "")
                return "<#{tag} #{modifier}>" + data + "</#{tag}>\n"
        end # wrapTag

        def TsvToHTML::makePage(source)
                page = ""
                rowNum = 0
                source.readlines.each { |record|
                        row = ""
                        record.chomp.split("\t").each { |field|
                                # replace blank fields with &nbsp;
                                field.sub!(/^$/,"&nbsp;")
                                # wrap in TD tag, specify style
                                row += wrapTag(field,"td","class=\"" +
                                ((rowNum == 0)?"cellTitle":"cell#{rowNum % 2}") 
+
                                "\"")
                        }
                        rowNum += 1
                        # wrap in TR tag, add row to page
                        page += wrapTag(row,"tr") + "\n"
                }
                # finish page formatting
                [ [ "table","cellpadding=0 cellspacing=0 border=0" ], 
"body","html"
].each { |tag|
                        page = wrapTag(@@styleBlock,"head") + page if tag == 
"html"
                        page = wrapTag(page,*tag)
                }
                return page
        end # makePage
end # class

# stdin -> convert -> stdout
print TsvToHTML.makePage(STDIN)

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to