# coding=utf-8
from __future__ import absolute_import
import logging

from babelfish import LanguageReverseConverter
from subliminal.exceptions import ConfigurationError

logger = logging.getLogger(__name__)


class TitloviConverter(LanguageReverseConverter):
    def __init__(self):
        self.from_titlovi = {'Bosanski': ('bos',),
                             'English': ('eng',),
                             'Hrvatski': ('hrv',),
                             'Makedonski': ('mkd',),
                             'Srpski': ('srp',),
                             'Cirilica': ('srp', None, 'Cyrl'),
                             'Slovenski': ('slv',),
                             }
        self.to_titlovi = {('bos',): 'Bosanski',
                           ('eng',): 'English',
                           ('hrv',): 'Hrvatski',
                           ('mkd',): 'Makedonski',
                           ('srp',): 'Srpski',
                           ('srp', None, 'Cyrl'): 'Cirilica',
                           ('slv',): 'Slovenski'
                           }
        self.codes = set(self.from_titlovi.keys())

    def convert(self, alpha3, country=None, script=None):
        if (alpha3, country, script) in self.to_titlovi:
            return self.to_titlovi[(alpha3, country, script)]
        if (alpha3,) in self.to_titlovi:
            return self.to_titlovi[(alpha3,)]

        raise ConfigurationError('Unsupported language code for titlovi: %s, %s, %s' % (alpha3, country, script))

    def reverse(self, titlovi):
        if titlovi in self.from_titlovi:
            return self.from_titlovi[titlovi]

        raise ConfigurationError('Unsupported language number for titlovi: %s' % titlovi)