Modul:category tree/poscatboiler/data/rhymes
- Berikut merupakan pendokumenan yang dijana oleh Templat:poscatboiler data submodule documentation. [sunting]
- Pautan berguna: laman akar • sublaman • pautan • transklusi • kes ujian • kotak pasir
Submodul data ini mentakrifkan sebahagian daripada struktur kategori Wikikamus.
Untuk pengenalan kepada sistem poscatboiler
dan penerangan tentang cara menambah atau mengubah suai kategori, lihat Modul:category tree/poscatboiler/data/doc.
local labels = {}
local raw_categories = {}
local handlers = {}
local raw_handlers = {}
-----------------------------------------------------------------------------
-- --
-- LABELS --
-- --
-----------------------------------------------------------------------------
labels["rima"] = {
description = "Senarai perkataan bahasa {{{langname}}} mengikut rimanya.",
umbrella_parents = "Asas",
parents = {{name = "{{{langcat}}}", raw = true}},
}
labels["rima refaktori"] = {
description = "Senarai perkataan bahasa {{{langname}}} yang tidak rima dengan perkataan lain.",
umbrella_parents = "Subkategori rima mengikut bahasa",
parents = {"rima"},
}
-----------------------------------------------------------------------------
-- --
-- RAW CATEGORIES --
-- --
-----------------------------------------------------------------------------
raw_categories["Subkategori rima mengikut bahasa"] = {
description = "Umbrella categories covering topics related to rhymes.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Metakategori payung",
{name = "rima", is_label = true, sort = " "},
},
}
raw_categories["rima"] = {
description = "Umbrella categories covering rhymes by language.",
additional = "{{{umbrella_meta_msg}}}",
parents = {
"Metakategori payung",
{name = "rima", is_label = true, sort = " "},
},
}
-----------------------------------------------------------------------------
-- --
-- HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(handlers, function(data)
local rhyme_beginning = data.label:match("^Rima/(.-)%-$")
if rhyme_beginning then
return {
description = ("{{{langname}}} rhyme indexes beginning with {{IPAchar|/%s/}}."):format(rhyme_beginning),
additional = "The entries in this category are not dictionary entries, but rather indexes of {{{langname}}} terms that rhyme in specific ways.",
parents = {
{name = "rima", sort = rhyme_beginning},
},
breadcrumb = {name = ("{{IPAchar|/%s-/}}"):format(rhyme_beginning), nocap = true},
umbrella = false,
}
end
end)
-----------------------------------------------------------------------------
-- --
-- RAW HANDLERS --
-- --
-----------------------------------------------------------------------------
table.insert(raw_handlers, function(data)
local function rhymeTopCategory(lang)
return {
lang = lang:getCode(),
description = "Senarai perkataan " .. lang:makeCategoryLink() .. " mengikut rima.",
additional = "This is an umbrella category. It contains no dictionary entries, but rather possible rhymes as subcategories.",
parents = {
"{{{langcat}}}",
{name = "rima", sort = langname},
},
breadcrumb = "rima",
toctemplateprefix = "rhymetop"
}
end
local function linkRhymeIfExists(lang, rhyme) -- {{change new|Though this could be ported to Wikitionary}}
if mw.title.new('Rima:Bahasa ' .. lang:getCanonicalName() .. "/" .. rhyme).exists then
return "'''[[Rima:Bahasa " .. lang:getCanonicalName() .. "/" .. rhyme ..'|<span class="IPA">-' .. rhyme .. "</span>]]'''"
end
return '<span class="IPA">-' .. rhyme .. '</span>'
end
local function rhymeCategory(lang, rhyme)
return {
lang = lang:getCode(),
description = "Senarai perkataan " .. lang:makeCategoryLink() .. ' dengan rima ' .. linkRhymeIfExists(lang, rhyme) .. '.',
parents = {
{name = "Rima:Bahasa " .. lang:getCanonicalName(), sort = rhyme},
},
breadcrumb = '<span class="IPA">-' .. rhyme .. '</span>',
displaytitle = 'Rima:Bahasa ' .. lang:getCanonicalName() .. '/<span class="IPA">' .. rhyme .. '</span>'
}
end
local function rhymeSyllableCountCategory(lang, rhyme, syllableCount)
return {
lang = lang:getCode(),
description = "Senarai perkataan" .. lang:makeCategoryLink() .. " bersuku kata " .. syllableCount .. ' dengan rima ' .. linkRhymeIfExists(lang, rhyme) .. '.',
parents = {
{name = "Rima:Bahasa " .. lang:getCanonicalName() .. "/" .. rhyme, sort = syllableCount},
},
breadcrumb = tostring(syllableCount) .. " suku kata",
displaytitle = 'Rima:' .. lang:getCanonicalName() .. '/<span class="IPA">' .. rhyme .. '</span>/' .. tostring(syllableCount) .. " suku kata" .. (syllableCount > 1 and "" or "")
}
end
local langname = data.category:match("^Rima:([^/]+)")
if langname then
local lang = require("Module:languages").getByCanonicalName(langname)
if lang then
local tokens = mw.text.split(data.category, "/")
if #tokens > 1 then
local rhyme = tokens[2]
if #tokens == 3 then
-- rhyme + syllable count category
local syllables = nil
if tokens[3] == "1 suku kata" then
syllables = 1
else
local syllablesregex = tokens[3]:match("(%d+) suku kata")
if syllablesregex then
syllables = tonumber(syllablesregex)
if syllables < 2 then
syllables = nil
end
end
end
if syllables then
return rhymeSyllableCountCategory(lang, rhyme, syllables)
end
elseif #tokens == 2 then
-- rhyme category
return rhymeCategory(lang, rhyme)
end
else
-- rhyme language top category
return rhymeTopCategory(lang)
end
end
end
end)
return {LABELS = labels, RAW_CATEGORIES = raw_categories, HANDLERS = handlers, RAW_HANDLERS = raw_handlers}