local data = {}
-- A list of all possible "parts" that a specification can be made out of. For each part, we list
-- the class it's in (gender, animacy, etc.), the associated category (if any) and the display form.
-- In a given gender/number spec, only one part of each class is allowed.
data.codes = {
["?"] = {type = "other", display = '<abbr title="ยังไม่ระบุเพศ">?</abbr>'},
-- FIXME: The following should be either eliminated in favor of g! or converted to a general "gender/number unattested".
["?!"] = {type = "other", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Genders
["m"] = {type = "gender", cat = "POSเพศชาย", display = '<abbr title="เพศชาย">ช.</abbr>'},
["f"] = {type = "gender", cat = "POSเพศหญิง", display = '<abbr title="เพศหญิง">ญ.</abbr>'},
["n"] = {type = "gender", cat = "POSเพศกลาง", display = '<abbr title="เพศกลาง">ก.</abbr>'},
["c"] = {type = "gender", cat = "POSเพศรวม", display = '<abbr title="เพศรวม">ร.</abbr>'},
["gneut"] = {type = "gender", cat = "gender-neutral POS", display = '<abbr title="gender-neutral">gender-neutral</abbr>'},
["g!"] = {type = "gender", display = '<abbr title="gender unattested">gender unattested</abbr>'},
-- Animacy
-- Animate = either animal or personal (for Russian, etc.)
["an"] = {type = "animacy", cat = "POSมีชีวิต", display = '<abbr title="มีชีวิต">ชีว.</abbr>'},
["in"] = {type = "animacy", cat = "POSไม่มีชีวิต", display = '<abbr title="ไม่มีชีวิต">อชีว.</abbr>'},
-- Animal (for Ukrainian, Belarusian, Polish)
["anml"] = {type = "animacy", cat = "POSสัตว์", display = '<abbr title="สัตว์">สัต.</abbr>'},
-- Personal (for Ukrainian, Belarusian, Polish)
["pr"] = {type = "animacy", cat = "POSบุคคล", display = '<abbr title="บุคคล">บุค.</abbr>'},
["np"] = {type = "animacy", cat = "POSไม่เป็นบุคคล", display = '<abbr title="ไม่เป็นบุคคล">อบุค.</abbr>'},
["an!"] = {type = "animacy", display = '<abbr title="animacy unattested">animacy unattested</abbr>'},
-- Virility (for Polish)
["vr"] = {type = "virility", cat = "virile POS", display = '<abbr title="virile (= masculine personal)">vir</abbr>'},
["nv"] = {type = "virility", cat = "nonvirile POS", display = '<abbr title="nonvirile (= other than masculine personal)">nvir</abbr>'},
-- Numbers
["s"] = {type = "number", display = '<abbr title="เอกพจน์">เอก.</abbr>'},
["d"] = {type = "number", cat = "ทวิพจน์เท่านั้น", display = '<abbr title="ทวิพจน์">ทวิ.</abbr>'},
["p"] = {type = "number", cat = "พหูพจน์เท่านั้น", display = '<abbr title="พหูพจน์">พหู.</abbr>'},
["num!"] = {type = "number", display = '<abbr title="number unattested">number unattested</abbr>'},
-- Verb qualifiers
["impf"] = {type = "aspect", cat = "POSไม่สมบูรณ์", display = '<abbr title="การณ์ลักษณะไม่สมบูรณ์">ไม่สมบูรณ์</abbr>'},
["pf"] = {type = "aspect", cat = "POSสมบูรณ์", display = '<abbr title="การณ์ลักษณะสมบูรณ์">สมบูรณ์</abbr>'},
["asp!"] = {type = "aspect", display = '<abbr title="aspect unattested">aspect unattested</abbr>'},
}
-- Combined codes that are equivalent to giving multiple specs. `mf` is the same as specifying two separate specs,
-- one with `m` in it and the other with `f`. `mfbysense` is similar but is used for nouns that can be either masculine
-- or feminine according as to whether they refer to masculine or feminine beings.
data.combinations = {
["mf"] = {codes = {"m", "f"}},
["mfequiv"] = {codes = {"m", "f"}, display = '<abbr title="different genders do not affect the meaning">same meaning</abbr>'},
["mfbysense"] = {codes = {"m", "f"}, cat = "POSที่เพศขึ้นอยู่กับความหมาย",
display = '<abbr title="according to the gender of the referent">by sense</abbr>'},
["biasp"] = {codes = {"impf", "pf"}},
}
-- Categories when multiple gender/number codes of a given type occur in different specs (two or more of the same type
-- cannot occur in a single spec).
data.multicode_cats = {
["gender"] = "POSที่มีหลายเพศ",
["animacy"] = "POSที่มีหลายชีวิตภาพ",
["aspect"] = "biaspectual POS",
}
return data