#!/usr/bin/env python

from itertools import combinations
import pickle
from ocesavac import ocesat
import codecs
from koincidence import index_koincidence

ABECEDA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
MABECEDA = ' ABCDEFGHIJKLMNOPQRSTUVWXYZ'

def nova_tabulka(tabulka, abc=MABECEDA):
    celkem = sum(sum(tab2.values()) for tab2 in tabulka.values())
    if celkem != 0:
        for i in abc:
            for j in abc:
                tabulka[i][j] /= float(celkem)
    return tabulka

def poradi_dle_frekvence(freq):
    return sorted(freq.keys(), key=freq.get, reverse=True)

class reference:
    def __init__(self, tref, komentar=''):
        self.abeceda = tref.abeceda
        self.poradi = poradi_dle_frekvence(tref.frekvence)
        self.tabulka = nova_tabulka(tref.tabulka, tref.abeceda)
        self.komentar = komentar

class treference:
    def __init__(self, mezery=True):
        if mezery:
            self.abeceda = MABECEDA
        else:
            self.abeceda = ABECEDA
        self.mezery = mezery
        self.frekvence = dict()
        for c in self.abeceda:
            self.frekvence[c] = 0
        self.tabulka = dict()
        for i in self.abeceda:
            self.tabulka[i] = dict()
            for j in self.abeceda:
                self.tabulka[i][j] = 0
        self.soubory = []
        
    def pridej(self, soubor):
        f = codecs.open(soubor, encoding='UTF-8')
        text = ocesat(f.read(), self.mezery)
        f.close()
        for i in range(len(text) - 1):
            self.tabulka[text[i]][text[i+1]] += 1
            self.frekvence[text[i]] += 1
        else:
            self.frekvence[text[i+1]] += 1
        self.soubory.append(soubor)

def uloz(co, kam):
    f = open(kam, 'w')
    pickle.dump(co, f)
    f.close()

def nacti(odkud):
    return pickle.load(open(odkud))
