|  | #!/usr/bin/env python | 
|  | # | 
|  | # Copyright (C) 2009 The Android Open Source Project | 
|  | # | 
|  | # Licensed under the Apache License, Version 2.0 (the 'License'); | 
|  | # you may not use this file except in compliance with the License. | 
|  | # You may obtain a copy of the License at | 
|  | # | 
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | # | 
|  | # Unless required by applicable law or agreed to in writing, software | 
|  | # distributed under the License is distributed on an 'AS IS' BASIS, | 
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | # See the License for the specific language governing permissions and | 
|  | # limitations under the License. | 
|  | # | 
|  |  | 
|  | import cgi, os, string, sys | 
|  |  | 
|  | def IsDifferent(row): | 
|  | val = None | 
|  | for v in row: | 
|  | if v: | 
|  | if not val: | 
|  | val = v | 
|  | else: | 
|  | if val != v: | 
|  | return True | 
|  | return False | 
|  |  | 
|  | def main(argv): | 
|  | inputs = argv[1:] | 
|  | data = {} | 
|  | index = 0 | 
|  | for input in inputs: | 
|  | f = file(input, "r") | 
|  | lines = f.readlines() | 
|  | f.close() | 
|  | lines = map(string.split, lines) | 
|  | lines = map(lambda (x,y): (y,int(x)), lines) | 
|  | for fn,sz in lines: | 
|  | if not data.has_key(fn): | 
|  | data[fn] = {} | 
|  | data[fn][index] = sz | 
|  | index = index + 1 | 
|  | rows = [] | 
|  | for fn,sizes in data.iteritems(): | 
|  | row = [fn] | 
|  | for i in range(0,index): | 
|  | if sizes.has_key(i): | 
|  | row.append(sizes[i]) | 
|  | else: | 
|  | row.append(None) | 
|  | rows.append(row) | 
|  | rows = sorted(rows, key=lambda x: x[0]) | 
|  | print """<html> | 
|  | <head> | 
|  | <style type="text/css"> | 
|  | .fn, .sz, .z, .d { | 
|  | padding-left: 10px; | 
|  | padding-right: 10px; | 
|  | } | 
|  | .sz, .z, .d { | 
|  | text-align: right; | 
|  | } | 
|  | .fn { | 
|  | background-color: #ffffdd; | 
|  | } | 
|  | .sz { | 
|  | background-color: #ffffcc; | 
|  | } | 
|  | .z { | 
|  | background-color: #ffcccc; | 
|  | } | 
|  | .d { | 
|  | background-color: #99ccff; | 
|  | } | 
|  | </style> | 
|  | </head> | 
|  | <body> | 
|  | """ | 
|  | print "<table>" | 
|  | print "<tr>" | 
|  | for input in inputs: | 
|  | combo = input.split(os.path.sep)[1] | 
|  | print "  <td class='fn'>%s</td>" % cgi.escape(combo) | 
|  | print "</tr>" | 
|  |  | 
|  | for row in rows: | 
|  | print "<tr>" | 
|  | for sz in row[1:]: | 
|  | if not sz: | 
|  | print "  <td class='z'> </td>" | 
|  | elif IsDifferent(row[1:]): | 
|  | print "  <td class='d'>%d</td>" % sz | 
|  | else: | 
|  | print "  <td class='sz'>%d</td>" % sz | 
|  | print "  <td class='fn'>%s</td>" % cgi.escape(row[0]) | 
|  | print "</tr>" | 
|  | print "</table>" | 
|  | print "</body></html>" | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | main(sys.argv) | 
|  |  | 
|  |  |