Module:User:Benwing2/category tree/poscatboiler/data/lang-specific/hi
Appearance
- This module sandbox lacks a documentation subpage. You may create it.
- Useful links: root page • root page’s subpages • links • transclusions • testcases • user page • user talk page • userspace
This is a private module sandbox of Benwing2, for their own experimentation. Items in this module may be added and removed at Benwing2's discretion; do not rely on this module's stability.
local labels = {}
local handlers = {}
local u = mw.ustring.char
for _, pos in ipairs({"nouns", "verbs", "adjectives"}) do
labels[pos .. " with phonetic respelling"] = {
description = "{{{langname}}} " .. pos .. " using phonetic respelling in their " ..
(pos == "verbs" and "conjugation" or "declension") ..
" tables due to irregular or unpredictable pronunciations.",
additional = [=[
===See also===
* [[Wiktionary:Hindi transliteration]]
* [[Module:hi-translit]]]=],
parents = {
"terms by orthographic property",
"terms by phonemic property",
{name = pos, sort = "phonetic respelling"},
},
}
end
--------------------------------- Nouns --------------------------------
labels["nouns by gender and stem type"] = {
description = "{{{langname}}} nouns categorized by gender and stem type.",
parents = {{name = "nouns", sort = "gender and stem type"}},
breadcrumb = "by gender and stem type",
}
table.insert(handlers, function(data)
local gender, stem, pos
gender, stem, pos = data.label:match("^([a-z]+ine) (independent unmarked [^ %-]*%-stem) (.*)s$")
if not gender then
gender, stem, pos = data.label:match("^([a-z]+ine) (independent [^ %-]*%-stem) (.*)s$")
end
if not gender then
gender, stem, pos = data.label:match("^([a-z]+ine) (unmarked [^ %-]*%-stem) (.*)s$")
end
if not gender then
gender, stem, pos = data.label:match("^([a-z]+ine) ([^ %-]*%-stem) (.*)s$")
end
if gender and pos == "noun" then
local desc = "{{{langname}}} " .. gender .. " " .. stem .. " " .. pos .. "s."
local additional
if stem:find("independent") then
additional = "* Here, 'independent' means that the stem ending directly " ..
"follows a vowel and so uses the independent Devanagari form of the vowel that begins the ending."
end
if stem:find("unmarked") then
additional = additional and additional .. "\n" or ""
additional = additional .. "* Here, 'unmarked' means that the endings are added onto the full direct singular form " ..
"without removing the stem ending (although final nasalization, if present, will move to the ending)."
end
return {
description = desc,
additional = additional,
parents = {
{name = pos .. "s by gender and stem type", sort = stem:gsub("independent ", ""):gsub("unmarked ", "")}
},
breadcrumb = gender .. " " .. stem,
}
end
end)
--------------------------------- Adjectives --------------------------------
-- vowel diacritics; don't display nicely on their own
local M = u(0x0901)
local N = u(0x0902)
local AA = u(0x093e)
local AAM = AA .. M
local E = u(0x0947)
local EN = E .. N
local II = u(0x0940)
local IIN = II .. N
local adj_decl_endings = {
["ā-stem"] = {AA, E, II},
["independent ā-stem"] = {"आ", "ए", "ई"},
["ā̃-stem"] = {AAM, EN, IIN},
["independent ā̃-stem"] = {"आँ", "एँ", "ईं"},
}
labels["adjectives by stem type"] = {
description = "{{{langname}}} adjectives categorized by stem type.",
parents = {{name = "adjectives", sort = "stem type"}},
breadcrumb = "by stem type",
}
table.insert(handlers, function(data)
local stem
stem = data.label:match("^(independent [^ %-]*%-stem) adjectives$")
if not stem then
stem = data.label:match("^([^ %-]*%-stem) adjectives$")
end
if stem and adj_decl_endings[stem] then
local mdir, mop, f = unpack(adj_decl_endings[stem])
local desc = "{{{langname}}} " .. stem .. " adjectives, ending in " .. mdir ..
" in the direct masculine singular, in " .. mop .. " in the remaining masculine forms, and in " .. f ..
" in all feminine forms."
local additional
if stem:find("independent") then
additional = "* Here, 'independent' means that the stem ending directly " ..
"follows a vowel and so uses the independent Devanagari form of the vowel that begins the ending."
end
return {
description = desc,
additional = additional,
parents = {
{name = pos .. "s by stem type", sort = stem:gsub("independent ", "")}
},
breadcrumb = stem,
}
end
end)
return {LABELS = labels, HANDLERS = handlers}