Модуль:Tools

Материал из Указатель частей и соединений РККА 1941-1945
Перейти к:навигация, поиск

Для документации этого модуля может быть создана страница Модуль:Tools/doc

local tools = {}
local global = mw.ext.luaglobal

---------------------------------------------------------------------- |checkargs|
function tools.checkargs( args, names, numbers )
    local res = {}
    local hasArg
    for k, v in pairs( args ) do
        hasArg = true
        v = mw.text.trim(v)
		local dsc
		if numbers and type( k ) == 'number' then
			dsc = numbers
		else
			dsc = names[k]
		end
        if dsc == nil then
--            return nil, k
			error( 'Недопустимый аргумент «' .. k .. '»' )
        elseif v == '' then
            if dsc ~= true then
                res[k] = dsc
            end
        else
            res[k] = v
        end
    end
    for k, v in pairs( names ) do
        if not res[k] then
            if v ~= true then
                res[k] = v
            end
        end
    end
    return res, hasArg
end

function tools.Log( frame )
	local args = tools.checkargs( frame:getParent().args, {}, true )
	return tools.log( args )
end

function tools.dmy( str )
	if #str == 10 then
		return string.sub( str, 9, 10 ) .. '.' .. string.sub( str, 6, 7 ) .. '.' .. string.sub( str, 1, 4 )
	elseif #str == 7 then
		return string.sub( str, 6, 7 ) .. '.' .. string.sub( str, 1, 4 )
	else
		return str
	end
end

function tools.ymd( str )
	return string.sub( str, 7, 10 ) .. '-' .. string.sub( str, 4, 5 ) .. '-' .. string.sub( str, 1, 2 )
end

function tools.log( args )
	for _, v in ipairs( args ) do
		global.add( 'szrLog', v )
	end
end

function tools.PrintLog( frame )
	local log = global.get( 'szrLog' )
	global.set( 'szrLog', nil )
	return '<br>LOG (((((( <br>' .. table.concat( log, '<br>' ) .. '<br>LOG )))))) <br>'
end

return tools