from pygments.style import Style
from pygments.token import (
    Comment,
    Error,
    Generic,
    Keyword,
    Name,
    Number,
    Operator,
    String,
    Whitespace,
)


class LudicLight(Style):
    name = "ludic-light"

    styles = {
        Whitespace: "#bbbbbb",
        Comment: "#888",
        Comment.Preproc: "#579",
        Comment.Special: "bold #cc0000",
        Keyword: "bold #080",
        Keyword.Pseudo: "#038",
        Keyword.Type: "#339",
        Operator: "#333",
        Operator.Word: "bold #000",
        Name.Builtin: "#007020",
        Name.Function: "bold #06B",
        Name.Class: "bold #B06",
        Name.Namespace: "bold #0e84b5",
        Name.Exception: "bold #F00",
        Name.Variable: "#963",
        Name.Variable.Instance: "#33B",
        Name.Variable.Class: "#369",
        Name.Variable.Global: "bold #d70",
        Name.Constant: "bold #036",
        Name.Label: "bold #970",
        Name.Entity: "bold #800",
        Name.Attribute: "#00C",
        Name.Tag: "#070",
        Name.Decorator: "bold #555",
        String: "#BA2121",
        String.Doc: "italic",
        String.Interpol: "bold #A45A77",
        String.Escape: "bold #AA5D1F",
        String.Regex: "#A45A77",
        String.Symbol: "#B8860B",
        String.Symbol: "#19177C",
        String.Other: "#008000",
        Number: "bold #60E",
        Number.Integer: "bold #00D",
        Number.Float: "bold #60E",
        Number.Hex: "bold #058",
        Number.Oct: "bold #40E",
        Generic.Heading: "bold #000080",
        Generic.Subheading: "bold #800080",
        Generic.Deleted: "#A00000",
        Generic.Inserted: "#00A000",
        Generic.Error: "#FF0000",
        Generic.Emph: "italic",
        Generic.Strong: "bold",
        Generic.EmphStrong: "bold italic",
        Generic.Prompt: "bold #c65d09",
        Generic.Output: "#888",
        Generic.Traceback: "#04D",
        Error: "#F00 bg:#FAA",
    }


class LudicDark(Style):
    name = "ludic-dark"

    styles = {
        Whitespace: "#d3c1a6",
        Comment: "#a79272",
        Comment.Preproc: "#518eb5",
        Comment.Special: "bold #bc5f54",
        Keyword: "bold #56a677",
        Keyword.Pseudo: "#518eb5",
        Keyword.Type: "#518eb5",
        Operator: "#d3c1a6",
        Operator.Word: "bold #d3c1a6",
        Name.Builtin: "#56a677",
        Name.Function: "bold #518eb5",
        Name.Class: "bold #e35d6f",
        Name.Namespace: "bold #0e84b5",
        Name.Exception: "bold #bc5f54",
        Name.Variable: "#d09d3c",
        Name.Variable.Instance: "#518eb5",
        Name.Variable.Class: "#518eb5",
        Name.Variable.Global: "bold #d09d3c",
        Name.Constant: "bold #518eb5",
        Name.Label: "bold #d09d3c",
        Name.Entity: "bold #bc5f54",
        Name.Attribute: "#518eb5",
        Name.Tag: "#56a677",
        Name.Decorator: "bold #a79272",
        String: "#bc5f54",
        String.Doc: "italic",
        String.Interpol: "bold #e35d6f",
        String.Escape: "bold #AA5D1F",
        String.Regex: "#e35d6f",
        String.Symbol: "#d09d3c",
        String.Symbol: "#518eb5",
        String.Other: "#56a677",
        Number: "bold #518eb5",
        Number.Integer: "bold #518eb5",
        Number.Float: "bold #518eb5",
        Number.Hex: "bold #518eb5",
        Number.Oct: "bold #518eb5",
        Generic.Heading: "bold #518eb5",
        Generic.Subheading: "bold #800080",
        Generic.Deleted: "#bc5f54",
        Generic.Inserted: "#56a677",
        Generic.Error: "#bc5f54",
        Generic.Emph: "italic",
        Generic.Strong: "bold",
        Generic.EmphStrong: "bold italic",
        Generic.Prompt: "bold #bc5f54",
        Generic.Output: "#d3c1a6",
        Generic.Traceback: "#518eb5",
        Error: "#bc5f54 bg:#e35d6f",
    }
