模块:Xpd:修订间差异
来自SINO 云课堂
小 (导入1个版本) |
(没有差异)
|
2018年5月5日 (六) 02:24的最新版本
可在模块:Xpd/doc创建此模块的帮助文档
-- 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