Content added Content deleted
mNo edit summary |
mNo edit summary |
||
Line 48: | Line 48: | ||
['display'] = 'grid', |
['display'] = 'grid', |
||
['grid-template-columns'] = '125px 1fr 50px', |
['grid-template-columns'] = '125px 1fr 50px', |
||
['grid-template-areas'] = '"icon name toggle"\n"icon dialogue toggle"', |
|||
['grid-gap'] = '0 10px', |
['grid-gap'] = '0 10px', |
||
['width'] = '50em', |
['width'] = '50em', |
||
Line 58: | Line 59: | ||
container |
container |
||
:tag('div') |
:tag('div') |
||
:css({ |
|||
['grid-area'] = 'icon' |
|||
}) |
|||
:wikitext(character_image) |
:wikitext(character_image) |
||
:done() |
:done() |
||
:tag('div') |
:tag('div') |
||
:css({ |
|||
['grid-area'] = 'name' |
|||
}) |
|||
:wikitext(get_name(characters, args['display name'])) |
:wikitext(get_name(characters, args['display name'])) |
||
:done() |
:done() |
||
:tag('div') |
:tag('div') |
||
:css({ |
|||
['grid-area'] = 'dialogue' |
|||
}) |
|||
:css({ |
:css({ |
||
['border'] = '1px solid #2FD9E3' |
['border'] = '1px solid #2FD9E3' |
||
Line 77: | Line 87: | ||
:done() |
:done() |
||
:tag('div') |
:tag('div') |
||
:css({ |
|||
['grid-area'] = 'toggle' |
|||
}) |
|||
:addClass('sd-toggle') |
:addClass('sd-toggle') |
||
:done() |
:done() |
Revision as of 06:57, 11 December 2021
Documentation for this module may be created at Module:Dialogue/doc
local getArgs = require('Module:Arguments').getArgs
local data = mw.loadData('Module:StoryDialogue/data')
local p = {}
local function get_name(characters, name)
if name and name ~= '' then
return name
end
return mw.text.listToText(characters, ', ', ' & ')
end
local function line_break(line)
if line and line ~= '' then
return table.concat(mw.text.split(line, "\n"), "<br>")
end
return line
end
function p.main(frame)
local args = getArgs(frame)
local characters = mw.text.split(args['character'] or '', ',')
local character_color = '#868686'
local character_image = ''
for i,v in pairs(characters) do
characters[i] = mw.text.trim(v)
local temp_char = string.lower(characters[i])
character_image = character_image ..
string.format(
'[[File:%s|50px|link=|%s]]',
data.images[temp_char] or 'Mobchara-circle.png',
data.characters[temp_char] or ''
)
character_color = data.colors[temp_char] or '#868686'
end
if #characters > 1 then
character_color = '#33ccbb'
end
local container = mw.html.create('div')
:addClass('story-dialogue')
:css({
['display'] = 'grid',
['grid-template-columns'] = '125px 1fr 50px',
['grid-template-areas'] = '"icon name toggle"\n"icon dialogue toggle"',
['grid-gap'] = '0 10px',
['width'] = '50em',
['max-width'] = '100%',
['height'] = '6em',
['align-content'] = 'center',
['margin'] = '1em 0'
})
container
:tag('div')
:css({
['grid-area'] = 'icon'
})
:wikitext(character_image)
:done()
:tag('div')
:css({
['grid-area'] = 'name'
})
:wikitext(get_name(characters, args['display name']))
:done()
:tag('div')
:css({
['grid-area'] = 'dialogue'
})
:css({
['border'] = '1px solid #2FD9E3'
})
:tag('div')
:wikitext(line_break(args['english']))
:addClass('sd-en')
:done()
:tag('div')
:wikitext(line_break(args['japanese']))
:addClass('sd-jp')
:done()
:done()
:tag('div')
:css({
['grid-area'] = 'toggle'
})
:addClass('sd-toggle')
:done()
:done()
return tostring(container)
end
return p