Module:Quote

-- This module implements Template:Quote.

local p = {}

function p._main(args) -- Create the surrounding div. local root = mw.html.create('div') root :addClass('quote') -- Start a new line and add the span containing the quote. root :newline :wikitext(':') local quoteSpan = root:tag('span') if args[3] then quoteSpan:attr('title', 'Source: ' .. args[3]) end quoteSpan :wikitext(args.noquote and  or '"')		:wikitext(string.format(			"%s%s%s",			args.noquote and  or '"', args[1] or '', args.trans and  or '"'		))	-- Add the attribution.	root		:newline		:wikitext(':&#8213;')		:wikitext(args[2] or )

-- Add everything that needs to go inside a noprint span. if args.audio or args.url or args[3] then local noprintSpan = root:tag('span'):addClass('noprint')

-- Audio link if args.audio then noprintSpan :wikitext(' &mdash; ') :wikitext(string.format( '[[Media:%s|Listen]] (file info) ', args.audio, args.audio ))		end

-- Source link if args.url or args[3] then local sourceSup = noprintSpan:tag('sup') local display = mw.text.nowiki('[src]') if args.url then sourceSup :addClass('plainlinks') :wikitext(string.format('[%s %s]', args.url, display)) else -- We have already checked that args[3] is present. sourceSup:wikitext(string.format('%s', args[3], display)) end end end

-- Add the tracking category. if not args.url and not args[3] then -- The category link is split up so that this page isn't categorised. root:wikitext('' .. 'Category:Unsourced quotes') end

return tostring(root) end

function p.main(frame) local args = {} for k, v in pairs(frame:getParent.args) do		v = v:match('^%s*(.-)%s*$') -- trim whitespace if v ~= '' then args[k] = v		end end return p._main(args) end

return p