Module:Quote: Difference between revisions
Jump to navigation
Jump to search
PhantomCaleb (talk | contribs) No edit summary |
PhantomCaleb (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local utilsArg = require("Module:UtilsArg") | |||
local utilsString = require("Module:UtilsString") | |||
function p.Main(frame) | function p.Main(frame) | ||
local args, err = utilsArg.parse(frame:getParent().args, p.Templates.Quote) | |||
local categories = err and err.categoryText or "" | |||
local quote, source = args.quote, args.source | |||
local html = mw.html.create("div") | |||
if quote:find("\n") or quote:find("<br") or quote:find("<p") then | |||
html:addClass("quote quote--multiline") | |||
:tag("div") | |||
:addClass("quote__text") | |||
:wikitext(p.multiLine(quote)) | |||
else | |||
html:addClass("quote quote--singleline") | |||
:tag("div") | |||
:addClass("quote__container") | |||
:tag("div") | |||
:addClass("quote__quote-mark quote__quote-mark--open") | |||
:wikitext("“") | |||
:done() | |||
:tag("div") | |||
:addClass("quote__text") | |||
:wikitext(quote) | |||
:done() | |||
:tag("div") | |||
:addClass("quote__quote-mark quote__quote-mark--close") | |||
:wikitext("”") | |||
:done() | |||
end | |||
if utilsString.notBlank(source) then | |||
html:tag("div") | |||
:addClass("quote__source") | |||
:wikitext(" — "..source) | |||
end | |||
return tostring(html), categories | |||
end | |||
function p.multiLine(quote) | |||
quote = utilsString.trim(quote, "\n") -- trim leading and trailing lines | |||
quote = mw.getCurrentFrame():extensionTag("poem", quote) | |||
quote = '<blockquote class="quote quote--multiline">'..quote..'</blockquote>' | |||
return quote | |||
end | end | ||
Latest revision as of 14:29, 27 October 2022
This is the main module for the following templates:
local p = {}
local utilsArg = require("Module:UtilsArg")
local utilsString = require("Module:UtilsString")
function p.Main(frame)
local args, err = utilsArg.parse(frame:getParent().args, p.Templates.Quote)
local categories = err and err.categoryText or ""
local quote, source = args.quote, args.source
local html = mw.html.create("div")
if quote:find("\n") or quote:find("<br") or quote:find("<p") then
html:addClass("quote quote--multiline")
:tag("div")
:addClass("quote__text")
:wikitext(p.multiLine(quote))
else
html:addClass("quote quote--singleline")
:tag("div")
:addClass("quote__container")
:tag("div")
:addClass("quote__quote-mark quote__quote-mark--open")
:wikitext("“")
:done()
:tag("div")
:addClass("quote__text")
:wikitext(quote)
:done()
:tag("div")
:addClass("quote__quote-mark quote__quote-mark--close")
:wikitext("”")
:done()
end
if utilsString.notBlank(source) then
html:tag("div")
:addClass("quote__source")
:wikitext(" — "..source)
end
return tostring(html), categories
end
function p.multiLine(quote)
quote = utilsString.trim(quote, "\n") -- trim leading and trailing lines
quote = mw.getCurrentFrame():extensionTag("poem", quote)
quote = '<blockquote class="quote quote--multiline">'..quote..'</blockquote>'
return quote
end
p.Templates = {
Quote = {
purpose = "This template is used to display a quotation. For transcripts of in-game books, use [[Template:Transcript]] instead.",
params = {
[1] = {
name = "quote",
required = true,
type = "content",
desc = "Quotation text.",
},
[2] = {
name = "source",
required = true,
type = "content",
desc = "The source of the quote.",
},
},
},
}
return p