Modul:ugly hacks

Üdvözlöm, Ön a Modul:ugly hacks szó jelentését keresi. A DICTIOUS-ban nem csak a Modul:ugly hacks szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a Modul:ugly hacks szót egyes és többes számban mondani. Minden, amit a Modul:ugly hacks szóról tudni kell, itt található. A Modul:ugly hacks szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. AModul:ugly hacks és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

This module provides templates with functions which cannot be accessed any other way. When a function is not used, it should be removed.

Avoid using this module. If you find yourself writing a template which needs it, consider re-writing the template in Lua.

This module tracks templates in which its functions are used, using the tracking template mechanism; the tracking templates' names are of the form Template:tracking/ugly hacks/function_name and Template:tracking/ugly hacks/function_name/from template_name. To prevent it from becoming ineffective, wrappers around functions in this module should not be created; the {{#invoke:}} should be put directly where it is needed.

To further discourage their use, functions in this module are intentionally undocumented. To discover their usage purpose and syntax, please refer to mw:Extension:Scribunto/Lua reference manual.

Questions about this module and its possible replacements may be raised at Wiktionary:Grease pit.


local export = {}

function export.explode(frame)
	local wanted_index = tonumber(frame.args)
 
	local count = 1
	for item in mw.text.gsplit(frame.args, frame.args, true) do
		if count == wanted_index then
			return item
		end
		count = count + 1	
	end
	
	return ""
end

function export.substr(frame)
	return mw.ustring.sub(frame.args or "", tonumber(frame.args) or 1, tonumber(frame.args) or -1)
end

function export.find(frame)
	return mw.ustring.find(frame.args or "", frame.args or "", 1, true) or ""
end

function export.find_pattern(frame)
	return mw.ustring.find(frame.args or "", frame.args or "", 1, false) or ""
end

function export.replace(frame)
	return (mw.ustring.gsub(frame.args or "", frame.args or "", frame.args or ""))
end

function export.match(frame)
	return (mw.ustring.match(frame.args or "", frame.args or ""))
end

function export.escape_wiki(frame)
	return mw.text.nowiki(frame.args or "")
end

function export.escape_html(frame)
	return mw.text.encode(frame.args or "")
end

function export.zeropad(frame)
	if #frame.args >= tonumber(frame.args) then
		return frame.args	
	else
		return mw.ustring.sub(string.rep("0", frame.args) .. (frame.args or ""), -frame.args)
	end
end

function export.is_valid_page_name(frame)
	local res = mw.title.new(frame.args)
	if res then
		return "valid"
	else
		return ""
	end
end

return setmetatable({ }, {
	__index = function(self, key)
		local m_debug = require('Module:debug')
		local frame = mw.getCurrentFrame()
		local pframe = frame:getParent()
		local tname = pframe and pframe:getTitle()

		m_debug.track('ugly hacks/' .. key)
		if pframe then
			m_debug.track('ugly hacks/' .. key .. '/from ' .. tname)
		else
			mw.log(debug.traceback('ugly hacks: parent frame not available'))
		end
		return export	
	end
})