Module:sl-common

From Wiktionary, the free dictionary
Jump to navigation Jump to search

This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local export = {}

local u = require("Module:string/char")
local GRAVE     = u(0x0300)
local ACUTE     = u(0x0301)
local MACRON    = u(0x0304)
local DGRAVE    = u(0x030F)
local INVBREVE  = u(0x0311)

function export.has_accents(word)
	if mw.ustring.find(mw.ustring.lower(word), "[áéíóŕúȃȇȋȏȓȗāēīōūȁȅȉȍȕèẹọ" .. GRAVE .. ACUTE .. MACRON .. DGRAVE .. INVBREVE .. "]") then
		return true
	else
		return false
	end
end

function export.remove_accents(text)
	return (require("Module:languages").getByCode("sl"):makeEntryName(text))
end

function export.is_soft(stem)
	if mw.ustring.find(stem, "[cjčšž]$") then
		return true
	else
		return false
	end
end

function export.first_palat(stem)
	if stem:sub(-2) == "k" then return stem:sub(1, -2) .. "č"
	elseif stem:sub(-2) == "g" then return stem:sub(1, -2) .. "ž"
	elseif stem:sub(-3) == "sk" then return stem:sub(1, -3) .. "šč"
	else return stem
	end
end

function export.second_palat(stem)
	if stem:sub(-2) == "k" then return stem:sub(1, -2) .. "c"
	elseif stem:sub(-2) == "g" then return stem:sub(1, -2) .. "z"
	else return stem
	end
end

function export.iotation(stem)
	if stem:sub(-2) == "sk" then return stem:sub(1, -3) .. "šč"
	elseif stem:sub(-2) == "sl" then return stem:sub(1, -3) .. "šlj"
	elseif stem:sub(-1) == "t" or stem:sub(-1) == "k" or stem:sub(-1) == "c" then return stem:sub(1, -2) .. "č"
	elseif stem:sub(-1) == "g" or stem:sub(-1) == "z" then return stem:sub(1, -2) .. "ž"
	elseif stem:sub(-1) == "h" or stem:sub(-1) == "s" then return stem:sub(1, -2) .. "š"
	elseif stem:sub(-1) == "d" then return stem:sub(1, -2) .. "j"
	elseif stem:sub(-1) == "m" then return stem:sub(1, -2) .. "mlj"
	elseif stem:sub(-1) == "p" then return stem:sub(1, -2) .. "plj"
	elseif stem:sub(-1) == "b" then return stem:sub(1, -2) .. "blj"
	elseif stem:sub(-1) == "v" then return stem:sub(1, -2) .. "vlj"
	else return stem
	end
end

function export.t(stem)
	if mw.ustring.find(stem, "st$") then return stem
	elseif mw.ustring.find(stem, "[bp]$") then return stem .. "st"
	elseif mw.ustring.find(stem, "[dtz]$") then return (mw.ustring.gsub(stem, ".$", "st"))
	elseif mw.ustring.find(stem, "[čgkrž]$") then return (mw.ustring.gsub(stem, ".$", "č"))
	else return stem .. "t"
	end
end

return export