模块:Quote:修订间差异
(创建页面,内容为“-- This Module is used for making templates based in the Lua language. -- See more details about Lua in w:Help:Lua. -- The Fandom Developer's Wiki hosts Global Lua Modules that can be imported and locally overridden. -- The next line imports the Quote module from the w:c:dev:Global Lua Modules. local Quote = require('Dev:Quote') -- See more details about this module at w:c:dev:Global_Lua_Modules/Quote -- The last line produces the output for the te…”) |
无编辑摘要 |
||
第1行: | 第1行: | ||
-- | -- <nowiki> | ||
-- | local Quote = {} | ||
-- | local getArgs = require('Module:Arguments').getArgs | ||
local i18n = require('Module:I18n').loadMessages('Quote') | |||
local Quote = | |||
-- | local function build(quote_contents, quote_source, options) | ||
local quote_container = mw.html.create('blockquote') | |||
:addClass('pull-quote') | |||
:addClass(options.align) | |||
:addClass(options.extraclasses) | |||
:css(options.styles) | |||
:cssText(options.extrastyles) | |||
quote_container:node(quote_contents) | |||
if quote_source then | |||
quote_container:tag('div') | |||
:addClass('pull-quote__source') | |||
:tag('cite') | |||
:wikitext(quote_source) | |||
:done() | |||
:done() | |||
end | |||
return quote_container | |||
end | |||
local function options(args) | |||
local options = {} | |||
options.styles = {} | |||
options.extraclasses = i18n:parameter('class', args) | |||
options.extrastyles = i18n:parameter('style', args) | |||
options.align = '' | |||
local align = i18n:parameter('align', args) | |||
if align then | |||
options.align = 'pull-quote--' .. align | |||
options.styles['width'] = i18n:parameter('width', args) or | |||
i18n:parameter('quotewidth', args) or | |||
'300px' | |||
end | |||
return options | |||
end | |||
function Quote.quote(frame) | |||
local args = getArgs(frame) | |||
local options = options(args) | |||
local quotetext = args[1] or | |||
i18n:parameter('quotetext', args) or | |||
i18n:parameter('quote', args) or | |||
i18n:parameter('text', args) | |||
local person = args[2] or | |||
i18n:parameter('person', args) or | |||
i18n:parameter('speaker', args) or | |||
i18n:parameter('personquoted', args) or nil | |||
local source = args[3] or | |||
i18n:parameter('source', args) or | |||
i18n:parameter('quote_source', args) or nil | |||
local quote_contents = mw.html.create('p') | |||
:addClass('pull-quote__text') | |||
:wikitext(quotetext) | |||
local quote_source = person | |||
if person and source then | |||
quote_source = person .. ', ' .. source | |||
elseif source then | |||
quote_source = source | |||
end | |||
return build(quote_contents, quote_source, options) | |||
end | |||
function Quote.dialogue(frame) | |||
local args = getArgs(frame) | |||
local options = options(args) | |||
local quote_contents = mw.html.create('div') | |||
:addClass('pull-quote__text') | |||
local quote_source | |||
for i, v in ipairs(args) do | |||
local next_param = i + 1 | |||
if i % 2 ~= 0 then | |||
quote_contents:tag('div') | |||
:addClass('pull-quote__line') | |||
:tag('strong') | |||
:addClass('pull-quote__speaker') | |||
:wikitext(v .. ':') | |||
:done() | |||
:wikitext(' ' .. args[next_param]) | |||
:done() | |||
end | |||
end | |||
local context = i18n:parameter('context', args) | |||
local source = i18n:parameter('source', args) | |||
if context and source then | |||
quote_source = context .. ', ' .. source | |||
elseif context and not source then | |||
quote_source = context | |||
elseif source and not context then | |||
quote_source = source | |||
end | |||
return build(quote_contents, quote_source, options) | |||
end | |||
return Quote | return Quote |
2024年3月22日 (五) 10:39的最新版本
This module is used by most of the basic Quote templates and is invoked by {{Quote}}.
-- <nowiki>
local Quote = {}
local getArgs = require('Module:Arguments').getArgs
local i18n = require('Module:I18n').loadMessages('Quote')
local function build(quote_contents, quote_source, options)
local quote_container = mw.html.create('blockquote')
:addClass('pull-quote')
:addClass(options.align)
:addClass(options.extraclasses)
:css(options.styles)
:cssText(options.extrastyles)
quote_container:node(quote_contents)
if quote_source then
quote_container:tag('div')
:addClass('pull-quote__source')
:tag('cite')
:wikitext(quote_source)
:done()
:done()
end
return quote_container
end
local function options(args)
local options = {}
options.styles = {}
options.extraclasses = i18n:parameter('class', args)
options.extrastyles = i18n:parameter('style', args)
options.align = ''
local align = i18n:parameter('align', args)
if align then
options.align = 'pull-quote--' .. align
options.styles['width'] = i18n:parameter('width', args) or
i18n:parameter('quotewidth', args) or
'300px'
end
return options
end
function Quote.quote(frame)
local args = getArgs(frame)
local options = options(args)
local quotetext = args[1] or
i18n:parameter('quotetext', args) or
i18n:parameter('quote', args) or
i18n:parameter('text', args)
local person = args[2] or
i18n:parameter('person', args) or
i18n:parameter('speaker', args) or
i18n:parameter('personquoted', args) or nil
local source = args[3] or
i18n:parameter('source', args) or
i18n:parameter('quote_source', args) or nil
local quote_contents = mw.html.create('p')
:addClass('pull-quote__text')
:wikitext(quotetext)
local quote_source = person
if person and source then
quote_source = person .. ', ' .. source
elseif source then
quote_source = source
end
return build(quote_contents, quote_source, options)
end
function Quote.dialogue(frame)
local args = getArgs(frame)
local options = options(args)
local quote_contents = mw.html.create('div')
:addClass('pull-quote__text')
local quote_source
for i, v in ipairs(args) do
local next_param = i + 1
if i % 2 ~= 0 then
quote_contents:tag('div')
:addClass('pull-quote__line')
:tag('strong')
:addClass('pull-quote__speaker')
:wikitext(v .. ':')
:done()
:wikitext(' ' .. args[next_param])
:done()
end
end
local context = i18n:parameter('context', args)
local source = i18n:parameter('source', args)
if context and source then
quote_source = context .. ', ' .. source
elseif context and not source then
quote_source = context
elseif source and not context then
quote_source = source
end
return build(quote_contents, quote_source, options)
end
return Quote