#!/usr/bin/env python

# fast & dirty
# as transmitter position is used apt twr pos, if any
# otherwise is used center of last listed rwy
# as transmitter altitude is used apt alt + 5

# (C) 2008 pietro bernardi
# GPL v.2.0

import os

if os.name == 'nt':
    nl = '\r\n'
else:
    nl = '\n'

class Apt:
    def __init__(self):
        self.apt_head_line = ''
        self.apt_rwy_line = ''
        self.apt_twr_pos_line = ''
        self.apt_twr_atc = []

    def write_apt(self,file):
        if len(self.apt_twr_atc) > 0:
            dati = ['I',0,0,0,0,'50',0,0]
            dati[6] = self.apt_head_line.split()[4]
            name = self.apt_head_line.split()[5:]
            name = ' '.join(name)
            name = name.title()
            dati[7] = '"'+name+'"'
            alt = self.apt_head_line.split()[1]
            alt = int(alt) + 5
            dati[3] = alt.__str__()
            if len(self.apt_twr_pos_line) == 0:
                dati[1] = self.apt_rwy_line.split()[1]
                dati[2] = self.apt_rwy_line.split()[2]
            else:
                dati[1] = self.apt_twr_pos_line.split()[1]
                dati[2] = self.apt_twr_pos_line.split()[2]
            for atc in self.apt_twr_atc:
                freq = atc.split()[1]
                freq = freq[:3]+'.'+freq[-2:]
                dati[4] = freq
                twr_line = ' '.join(dati)
                file.write('%s%s' % (twr_line,nl))

f = open('apt.dat','r')
fi = open('default.atis','w')
fi.write('# Flightgear ATIS data. Compiled from apt.dat%s' % nl)

for line in f:
    line = line.strip()
    if len(line) == 0:
        continue
    parts = line.split()
    if parts[0] == '1':
        if parts[5] == '[X]':
            continue
        try:
            apt.write_apt(fi)
            del apt
        except NameError:
            pass
        apt = Apt()
        apt.apt_head_line = line
    if parts[0] == '10' and parts[3] != 'xxx':    # RWY line, not taxiway
        apt.apt_rwy_line = line
    if len(parts) >= 3 and parts[-1] == 'ATIS':   # ATIS freq
        apt.apt_twr_atc.append(line)
    if parts[0] == '14':         # TWR pos
        apt.apt_twr_pos_line = line

f.close()
apt.write_apt(fi)
fi.write('[end]%s' % nl)
fi.close()