Documentation for this module may be created at Module:BioboxCategoryMapping/doc

local p = {}

p.MAPPINGS = {
	orientation = {
	    {aliases = {"gay", "g", "h", "homo", "homosexual", "homosexuality"}, category = "Gay people", display = "Gay", class = "gay"},
	    {aliases = {"bi", "bisex", "bisexual"}, category = "Bisexual people", display = "Bisexual", class = "bisexual"},
	    {aliases = {"straight", "s", "str8", "hetero", "heterosexual"}, category = "Heterosexual people", display = "Heterosexual", class = "straight"}
	},
    hair = {
        {aliases = {"auburn", "auburn hair"}, category = "Auburn hair", display = "Auburn"},
        {aliases = {"blond", "blonde", "blond hair", "blonde hair"}, category = "Blond", display = "Blond"},
        {aliases = {"brunet", "brunet hair"}, category = "Brunet", display = "Brunet"},
        {aliases = {"black", "black hair"}, category = "Black hair", display = "Black"},
        {aliases = {"brown", "brown hair"}, category = "Brown hair", display = "Brown"},
        {aliases = {"dark blonde", "dark blond", "dark blonde hair", "dark blond hair"}, category = "Dark blond hair", display = "Dark Blond"},
        {aliases = {"dark brown", "dark brown hair"}, category = "Dark brown hair", display = "Dark Brown"},
        {aliases = {"gray", "gray hair", "silver", "silver hair"}, category = "Gray hair", display = "Gray"},
        {aliases = {"light brown", "light brown hair"}, category = "Light brown hair", display = "Light Brown"},
        {aliases = {"redhead", "redhead hair", "red head", "red head hair", "ginger", "ginger hair"}, category = "Redhead", display = "Redhead"}
    },
	hair_length = {
	    {aliases = {"short", "shorthair", "short hair"}, display = "Short"},
	    {aliases = {"bald", "baldness", "baldhead", "bald head", "baldhair", "bald hair"}, display = "Bald"},
	    {aliases = {"long", "longhair", "long hair"}, display = "Long"},
	    {aliases = {"shaved", "buzzcut", "shavedhead", "shaved head", "shavedhair", "shaved hair"}, display = "Shaved"},
	    {aliases = {"buzz cut", "skinhead hairstyle", "skinhead hair", "skinhead", "skin head"}, display = "Buzz cut"}
	},
    eye_color = {
        {aliases = {"amber", "amber eyes"}, category = "Amber eyes", display = "Amber"},
        {aliases = {"black", "black eyes"}, category = "Black eyes", display = "Black"},
        {aliases = {"blue", "blue eyes"}, category = "Blue eyes", display = "Blue"},
        {aliases = {"blue-brown", "blue-brown eyes", "blue brown", "blue brown eyes", "brown-blue eyes", "brown-blue", "brown blue", "brown blue eyes"}, category = "Blue-Brown eyes", display = "Blue-Brown"},
        {aliases = {"blue-green", "blue-green eyes", "blue green", "blue green eyes", "green-blue", "green-blue eyes", "green blue", "green blue eyes"}, category = "Blue-Green eyes", display = "Blue-Green"},
        {aliases = {"brown", "brown eyes"}, category = "Brown eyes", display = "Brown"},
        {aliases = {"gray", "gray eyes", "grey", "grey eyes"}, category = "Gray eyes", display = "Gray"},
        {aliases = {"gray-green", "gray green", "gray-green eyes", "gray green eyes", "green-gray", "green gray", "green-gray eyes", "green gray eyes", "grey-green", "grey green", "grey-green eyes", "grey green eyes", "green-grey", "green grey", "green-grey eyes", "green grey eyes"}, category = "Gray-Green eyes", display = "Gray-Green"},
        {aliases = {"green", "green eyes"}, category = "Green eyes", display = "Green"},
        {aliases = {"hazel", "hazel eyes"}, category = "Hazel eyes", display = "Hazel"}
    },
    body_type = {
        {aliases = {"slim", "slim body"}, category = "Slim", display = "Slim"},
        {aliases = {"swimmer", "swimmer body"}, category = "Swimmer", display = "Swimmer"},
        {aliases = {"athletic", "athletic body"}, category = "Athletic", display = "Athletic"},
        {aliases = {"muscular", "muscular body"}, category = "Muscular", display = "Muscular"},
        {aliases = {"average", "average body"}, category = "Average body", display = "Average"},
        {aliases = {"beefy", "beefy body"}, category = "Beefy", display = "Beefy"},
        {aliases = {"bear", "bear body"}, category = "Bear", display = "Bear"},
        {aliases = {"bodybuilder", "bodybuilder body"}, category = "Bodybuilder", display = "Bodybuilder"},
        {aliases = {"chubby", "chubby body"}, category = "Chubby", display = "Chubby"}
    },
    skin = {
        {aliases = {"black", "black skin"}, category = "Black skin", display = "Black"},
        {aliases = {"dark", "dark skin"}, category = "Dark skin", display = "Dark"},
        {aliases = {"dark black", "dark black skin"}, category = "Dark Black skin", display = "Dark Black"},
        {aliases = {"dark olive", "dark olive skin"}, category = "Dark Olive skin", display = "Dark Olive"},
        {aliases = {"light black", "light black skin"}, category = "Light Black skin", display = "Light Black"},
        {aliases = {"medium black", "medium black skin"}, category = "Medium Black skin", display = "Medium Black"},
        {aliases = {"light brown", "light brown skin"}, category = "Light Brown skin", display = "Light Brown"},
        {aliases = {"brown", "brown skin"}, category = "Brown skin", display = "Brown"},
        {aliases = {"olive", "olive skin"}, category = "Olive skin", display = "Olive"},
        {aliases = {"white", "white skin"}, category = "White skin", display = "White"},
        {aliases = {"tanned", "tanned skin"}, category = "Tanned skin", display = "Tanned"}
    },
    ass_type = {
        {aliases = {"small", "small ass"}, category = "Small Ass", display = "Small Ass", priority = 1},
        {aliases = {"medium", "medium ass"}, category = "Medium Ass", display = "Medium Ass", priority = 2},
        {aliases = {"big", "big ass"}, category = "Big Ass", display = "Big Ass", priority = 3},
        {aliases = {"bubble", "bubble butt"}, category = "Bubble Butt", display = "Bubble Butt", priority = 0}
    },
    foreskin = {
        ["cut"] = {category = "Cut", display = "Cut"},
        ["uncut"] = {category = "Uncut", display = "Uncut"}
    },
    chest_hair = {
        {aliases = {"hairy chest", "hairy"}, category = "Hairy Chest", display = "Hairy"},
        {aliases = {"small", "small hair", "small chest hair"}, category = "Small chest hair", display = "Small"},
        {aliases = {"smooth chest", "smooth"}, category = "Smooth Chest", display = "Smooth"},
        {aliases = {"c", "circumareolar"}, category = "Circumareolar chest hair", display = "C"},
        {aliases = {"ci", "circumareolo-infraclavicular", "circumareolo infraclavicular", "circumareoloin fraclavicular"}, category = "Circumareolo-Infraclavicular chest hair", display = "CI"},
        {aliases = {"cp", "circumareolo-pectoral", "circumareolo pectoral", "circumareolopectoral"}, category = "Circumareolo-Pectoral chest hair", display = "CP"},
        {aliases = {"cpi", "circumareolo-pecto-infraclavicular", "circumareolo pecto infraclavicular", "circumareolopectoinfraclavicular"}, category = "Circumareolo-Pecto-Infraclavicular chest hair", display = "CPI"},
        {aliases = {"cps", "circumareolo-pecto-sternal", "circumareolo pecto sternal", "circumareolopectosternal"}, category = "Circumareolo-Pecto-Sternal chest hair", display = "CPS"},
        {aliases = {"cpsi", "circumareolo-pecto-sterno-infraclavicular", "circumareolo pecto sterno infraclavicular", "circumareolopectosternoinfraclavicular"}, category = "Circumareolo-Pecto-Sterno-Infraclavicular chest hair", display = "CPSI"},
        {aliases = {"cs", "circumareolo-sternal", "circumareolo sternal", "circumareolosternal"}, category = "Circumareolo-Sternal chest hair", display = "CS"},
        {aliases = {"csi", "circumareolo-sterno-infraclavicular", "circumareolo sterno infraclavicular", "circumareolosternoin fraclavicular"}, category = "Circumareolo-Sterno-Infraclavicular chest hair", display = "CSI"},
        {aliases = {"i", "infraclavicular"}, category = "Infraclavicular chest hair", display = "I"},
        {aliases = {"p", "pectoral"}, category = "Pectoral chest hair", display = "P"},
        {aliases = {"pi", "pecto-infraclavicular", "pecto infraclavicular", "pectoinfraclavicular"}, category = "Pecto-Infraclavicular chest hair", display = "PI"},
        {aliases = {"ps", "pecto-sternal", "pecto sternal", "pectosternal"}, category = "Pecto-Sternal chest hair", display = "PS"},
        {aliases = {"psi", "pecto-sterno-infraclavicular", "pecto sterno infraclavicular", "pectosternoinfraclavicular"}, category = "Pecto-Sterno-Infraclavicular chest hair", display = "PSI"},
        {aliases = {"s", "sternal"}, category = "Sternal chest hair", display = "S"},
        {aliases = {"si", "sterno-infraclavicular", "sterno infraclavicular", "sternoinfraclavicular"}, category = "Sterno-Infraclavicular chest hair", display = "SI"}
    }
}

p.LABELS = {
	orientation = "Orientation:",
    hair = "Hair:",
    eye_color = "Eye color:",
    body_type = "Body type:",
    skin = "Skin:",
    ass_type = "Ass type:",
    foreskin = "Foreskin:",
    chest_hair = "Chest hair:"
}

p.PARAM_NAMES = {
	orientation = {'orientation', 'sexual_orientation'},
    hair = {'hair', 'hair_color'},
    hair_length = {'hair_length', 'hair length', 'hairlength'},
    eye_color = {'eye color', 'eye_color', 'eyecolor', 'eyes', 'eye'},
    body_type = {'body type', 'bodytype', 'body_type', 'body'},
    skin = {'skin', 'skin_color', 'skin color', 'skincolor', 'skincomplexion'},
    ass_type = {'ass_type', 'ass type', 'ass'},
    foreskin = {'foreskin'},
    chest_hair = {'chest_hair', 'chest hair'}
}

p.PARAM_ALIASES = {
	sexual_orientation = {'orientation'},
    hair_color = {'hair'},
    hair_length = {'hair length', 'hairlength'},
    eye_color = {'eye', 'eyes', 'eyes_color'},
    body_type = {'body'},
    skincomplexion = {'skin', 'skin_color'},
    ass_type = {'ass'},
    alias = {'aliases'},
    chest_hair = {'chest'}
}

p.PROPERTY_IDS = {
	orientation = "P347",
    hair = "P162",
    hair_length = "P166",
    eye_color = "P386",
    body_type = "P399",
    skin = "P421",
    ass_type = "P585",
    foreskin = "P398",
    chest_hair = "P589"
}

p.VALIDATION_RULES = {
    ass_type = {
        mutually_exclusive = {
            groups = {
                {
                    values = {"Small Ass", "Medium Ass", "Big Ass"},
                    max_selected = 1
                }
            },
            additional_allowed = {"Bubble Butt"}
        }
    }
}

return p