(Новая страница: «-- <nowiki> --- Реализует Шаблон:Звук. local p = {} local h = {} local html = require("Модуль:HTMLUtils") --- Вставляет зву...») |
Нет описания правки |
||
Строка 35: | Строка 35: | ||
local sounds = { h.makeSound(pargs[2], sound_title, fallback_first) } |
local sounds = { h.makeSound(pargs[2], sound_title, fallback_first) } |
||
− | for sound_no = 3, |
+ | 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) |
sounds[sound_no - 1] = h.makeSound(pargs[sound_no], "", fallback_remaining) |
||
end |
end |
Версия от 14:52, 30 июня 2020
-- <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("Module:ProcessArgs").merge(true)
return p.makeSounds(args)
end
return p
-- </nowiki>