https://nordiclarp.org/w/index.php?title=Module:Escape&feed=atom&action=history
Module:Escape - Revision history
2024-03-28T22:36:52Z
Revision history for this page on the wiki
MediaWiki 1.34.2
https://nordiclarp.org/w/index.php?title=Module:Escape&diff=8294&oldid=prev
Johannes Axner: 1 revision imported
2018-12-29T14:01:54Z
<p>1 revision imported</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #222; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #222; text-align: center;">Revision as of 14:01, 29 December 2018</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
Johannes Axner
https://nordiclarp.org/w/index.php?title=Module:Escape&diff=8293&oldid=prev
en>MusikAnimal: Protected "Module:Escape": High-risk Lua module; 1,000+ transclusions ([Edit=Require autoconfirmed or confirmed access] (indefinite))
2017-10-10T17:47:28Z
<p>Protected "<a href="/wiki/Module:Escape" title="Module:Escape">Module:Escape</a>": <a href="/w/index.php?title=WP:High-risk_templates&action=edit&redlink=1" class="new" title="WP:High-risk templates (page does not exist)">High-risk Lua module</a>; 1,000+ transclusions ([Edit=Require autoconfirmed or confirmed access] (indefinite))</p>
<p><b>New page</b></p><div>local escape = {<br />
char = function(self, chr, args)<br />
args = args or {}<br />
local safe = args.safeChr or string.char(13)<br />
chr = tostring(chr or '\\')<br />
self[1] = ('%s0%%s%s'):format(<br />
('%x%s%s'):format(chr:byte(), safe, safe),<br />
('%s%x'):format(safe, chr:byte())<br />
)<br />
if not self[self[1]] then<br />
self[self[1]] = {<br />
char = chr,<br />
text = ('%s(.)'):format(chr),<br />
undo = self[1]:format'(%d+)'<br />
}<br />
end<br />
return args.text and self:text(args.text)<br />
or args.undo and self:undo(args.undo, chr)<br />
or args.kill and self:kill(args.kill)<br />
or self<br />
end,<br />
exec = function(self, text, mode, newEscape)<br />
local target = self[self[1] or self:char() and self[1]]<br />
for v in text:gfind(target[mode]) do<br />
text = text:gsub(<br />
mode == 'text' and<br />
('%s%s'):format(target.char, v:gsub('%W', '%%%1'))<br />
or self[1]:format(v),<br />
mode == 'text' and<br />
self[1]:format(v:byte())<br />
or (newEscape or '') .. v:char()<br />
)<br />
end<br />
return text<br />
end,<br />
text = function(self, text)<br />
return self:exec(type(text) == 'table' and text[1] or text, 'text')<br />
end,<br />
undo = function(self, text, newEscape)<br />
if type(text) == 'table' then<br />
text, newEscape = unpack(text)<br />
end<br />
return self:exec(text, 'undo', newEscape)<br />
end,<br />
kill = function(self, text, chars, newEscape)<br />
if type(text) == 'table' then<br />
text, chars, newEscape = unpack(text)<br />
end<br />
return self:undo(self:text(text):gsub(chars or '', ''), newEscape)<br />
end<br />
}<br />
<br />
function escape.main(frame)<br />
local args, family = {}, {frame:getParent(), frame}<br />
for f = 1, 2 do<br />
for k, v in pairs(family[f] and family[f].args or {}) do<br />
args[k] = args[k] or v:match('^%s*(.-)%s*$')<br />
end<br />
end<br />
if args.mode == 'char' then<br />
return escape:char(args.char or args[2], args)<br />
end<br />
return escape[args.mode](escape:char(args.char), args)<br />
end<br />
<br />
return escape</div>
en>MusikAnimal