#!/usr/bin/env python
# vim: set expandtab tabstop=4 shiftwidth=4:

import sys
import csv

filename = 'weaponstats.txt'
output = 'weaponstats.csv'

trials = {}
with open(filename) as df:

    # Load into trials.  This is lame.
    lines = [l.strip() for l in df.readlines()]
    cur_idx = 0
    while True:
        if cur_idx < len(lines) and len(lines[cur_idx]) > 0 and lines[cur_idx][-1] == ':':
            weapon = lines[cur_idx][:-1]
            trials[weapon] = []
            while True:
                cur_idx += 1
                if cur_idx == len(lines):
                    break
                trial = lines[cur_idx]
                if trial == '' or trial[-1] == ':':
                    break
                else:
                    trials[weapon].append(lines[cur_idx])
        else:
            break

with open(output, 'w') as df:
    writer = csv.writer(df)
    writer.writerow(['Weapon', 'Trials', 'Avg. Hits', 'Pct Hit Rate'])
    for (idx, (weapon, ts)) in enumerate(trials.items()):
        ts_count = len(ts)
        hits = 0
        misses = 0
        for t in ts:
            for l in t:
                if l.upper() == 'H':
                    hits += 1
                elif l.upper() == 'M':
                    misses += 1
                else:
                    print('Invalid trial letter: {}'.format(l))
                    sys.exit(1)
        writer.writerow([
            weapon,
            ts_count,
            round(hits/ts_count, 1),
            int(100*hits/(hits+misses)),
            ])

print('')
print('Output written to {}:'.format(output))
print('')
with open(output) as df:
    for line in df.readlines():
        print(line.strip())
