Модуль:String/strip

Википедия деп сайттан

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

local str = {}

function str.strip( frame )
	local ret = ''
    local s = frame.args[1] or '';
    
    if s == '' then
		return
	end
	
    local o = frame.args['o'] or '%';
    local l = frame.args['l'] or '';
    local t = frame.args['t'] or '';
    local r = frame.args['r'] or '';
    local m = tonumber(frame.args['m']) or 1000;
    local n = frame.args['nodis'] or '0';
	
    if l ~= '' then
    	ret = '<ul>'
    	o = '<li>' .. o .. r .. '</li>'
    else
    	o = o .. r
    end
    
    local i = 0
    local iterator = mw.ustring.gmatch(s, "[^/]+");
    for w in iterator do
    	if t ~= '' then
    		local args = {}
    		args[1] = w
    		ret = ret .. mw.ustring.gsub( o, '%%', frame:expandTemplate{ title = t, args = args } )
    	else
	    	if n == '1' then
	    		w = w .. '|' .. mw.ustring.gsub( w, '%s?%(.*%)$', '' )
			end
	    	w = mw.ustring.gsub( o, '%%', w )
	    	ret = ret .. w
    	end
    	
    	i = i + 1
    	if i == m then
    		break
    	end
    end 
    
    if l ~= '' then
    	ret = mw.ustring.gsub( ret, r .. '</li>$', '</li>' )
    	ret = ret .. '</ul>'
    else
    	ret = mw.ustring.gsub( ret, r .. '$', '' )
    end
    
    return ret
end

function str.lang( frame )
    local s = frame.args[1] or '';
    
    if s == '' then
		return
	end
	
	local listLang = require('Module:Languages').list
    
    local i = 1
    local args = {}
    local iterator = mw.ustring.gmatch(s, "[^/]+");
    for w in iterator do
    	args[i] = w
    	i = i + 1
    end
    
    if i == 2 then
    	return
    end
    
    frame.args = args
    
    return listLang(frame)
end

return str