模块:Pbox

来自柯南百科

YohoYang讨论 | 贡献2020年6月14日 (日) 20:11的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

此模块的文档可以在模块:Pbox/doc创建

local p = {}

local getArgs = require('Module:Arguments').getArgs

function p._quote(text, lang)
    if lang == '' then
        return text
    end
	if lang == 'zh' then
		return text
	else
		return '-{' .. text .. '}-'
	end
end

function p._pbox(args)
	local ltext = mw.text.split((args.ltext or ''):match('^(.-)%s*$'), '\n')
	local rtext = mw.text.split((args.rtext or ''):match('^(.-)%s*$'), '\n')
	local llang = args.llang or ''
	local rlang = args.rlang or ''
	local lstyle = args.lstyle or ''
    local rstyle = args.rstyle or ''
    
    if llang == 'jp' then
        llang = 'ja'
    end
    if rlang == 'jp' then
        rlang = 'ja'
    end

	local html = mw.html.create('div')
					:addClass('cp-pbox')
					:cssText('width:'..(args.width or '80%'))
					:cssText(args.pboxstyle or '')

	local len = math.max(#ltext, #rtext)

	for i=1,len do
		html
			:tag('div')
			:addClass('cp-pbox-line')
			:addClass('row')
				:tag('div')
					:addClass('cp-pbox-ltext')
					:addClass('col-md-6')
					:cssText(lstyle)
					:node(
                        mw.html.create('span')
                        :attr('lang', llang)
                        :wikitext(p._quote(ltext[i] or '', llang))
                    )
					:done()
				:tag('div')
                    :addClass('cp-pbox-rtext')
                    :addClass('col-md-6')
					:cssText(rstyle)
					:node(
                        mw.html.create('span')
                        :attr('lang', rlang)
                        :wikitext(p._quote(rtext[i] or '', rlang))
                    )
					:done()
	end

	return tostring(html)
end

function p.pbox(frame)
	local args = getArgs(frame, {wrappers='Template:Pbox'})
	return p._pbox(args)
end

return p