Module:Xpd: Difference between revisions
Jump to navigation
Jump to search
MediaWiki>Lilyuserin m (Undo revision 2768909 by Lilyuserin (talk)) |
m (1 revision imported) |
Latest revision as of 00:18, 10 April 2020
-- Expansion demo, like [[Template:Xpd]]
local p = {}
function p.f(frame, showwikitext, sep)
local pframe, w = frame:getParent(), { '{{' }
for n,v in pairs( pframe.args ) do
if type(n) == "string" then
table.insert( w, table.concat({ '|', p.unexpand(n), '=', p.unexpand(v) }) )
elseif n ~= 1 then
table.insert( w, table.concat({ '|', p.unexpand(v) }) )
else
table.insert( w, 2, v )
end
end
table.insert( w, '}}' )
w = table.concat( w )
local xpw = frame:preprocess( w )
w = table.concat({ '<code>', p.swt(w), '</code> → ' })
if showwikitext then
w = table.concat({ w, sep, '<code>', p.swt( xpw ), '</code> → ' })
end
w = table.concat( { w, xpw }, sep )
return w
end
function p.s(frame) return p.f(frame, false, '') end
function p.p(frame) return p.f(frame, false, '\n\n') end
function p.ws(frame) return p.f(frame, true, '') end
function p.wp(frame) return p.f(frame, true, '\n\n') end
function p.unexpand(w)
local w1 = string.gsub( w, '[{}|=]', {
['{'] = '{{(}}',
['}'] = '{{)}}',
['|'] = '{{!}}',
['='] = '{{=}}',
}):gsub( 'lbrace', '{{(}}' ):gsub( 'rbrace', '{{)}}' )
return w1
end
function p.swt(w)
local w1 = string.gsub( w, '[&<>%[%] \n\']', {
['&'] = '&',
['<'] = '<',
['>'] = '>',
['['] = '[',
[']'] = ']',
["'"] = ''',
[' '] = ' ',
['\n'] = '<br/>',
})
return w1
end
function p.plain(frame, sep)
local w = frame:getParent().args[1]
return table.concat({ '<code>', p.swt( p.unexpand( w ) ), '</code> → ', sep, w })
end
function p.plains(frame) return p.plain(frame, '') end
function p.plainp(frame) return p.plain(frame, '\n\n') end
return p