# coding: utf8
from __future__ import unicode_literals

from ..punctuation import TOKENIZER_INFIXES
from ..char_classes import LIST_PUNCT, LIST_ELLIPSES, LIST_QUOTES, CURRENCY
from ..char_classes import QUOTES, UNITS, ALPHA, ALPHA_LOWER, ALPHA_UPPER


ELISION = " ' ’ ".strip().replace(' ', '').replace('\n', '')
HYPHENS = r"- – — ‐ ‑".strip().replace(' ', '').replace('\n', '')


_suffixes = (LIST_PUNCT + LIST_ELLIPSES + LIST_QUOTES +
             [r'(?<=[0-9])\+',
              r'(?<=°[FfCcKk])\.',  # 4°C. -> ["4°C", "."]
              r'(?<=[0-9])°[FfCcKk]',  # 4°C -> ["4", "°C"]
              r'(?<=[0-9])%',  # 4% -> ["4", "%"]
              r'(?<=[0-9])(?:{})'.format(CURRENCY),
              r'(?<=[0-9])(?:{})'.format(UNITS),
              r'(?<=[0-9{}{}(?:{})])\.'.format(ALPHA_LOWER, r'%²\-\)\]\+', QUOTES),
              r'(?<=[{au}][{au}])\.'.format(au=ALPHA_UPPER)])


_infixes = (TOKENIZER_INFIXES +
            [r'(?<=[{a}][{el}])(?=[{a}])'.format(a=ALPHA, el=ELISION)])


TOKENIZER_SUFFIXES = _suffixes
TOKENIZER_INFIXES = _infixes