# -*- coding: utf-8 -*-
from __future__ import absolute_import
from babelfish import LanguageReverseConverter

from ..exceptions import ConfigurationError


class TheSubDBConverter(LanguageReverseConverter):
    def __init__(self):
        self.from_thesubdb = {'en': ('eng',), 'es': ('spa',), 'fr': ('fra',), 'it': ('ita',), 'nl': ('nld',),
                              'pl': ('pol',), 'pt': ('por', 'BR'), 'ro': ('ron',), 'sv': ('swe',), 'tr': ('tur',)}
        self.to_thesubdb = {v: k for k, v in self.from_thesubdb.items()}
        self.codes = set(self.from_thesubdb.keys())

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

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

    def reverse(self, thesubdb):
        if thesubdb in self.from_thesubdb:
            return self.from_thesubdb[thesubdb]

        raise ConfigurationError('Unsupported language code for thesubdb: %s' % thesubdb)
