Module:Dialogue: Difference between revisions

From Sekaipedia
Content added Content deleted
(Created page with "local getArgs = require('Module:Arguments').getArgs local utils = require('Module:Utilities') 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...")
 
mNo edit summary
 
(18 intermediate revisions by the same user not shown)
Line 1: Line 1:
local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
local utils = require('Module:Utilities')
local data = mw.loadData('Module:Dialogue/data')
local data = mw.loadData('Module:StoryDialogue/data')


local p = {}
local p = {}
Line 24: Line 23:
local args = getArgs(frame)
local args = getArgs(frame)
local characters = utils.split(args['character'] or '', ',')
local characters = mw.text.split(args['character'] or '', ',')
local character_color = '#868686'
local character_color = '#868686'
Line 30: Line 29:
for i,v in pairs(characters) do
for i,v in pairs(characters) do
characters[i] = utils.trim(v)
characters[i] = mw.text.trim(v)
local temp_char = string.lower(characters[i])
local temp_char = string.lower(characters[i])
character_image = character_image ..
character_image = character_image ..
string.format(
string.format(
'[[File:%s|60px|link=|%s]]',
'[[File:%s|50px|link=|%s]]',
data.images[temp_char] or 'Mobchara-circle.png',
data.images[temp_char] or 'Mobchara-circle.png',
data.characters[temp_char] or ''
data.characters[temp_char] or ''
Line 41: Line 40:
end
end
if #characters > 1 then
if #characters > 1 then
character_color = '#33ccbb'
character_color = '#868686'
end
end


local container = mw.html.create('div')
local container = mw.html.create('div')
:addClass('story-dialogue')
:addClass('dialogue')
:addClass('modern')
container
container
:tag('div')
:tag('div')
:addClass('dialogue-icon')
:wikitext(character_image)
:wikitext(character_image)
:done()
:done()
:tag('div')
:tag('div')
:addClass('dialogue-name')
:wikitext(get_name(characters, args['display name']))
:done()
:tag('div')
:addClass('dialogue-text')
:attr('data-character-color', character_color)
:tag('div')
:tag('div')
:wikitext(get_name(characters, args['display name']))
:wikitext(line_break(args['english']))
:addClass('dt-en')
:done()
:done()
:tag('div')
:tag('div')
:wikitext(line_break(args['english']))
:wikitext(line_break(args['japanese']))
:addClass('dt-jp')
:done()
:done()
:done()
:tag('div')
:tag('sd-toggle')
:done()
:done()
:done()
:done()

Latest revision as of 04:35, 17 April 2022

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

local getArgs   = require('Module:Arguments').getArgs
local data      = mw.loadData('Module:Dialogue/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 = '#868686'
	end

	local container = mw.html.create('div')
		:addClass('dialogue')
		:addClass('modern')
	
	container
		:tag('div')
			:addClass('dialogue-icon')
			:wikitext(character_image)
			:done()
		:tag('div')
			:addClass('dialogue-name')
			:wikitext(get_name(characters, args['display name']))
			:done()
		:tag('div')
			:addClass('dialogue-text')
			:attr('data-character-color', character_color)
			:tag('div')
				:wikitext(line_break(args['english']))
				:addClass('dt-en')
				:done()
			:tag('div')
				:wikitext(line_break(args['japanese']))
				:addClass('dt-jp')
				:done()
			:done()
		:done()

	return tostring(container)
end

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