generate_html.py 3.5 KB
#################################################################################
# generate_html.py                                                              #
# Copyright (C) 2015 David Zhong                                                #
#                                                                               #
# Permission is hereby granted, free of charge, to any person obtaining a copy  #
# of this software and associated documentation files (the "Software"), to deal #
# in the Software without restriction, including without limitation the rights  #
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell     #
# copies of the Software, and to permit persons to whom the Software is         #
# furnished to do so, subject to the following conditions:                      #
#                                                                               #
# The above copyright notice and this permission notice shall be included in    #
# all copies or substantial portions of the Software.                           #
#                                                                               #
# ** For avoidance of doubt, the Software consists only of this file and  **    #
# ** and compiled versions thereof                                        **    #
#                                                                               #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR    #
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,      #
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE   #
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER        #
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, #
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN     #
# THE SOFTWARE.                                                                 #
#                                                                               #
#################################################################################

usage = """
usage: generate_html.py input_file

  input_file: a csv from obtained from the vatpac_atc repo

To write the output to a file, run the following command:

  generate_html.py input_file > output_file
"""

import csv
import sys

columns = ['Name', 'Callsign', 'Login', 'Frequency']

def add_lines(lines, new_lines, indent=1):
    for line in new_lines:
        lines.append(' ' * indent + line)

def make_row(data):
    lines = []
    lines.append('<tr>')
    for column in columns:
        lines.append(' <td>%s</td>' % data[column])
    lines.append('</tr>')
    return lines

def make_header():
    lines = []
    lines.append('<thead>')
    lines.append(' <tr>')
    for column in columns:
        lines.append('  <th>%s</th>' % column)
    lines.append(' </tr>')
    lines.append('</thead>')
    return lines

def make_body(data):
    lines = []
    lines.append('<tbody>')
    for row in data:
        add_lines(lines, make_row(row))
    lines.append('</tbody>')
    return lines

def make_table(data):
    lines = []
    lines.append('<table>')
    add_lines(lines, make_header())
    add_lines(lines, make_body(data))
    lines.append('</table>')
    return lines

def main():
    if len(sys.argv) < 2:
        print usage
        sys.exit(1)
    filename = sys.argv[1]
    with open(filename) as fh:
        data = csv.DictReader(fh, fieldnames=columns)
        print '\n'.join(make_table(data))

if __name__ == '__main__':
    main()