Modul:StringReplace

Documentation icon Moduldokumentation[vis] [redigér] [historik] [opfrisk]

{{Module rating |}}

Ambox warning orange.svg
Dette Lua-modul bliver brugt på 66.172 sider.
For at undgå store forstyrrelser og unødvendigt pres på serverne, bør alle ændringer af modulet først afprøves i dens tilhørende /sandkasse eller /test-undersider. De færdigafprøvede ændringer kan derefter overføres til denne side ved en enkelt redigering. Overvej venligst at diskutere alle ændringer på diskussionssiden før du implementerer dem.
Ambox notice.pngUtilstrækkelig vejledning
Dette modul bør have en (bedre) vejledning, helst med eksempler på anvendelse.
Hvis andre moduler er nyere og/eller bedre, bør der henvises til dem.

Usage

{{#invoke:StringReplace|function_name}}

Gnome-fs-directory.svgKategori mangler
Dette modul hører til i en eller flere kategorier. Kategoriser venligst dette modul ved at placere den sammen med lignende emner. Fjern skabelonen efter kategorisering. Bemærk, at kategorier påsat via skabeloner, samt meget generelle kategorier ikke bør betragtes som tilstrækkelige.

-- Module for different search and replace operations on strings.
local p = {}

-- Takes one string parameter, and returns the string with all characters with special meaning for Lua patterns escaped with a preceding `%`.
function p.escape_pattern(text)
    -- Replaces each occurence of any of ().%+-*?[^$ with a `%` and then the character.
    local r = string.gsub(text, "[%(%)%.%%%+%-%*%?%[%^%$]", "%%%1")
    return r
end

-- Returns the first parameter, with all occurences of the second parameter replaced with the third parameter.
-- All special characters are ignored: {{#invoke:StringReplace|replace_all|test.a%1$foo|%1|bar}} results in `test.abarfoo`.
function p.replace_all(frame)
    local str = frame.args[1]
    local strToFind = frame.args[2]
    local strToreplaceWith = frame.args[3]
    local r = string.gsub(str, p.escape_pattern(strToFind), p.escape_pattern(strToreplaceWith))
    return r
end

p['encode wiki page name'] = function( frame )
	local x = mw.ustring.gsub( 
		frame.args[1] or '', 
		'[\'"&_]', 
		{ 
			["'"] = ''', 
			['"'] = '"', 
			['&'] = '&', 
			['_'] = ' ', 
		} 
	)
	return mw.text.trim( x )
end

return p