#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import sys
import time
import os

from py_tat_morphan.morphan import Morphan

def process_file(filename, morphan, path_to):
    print("Analysing '%s' file" % filename)
    try:
        with open(filename, 'r') as stream:
            text = stream.read().decode('UTF-8')
        st = time.time()
        result = morphan.process_text(text)
        dt = time.time() - st

        lexunit = int(len(result.split('\n'))/2)
        
        with open(path_to + filename.split('/')[-1], 'w') as stream:
            stream.write(result.encode('UTF-8'))
        print('\tTime to analyse text: %s sec.' % dt)
        print('\tLexical units: %s' % lexunit)
        print('\tLexical units per second: %s' % (lexunit/(dt)))
        s = '\tNot recognized: %s (%s' % (result.count('NR'), int(result.count('NR')*100/lexunit))
        print(s + '%)')
    except:
        print('Error')

def main():
    print('Tatar Language Morphological Analyser v1.02')
    print('===========================================')
    if len(sys.argv) > 1 and os.path.isdir(sys.argv[1]):
        path_from = sys.argv[1] if sys.argv[1][:-1] == '/' else sys.argv[1] + '/'
        if len(sys.argv) > 2 and os.path.isdir(sys.argv[2]):
            path_to = sys.argv[2] if sys.argv[2][:-1] == '/' else sys.argv[2] + '/'
        else:
            path_to = path_from[:-1] + '_analyzed/'
        if not os.path.exists(path_to):
            os.makedirs(path_to)
        tatmorphan = Morphan()
        st = time.time()
        for file in os.listdir(path_from):
            if os.path.isfile(os.path.join(path_from, file)):
                process_file(os.path.join(path_from, file), tatmorphan, path_to)
        dt = time.time() - st
        print('Summary:')
        print('========')
        print('Total time for analysis: %s sec.' % dt)
    else:
        print('Provide folder to analyse!')

if __name__ == '__main__':
    main()
