Модуль:Звук

Материал из SteamWorld Wiki
Перейти к навигации Перейти к поиску

Для документации этого модуля может быть создана страница Модуль:Звук/doc

-- <nowiki>
--- Реализует Шаблон:Звук.
local p = {}
local h = {}

local html = require("Модуль:HTMLUtils")

--- Вставляет звук.
--
--  • строка file: название звукового файла.
--  • строка title: отображаемое название файла.
--  • булево значение fallback: скрывать ли резервный плеер.
--
--  Возвращает строку с элементом звука.
function h.makeSound(file, title, fallback)
	local soundWrap = html.make_node("span .sound")
		:sel_node("span .sound-title", title)

	local fileText = ("[[Файл:%s|class=sound-audio]]"):format(file)
	local fileNode = html.make_node("span", fileText)
	if not fallback then
		fileNode:cssText("display: none")
	end
	
	soundWrap:node(fileNode)
	
	return tostring(soundWrap)
end

--- Основная функция для создания звуков.
function p.makeSounds(pargs)
	local fallback_first = not pargs.nofallback
	local fallback_remaining = pargs.fallback_all
	local sound_title = pargs[1] or ''
	
	local sounds = { h.makeSound(pargs[2], sound_title, fallback_first) }
	for sound_no = 3, table.maxn(pargs) do
		if not pargs[sound_no] then
			break -- неуказанное поведение #pargs, когда pargs[1] равен nil
		end
		
		sounds[sound_no - 1] = h.makeSound(pargs[sound_no], "", fallback_remaining)
	end
	
	return table.concat(sounds)
end

--- Точка входа для шаблона. См. документацию для сведений о вызове.
function p.sound(f)
	local args = require("Модуль:ProcessArgs").merge(true)
		
	return p.makeSounds(args)
end

return p
-- </nowiki>