„Modul:Nyelvtani modul” változatai közötti eltérés

A Wikipédiából, a szabad enciklopédiából
[ellenőrzött változat][ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
lista jav.
a No globals
1. sor: 1. sor:
require"Modul:No globals"
local p = {}
local p = {}
local lang = mw.getContentLanguage()
local lang = mw.getContentLanguage()


-- allow to call functions with a single string or number parameter
-- allow to call functions with a single string or number parameter
function getArgs(frame, options)
local function getArgs(frame, options)
if type(frame) ~= "table" then frame = { frame } end
if type(frame) ~= "table" then frame = { frame } end
return require('Modul:Arguments').getArgs(frame, options)
return require('Modul:Arguments').getArgs(frame, options)
9. sor: 10. sor:


-- needed to be called from pcall
-- needed to be called from pcall
function formatDateLocal(form, tstamp, loc)
local function formatDateLocal(form, tstamp, loc)
return lang:formatDate('n', dateStr, loc)
return lang:formatDate('n', dateStr, loc)
end
end
15. sor: 16. sor:
-- returns "a" or "az" depending on the first character of the word passed to the template
-- returns "a" or "az" depending on the first character of the word passed to the template
function p.az(frame)
function p.az(frame)
str = getArgs(frame)[1]
local str = getArgs(frame)[1]
if not str then return "a(z)" end
if not str then return "a(z)" end
firstChar = mw.ustring.sub(str, 1, 1)
local firstChar = mw.ustring.sub(str, 1, 1)
firstCharLower = mw.ustring.lower(firstChar)
local firstCharLower = mw.ustring.lower(firstChar)
if (nil ~= mw.ustring.find("aáeéiíoóöőuúüű", firstCharLower, 1, true)) then
if (nil ~= mw.ustring.find("aáeéiíoóöőuúüű", firstCharLower, 1, true)) then
42. sor: 43. sor:
-- returns month name in Hungarian + "ából" / "jából" / "éből" / "jéből" accordingly
-- returns month name in Hungarian + "ából" / "jából" / "éből" / "jéből" accordingly
function p.fromMonthSuffix(frame)
function p.fromMonthSuffix(frame)
dateStr = getArgs(frame)[1]
local dateStr = getArgs(frame)[1]
suffixes = {
local suffixes = {
[1] = "jából",
[1] = "jából",
[2] = "jából",
[2] = "jából",
60. sor: 61. sor:
if (pcall(formatDateLocal, 'n', dateStr)) then
if (pcall(formatDateLocal, 'n', dateStr)) then
monthIndex = lang:formatDate('n', dateStr)
local monthIndex = lang:formatDate('n', dateStr)
return lang:formatDate('Y F', dateStr)..suffixes[tonumber(monthIndex)]
return lang:formatDate('Y F', dateStr)..suffixes[tonumber(monthIndex)]
else
else
70. sor: 71. sor:
-- returns month name in Hungarian + "i"
-- returns month name in Hungarian + "i"
function p.ofMonthSuffix(frame)
function p.ofMonthSuffix(frame)
dateStr = getArgs(frame)[1]
local dateStr = getArgs(frame)[1]
if (pcall(formatDateLocal, 'n', dateStr)) then
if (pcall(formatDateLocal, 'n', dateStr)) then
82. sor: 83. sor:
-- returns number + "-s" / "-as" / "-es" / "-os" / "-ós" / "-ös"
-- returns number + "-s" / "-as" / "-es" / "-os" / "-ós" / "-ös"
function p.hanyas(frame)
function p.hanyas(frame)
str = getArgs(frame)[1];
local str = getArgs(frame)[1];
if (nil == str) then
if (nil == str) then
88. sor: 89. sor:
end
end
number = tonumber(str)
local number = tonumber(str)
if (nil == number) then
if (nil == number) then
number = mw.ustring.match(str, "%d*$")
number = mw.ustring.match(str, "%d*$")
end
end


suffixesNonRound = {
local suffixesNonRound = {
[1] = "es",
[1] = "es",
[2] = "es",
[2] = "es",
105. sor: 106. sor:
}
}
suffixesRoundBelow100 = {
local suffixesRoundBelow100 = {
[1] = "es",
[1] = "es",
[2] = "as",
[2] = "as",
117. sor: 118. sor:
}
}


lastChar = mw.ustring.sub(str, -1)
local lastChar = mw.ustring.sub(str, -1)


suffixIndex = tonumber(lastChar)
local suffixIndex = tonumber(lastChar)
if (nil ~= suffixIndex) then
if (nil ~= suffixIndex) then
169. sor: 170. sor:
-- returns number + "-ban" / "-ben"
-- returns number + "-ban" / "-ben"
function p.hanyban(frame)
function p.hanyban(frame)
str = getArgs(frame)[1];
local str = getArgs(frame)[1];
if (nil == str) then
if (nil == str) then
175. sor: 176. sor:
end
end
number = tonumber(str)
local number = tonumber(str)
if (nil == number) then
if (nil == number) then
number = mw.ustring.match(str, "%d*$")
number = mw.ustring.match(str, "%d*$")
end
end


suffixesNonRound = {
local suffixesNonRound = {
[1] = "ben",
[1] = "ben",
[2] = "ben",
[2] = "ben",
192. sor: 193. sor:
}
}
suffixesRoundBelow100 = {
local suffixesRoundBelow100 = {
[1] = "ben",
[1] = "ben",
[2] = "ban",
[2] = "ban",
204. sor: 205. sor:
}
}


lastChar = mw.ustring.sub(str, -1)
local lastChar = mw.ustring.sub(str, -1)


suffixIndex = tonumber(lastChar)
local suffixIndex = tonumber(lastChar)
if (nil ~= suffixIndex) then
if (nil ~= suffixIndex) then

A lap 2015. június 23., 13:08-kori változata

Nyelvtani modul[mi ez?] • [dokumentáció: mutat, szerkeszt] • [tesztek: Lua-hiba a(z) package.lua modulban a(z) 80. sorban: module 'Modul:No globals' not found (részletek)]

Előfordulások

require"Modul:No globals"
local p = {}
local lang = mw.getContentLanguage()

-- allow to call functions with a single string or number parameter
local function getArgs(frame, options)
	if type(frame) ~= "table" then frame = { frame } end
	return require('Modul:Arguments').getArgs(frame, options)
end

-- needed to be called from pcall
local function formatDateLocal(form, tstamp, loc)
   return lang:formatDate('n', dateStr, loc)
end

-- returns "a" or "az" depending on the first character of the word passed to the template
function p.az(frame)
    local str = getArgs(frame)[1]
    if not str then return "a(z)" end
    
    local firstChar = mw.ustring.sub(str, 1, 1)
    local firstCharLower = mw.ustring.lower(firstChar)
    
    if (nil ~= mw.ustring.find("aáeéiíoóöőuúüű", firstCharLower, 1, true)) then
        return "az"
    elseif (nil ~= mw.ustring.find("bcdfghjklmnpqrstvwxyz", firstCharLower, 1, true)) then
        return "a"
    else
        return "a(z)"
    end
    
end

-- Return true if first argument starts with A or Az, otherwise empty string.
function p.startsWithAz(frame)
	local s = getArgs(frame)[1]
	return (s == nil and '') or tostring(mw.ustring.upper(mw.ustring.sub(s, 1, 2)) == 'A ' 
		or mw.ustring.upper(mw.ustring.sub(s, 1, 3)) == 'AZ ' 
		or ''
	)
end

-- returns month name in Hungarian + "ából" / "jából" / "éből" / "jéből" accordingly
function p.fromMonthSuffix(frame)
    local dateStr = getArgs(frame)[1]
    local suffixes = {
        [1] = "jából",
        [2] = "jából",
        [3] = "ából",
        [4] = "ából",
        [5] = "ából",
        [6] = "ából",
        [7] = "ából",
        [8] = "ából",
        [9] = "éből",
        [10] = "éből",
        [11] = "éből",
        [12] = "éből"
    }
    
    
    if (pcall(formatDateLocal, 'n', dateStr)) then
        local monthIndex = lang:formatDate('n', dateStr)
        return lang:formatDate('Y F', dateStr)..suffixes[tonumber(monthIndex)]
    else
        return dateStr
    end

end

-- returns month name in Hungarian + "i"
function p.ofMonthSuffix(frame)
    local dateStr = getArgs(frame)[1]    
    
    if (pcall(formatDateLocal, 'n', dateStr)) then
        return lang:formatDate('Y F', dateStr).."i"
    else
        return dateStr
    end
    
end

-- returns number + "-s" / "-as" / "-es" / "-os" / "-ós" / "-ös"
function p.hanyas(frame)
    local str = getArgs(frame)[1];
    
    if (nil == str) then
        return ""
    end    
    
    local number = tonumber(str)
    if (nil == number) then
        number = mw.ustring.match(str, "%d*$")
    end

    local suffixesNonRound = {
        [1] = "es",
        [2] = "es",
        [3] = "as",
        [4] = "es",
        [5] = "ös",
        [6] = "os",
        [7] = "es",
        [8] = "as",
        [9] = "es"
    }
    
    local suffixesRoundBelow100 = {
        [1] = "es",
        [2] = "as",
        [3] = "as",
        [4] = "es",
        [5] = "es",
        [6] = "as",
        [7] = "es",
        [8] = "as",
        [9] = "es"
    }

    local lastChar = mw.ustring.sub(str, -1)

    local suffixIndex = tonumber(lastChar)
    
    if (nil ~= suffixIndex) then
        if (0 ~= suffixIndex) then
            return str.."-"..suffixesNonRound[suffixIndex]
        else
            if (0 == tonumber(str) or 0 == tonumber(number)) then
                -- return the parameter value + "-s" if
                -- the parameter value is exactly 0 or
                -- a NaN ending with a number that evaluates to 0 (like "M0" or "dsdadsa000")
                return str.."-s"
            elseif (0 ~= (number % 100)/10) then
                suffixIndex = (number % 100)/10
                return str.."-"..suffixesRoundBelow100[suffixIndex]
            elseif (0 ~= (number % 1000)/100) then
                return str.."-as"
            elseif (0 == number % 10^36) then
                return str.."-s"
            elseif (0 == number % 10^33) then
                return str.."-os"
            elseif (0 == number % 10^30) then
                return str.."-s"
            elseif (0 == number % 10^27) then
                return str.."-os"
            elseif (0 == number % 10^24) then
                return str.."-s"
            elseif (0 == number % 10^21) then
                return str.."-os"
            elseif (0 == number % 10^18) then
                return str.."-s"
            elseif (0 == number % 10^15) then
                return str.."-os"
            elseif (0 == number % 10^12) then
                return str.."-s"
            elseif (0 == number % 10^9) then
                return str.."-os"
            elseif (0 == number % 10^6) then
                return str.."-s"
            elseif (0 == number % 10^3) then
                return str.."-es"
            end
        end
    end
    
    return str

end

-- returns number + "-ban" / "-ben"
function p.hanyban(frame)
    local str = getArgs(frame)[1];
    
    if (nil == str) then
        return ""
    end    
    
    local number = tonumber(str)
    if (nil == number) then
        number = mw.ustring.match(str, "%d*$")
    end

    local suffixesNonRound = {
        [1] = "ben",
        [2] = "ben",
        [3] = "ban",
        [4] = "ben",
        [5] = "ben",
        [6] = "ban",
        [7] = "ben",
        [8] = "ban",
        [9] = "ben"
    }
    
    local suffixesRoundBelow100 = {
        [1] = "ben",
        [2] = "ban",
        [3] = "ban",
        [4] = "ben",
        [5] = "ben",
        [6] = "ban",
        [7] = "ben",
        [8] = "ban",
        [9] = "ben"
    }

    local lastChar = mw.ustring.sub(str, -1)

    local suffixIndex = tonumber(lastChar)
    
    if (nil ~= suffixIndex) then
        if (0 ~= suffixIndex) then
            return str.."-"..suffixesNonRound[suffixIndex]
        else
            if (0 == tonumber(str) or 0 == tonumber(number)) then
                -- return the parameter value + "-s" if
                -- the parameter value is exactly 0 or
                -- a NaN ending with a number that evaluates to 0 (like "M0" or "dsdadsa000")
                return str.."-ban"
            elseif (0 ~= (number % 100)/10) then
                suffixIndex = (number % 100)/10
                return str.."-"..suffixesRoundBelow100[suffixIndex]
            elseif (0 ~= (number % 1000)/100) then
                return str.."-ban"
            elseif (0 == number % 10^6) then
                return str.."-ban"
            elseif (0 == number % 10^3) then
                return str.."-ben"
            end
        end
    end
    
    return str

end

-- creates a list from (any number of) unnamed arguments using separators
-- in named arguments ("elválasztó" and "utolsó" for last) or default values
-- with Scribunto function mw.text.listToText()
function p.lista(frame)
	local args = getArgs(frame)
	local list = {}
	for n, v in pairs(args) do
		if type(n) == 'number' then table.insert(list, v) end  -- insert unnamed parameters into the table
	end
	return mw.text.listToText(list, args['elválasztó'], args['utolsó'])
end

return p