1,749
edits
Lëtzelúcia (talk | contribs) No edit summary |
Lëtzelúcia (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
local | local Array = require 'Module:array' | ||
local export = {} | local export = {} | ||
-- Declension paradigms for your conlang (updated with your stems) | |||
local decls = {} | local decls = {} | ||
-- a-stem | -- a-stem | ||
decls["a"] = { | decls["a"] = setmetatable({}, { __call = function(self, args, data) | ||
} | |||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "a" | ||
data.forms[" | data.forms["nom_pl"] = r .. "e" | ||
data.forms[" | data.forms["gen_sg"] = r .. "e" | ||
data.forms[" | data.forms["gen_pl"] = r .. "aro" | ||
data.forms[" | data.forms["dat_sg"] = r .. "a" | ||
data.forms[" | data.forms["dat_pl"] = r .. "evo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "a" | ||
data.forms[" | data.forms["acc_pl"] = r .. "e" | ||
end }) | end}) | ||
-- o-stem | -- o-stem masculine | ||
decls["o"] = | decls["o"] = setmetatable({}, { __call = function(self, args, data) | ||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "u" | ||
data.forms[" | data.forms["nom_pl"] = r .. "i" | ||
data.forms[" | data.forms["gen_sg"] = r .. "i" | ||
data.forms[" | data.forms["gen_pl"] = r .. "oro" | ||
data.forms[" | data.forms["dat_sg"] = r .. "a" | ||
data.forms[" | data.forms["dat_pl"] = r .. "evo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "o" | ||
data.forms[" | data.forms["acc_pl"] = r .. "i" | ||
end }) | end}) | ||
-- o-stem neuter | -- o-stem neuter | ||
decls["o-N"] = { | decls["o-N"] = setmetatable({}, { __call = function(self, args, data) | ||
} | |||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "o" | ||
data.forms[" | data.forms["nom_pl"] = r .. "a" | ||
data.forms[" | data.forms["gen_sg"] = r .. "i" | ||
data.forms[" | data.forms["gen_pl"] = r .. "oro" | ||
data.forms[" | data.forms["dat_sg"] = r .. "a" | ||
data.forms[" | data.forms["dat_pl"] = r .. "evo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "o" | ||
data.forms[" | data.forms["acc_pl"] = r .. "a" | ||
end }) | end}) | ||
-- i-stem | -- i-stem | ||
decls["i"] = { | decls["i"] = setmetatable({}, { __call = function(self, args, data) | ||
} | |||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "e" | ||
data.forms[" | data.forms["nom_pl"] = r .. "i" | ||
data.forms[" | data.forms["gen_sg"] = r .. "i" | ||
data.forms[" | data.forms["gen_pl"] = r .. "e" | ||
data.forms[" | data.forms["dat_sg"] = r .. "i" | ||
data.forms[" | data.forms["dat_pl"] = r .. "evo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "e" | ||
data.forms[" | data.forms["acc_pl"] = r .. "i" | ||
end }) | end}) | ||
-- r-stem (updated) | -- r-stem (updated new form) | ||
decls["r"] = | decls["r"] = setmetatable({}, { __call = function(self, args, data) | ||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "ar" | ||
data.forms[" | data.forms["nom_pl"] = r .. "aiu" | ||
data.forms[" | data.forms["gen_sg"] = r .. "eri" | ||
data.forms[" | data.forms["gen_pl"] = r .. "are" | ||
data.forms[" | data.forms["dat_sg"] = r .. "er" | ||
data.forms[" | data.forms["dat_pl"] = r .. "arevo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "ar" | ||
data.forms[" | data.forms["acc_pl"] = r .. "aru" | ||
end }) | end}) | ||
-- | -- d-stem type 1 (d1) | ||
decls["d1"] = { | decls["d1"] = setmetatable({}, { __call = function(self, args, data) | ||
} | |||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "ê" | ||
data.forms[" | data.forms["nom_pl"] = r .. "edi" | ||
data.forms[" | data.forms["gen_sg"] = r .. "edi" | ||
data.forms[" | data.forms["gen_pl"] = r .. "ede" | ||
data.forms[" | data.forms["dat_sg"] = r .. "edi" | ||
data.forms[" | data.forms["dat_pl"] = r .. "edevo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "ede" | ||
data.forms[" | data.forms["acc_pl"] = r .. "edi" | ||
end }) | end}) | ||
-- | -- d-stem type 2 (d2) | ||
decls["d2"] = { | decls["d2"] = setmetatable({}, { __call = function(self, args, data) | ||
} | |||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "â" | ||
data.forms[" | data.forms["nom_pl"] = r .. "adi" | ||
data.forms[" | data.forms["gen_sg"] = r .. "adi" | ||
data.forms[" | data.forms["gen_pl"] = r .. "ade" | ||
data.forms[" | data.forms["dat_sg"] = r .. "adi" | ||
data.forms[" | data.forms["dat_pl"] = r .. "adevo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "ade" | ||
data.forms[" | data.forms["acc_pl"] = r .. "adi" | ||
end }) | end}) | ||
-- u-stem | -- u-stem masculine | ||
decls["u"] = | decls["u"] = setmetatable({}, { __call = function(self, args, data) | ||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "u" | ||
data.forms[" | data.forms["nom_pl"] = r .. "ui" | ||
data.forms[" | data.forms["gen_sg"] = r .. "aui" | ||
data.forms[" | data.forms["gen_pl"] = r .. "ove" | ||
data.forms[" | data.forms["dat_sg"] = r .. "au" | ||
data.forms[" | data.forms["dat_pl"] = r .. "ovo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "u" | ||
data.forms[" | data.forms["acc_pl"] = r .. "ui" | ||
end }) | end}) | ||
-- u-stem neuter | -- u-stem neuter | ||
decls["u-N"] = { | decls["u-N"] = setmetatable({}, { __call = function(self, args, data) | ||
} | |||
local r = args[1] | local r = args[1] | ||
data.forms[" | data.forms["nom_sg"] = r .. "u" | ||
data.forms[" | data.forms["nom_pl"] = r .. "ua" | ||
data.forms[" | data.forms["gen_sg"] = r .. "aui" | ||
data.forms[" | data.forms["gen_pl"] = r .. "ove" | ||
data.forms[" | data.forms["dat_sg"] = r .. "au" | ||
data.forms[" | data.forms["dat_pl"] = r .. "ovo" | ||
data.forms[" | data.forms["acc_sg"] = r .. "u" | ||
data.forms[" | data.forms["acc_pl"] = r .. "ua" | ||
end }) | end}) | ||
-- | -- Helper to substitute forms into wikicode | ||
local | local function add_forms(wikitable, forms) | ||
if type(wikitable) ~= "string" then | |||
[" | error("Expected string, got " .. type(wikitable)) | ||
end | |||
return wikitable:gsub("{{{([^}]+)}}}", forms) | |||
end | |||
-- Table builder using inflection-table-top/bottom templates for nice style | |||
function export.make_table(data) | |||
local output = Array(data.title or "", mw.getCurrentFrame():expandTemplate{ | |||
title = "inflection-table-top", | |||
args = { | |||
title = "-", | |||
palette = "cyan", | |||
class = "sticky-left-column", | |||
lang = "qlu", -- your conlang language code here | |||
} | |||
}) | |||
output:insert([=[ | |||
! class="outer" | | |||
! class="outer" | singular | |||
! class="outer" | plural | |||
|- | |||
! [[dative case|dative]] | |||
| {{{dat_sg}}} | |||
| {{{dat_pl}}} | |||
|- | |||
! [[genitive case|genitive]] | |||
| {{{gen_sg}}} | |||
| {{{gen_pl}}} | |||
|- | |||
! [[accusative case|accusative]] | |||
| {{{acc_sg}}} | |||
| {{{acc_pl}}} | |||
|- | |||
! [[nominative case|nominative]] | |||
| {{{nom_sg}}} | |||
| {{{nom_pl}}} | |||
|-]=]) | |||
output:insert("\n") | |||
output:insert(mw.getCurrentFrame():expandTemplate{ title = "inflection-table-bottom" }) | |||
if data.footnotes and data.footnotes ~= "" then | |||
output:insert("\n" .. data.footnotes) | |||
end | |||
-- Main | return add_forms(output:concat(), data.forms) | ||
end | |||
-- Main show function | |||
function export.show(frame) | function export.show(frame) | ||
local args = frame.args | local args = frame.args | ||
| Line 173: | Line 187: | ||
decl({ root }, data) | decl({ root }, data) | ||
return export.make_table(data) | |||
end | end | ||
return export | return export | ||