Anonymous
×
Create a new article
Write your page title here:
We currently have 452 articles on Gachimuchi Wiki. Type your article name above or click on one of the titles below and start writing!



Gachimuchi Wiki

Documentation for this module may be created at Module:Quote/doc

-- <nowiki>
local Quote = {}
local getArgs = require('Module:Arguments').getArgs
local i18n = require('Module:I18n').loadMessages('Quote')

local function build(quotecontents, quotesource, options)
    local quotecontainer = mw.html.create('blockquote')
        :addClass('pull-quote')
        :addClass(options.align)
        :addClass(options.extraclasses)
        :css(options.styles)
        :cssText(options.extrastyles)
        
    quotecontainer:node(quotecontents)
        
    if quotesource then
	    quotecontainer:tag('div')
	    	:tag('cite')
	        	:addClass('pull-quote__source')
	        	:wikitext(quotesource)
	        	:done()
        	:done()
    end
    
    return quotecontainer
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('quotesource', args) or nil
    
    local quotecontents = mw.html.create('p')
        :addClass('pull-quote__text')
        :wikitext(quotetext)
    
    local quotesource = person
    
    if person and source then
        quotesource = person .. ', ' .. source
    elseif source then
    	quotesource = source
    end
    
    return build(quotecontents, quotesource, options)
end

function Quote.dialogue(frame)
    local args = getArgs(frame)
    
    local options = options(args)
    
    local quotecontents = mw.html.create('div')
        :addClass('pull-quote__text')
        
    local quotesource

    for i, v in ipairs(args) do
        local next_param = i + 1
        
        if i % 2 ~= 0 then
            quotecontents: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
        quotesource = context .. ', ' .. source
    elseif context and not source then
        quotesource = context
    elseif source and not context then
        quotesource = source
    end
    
    return build(quotecontents, quotesource, options)
    
end

return Quote
Cookies help us deliver our services. By using our services, you agree to our use of cookies.