from collections import defaultdict
from operator import itemgetter

import pytz
from django.utils.translation import gettext_lazy as _


def make_timezones():
    data = defaultdict(list)
    for tz in pytz.all_timezones:
        if "/" in tz:
            area, loc = tz.split("/", 1)
        else:
            area, loc = "Other", tz
        if not loc.startswith("GMT"):
            data[area].append((tz, loc))
    return sorted(data.items(), key=itemgetter(0))


TIMEZONE = make_timezones()
del make_timezones

ACE_THEMES = (
    ("ambiance", "Ambiance"),
    ("chaos", "Chaos"),
    ("chrome", "Chrome"),
    ("clouds", "Clouds"),
    ("clouds_midnight", "Clouds Midnight"),
    ("cobalt", "Cobalt"),
    ("crimson_editor", "Crimson Editor"),
    ("dawn", "Dawn"),
    ("dreamweaver", "Dreamweaver"),
    ("eclipse", "Eclipse"),
    ("github", "Github"),
    ("idle_fingers", "Idle Fingers"),
    ("katzenmilch", "Katzenmilch"),
    ("kr_theme", "KR Theme"),
    ("kuroir", "Kuroir"),
    ("merbivore", "Merbivore"),
    ("merbivore_soft", "Merbivore Soft"),
    ("mono_industrial", "Mono Industrial"),
    ("monokai", "Monokai"),
    ("pastel_on_dark", "Pastel on Dark"),
    ("solarized_dark", "Solarized Dark"),
    ("solarized_light", "Solarized Light"),
    ("terminal", "Terminal"),
    ("textmate", "Textmate"),
    ("tomorrow", "Tomorrow"),
    ("tomorrow_night", "Tomorrow Night"),
    ("tomorrow_night_blue", "Tomorrow Night Blue"),
    ("tomorrow_night_bright", "Tomorrow Night Bright"),
    ("tomorrow_night_eighties", "Tomorrow Night Eighties"),
    ("twilight", "Twilight"),
    ("vibrant_ink", "Vibrant Ink"),
    ("xcode", "XCode"),
)

MATH_ENGINES_CHOICES = (
    ("tex", _("Leave as LaTeX")),
    ("svg", _("SVG with PNG fallback")),
    ("mml", _("MathML only")),
    ("jax", _("MathJax with SVG/PNG fallback")),
    ("auto", _("Detect best quality")),
)

EFFECTIVE_MATH_ENGINES = ("svg", "mml", "tex", "jax")