Modulo:Denggen

Manipud iti Wikipedia, ti nawaya nga ensiklopedia
Darsen a mapan iti pagdaliasatan Darsen a mapan agbiruk
Dokumentasion ti modulo[kitaen] [urnosen] [pakasaritaan] [purgaen]

Daytoy a modulo ket isayangkat ti plantilia ti {{denggen}} .

Panagusar manipud ti wikitext[urnosen ti taudan]

Daytoy a modulo ket saan a mabalin a dagus a mausar manipud ti wikitext. Daytoy ket mabalin laeng a mausar babaen ti plantilia ti {{denggen}} . Pangngaasi a kitaen ti panid ti plantilia para iti dokumentasion.

Panagusar manipud kadagiti modulo ti Lua[urnosen ti taudan]

Ti panagusar daytoy a modulo manipud kadagiti modulo ti Lua, umuna nga ikarga ti modulo.

local mListen = require('Modulo:Denggen')

Mabalin ti agipataud ti igid a kahon babaen ti panagusar ti annong ti _main.

mListen._main(args)

Ti karuay ti args ket nasken a tabla nga aglaon kadagiti argumento a maipasa iti modulo. Tapno makita dagiti nadumaduma nga argumento a mabalin a mainaganan ken no kasano a mabanagan ti iparuar ti modulo, pangngaasi a kitaen ti dokumentasion ti plantilia ti {{denggen}} .

-- Daytoy a modulo ket isayangkatna ti {{dengngen}}.

local mFileLink = require('Modulo:Silpo ti papeles')
local mTableTools = require('Modulo:Ramramit ti tabla')
local mSideBox = require('Modulo:Igid a kahon')

local p = {}

function p.main(frame)
	local origArgs = frame:getParent().args
	local args = {}
	for k, v in pairs(origArgs) do
		v = v:match('^%s*(.-)%s*$')
		if v ~= '' then
			args[k] = v
		end
	end
	-- Exit early if filename (required) is not provided.
	if not args.filename then
		return nil
	end
	return p._main(args)
end

function p._main(args)
	-- Organise the arguments by number.
	local numArgs = {}
	do
		local origNumArgs = mTableTools.numData(args)
		origNumArgs[1] = origNumArgs.other -- Overwrite args.filename1 etc. with args.filename etc.
		origNumArgs = mTableTools.compressSparseArray(origNumArgs)
		for i, t in ipairs(origNumArgs) do
			if t.filename then
				numArgs[#numArgs + 1] = t
			end
		end
	end

	-- Find whether we are outputting a plain or an embedded box.
	local isPlain = args.plain == 'yes'
	local isEmbedded = args.embed and true or false

	-- Build the arguments for {{side box}}
	local sbargs = {}
	sbargs.metadata = 'no'
	sbargs.position = args.pos

	-- Style arguments
	do
		local style = {}
		if isPlain then
			style[#style + 1] = 'border:none'
			style[#style + 1] = 'background:transparent'
			style[#style + 1] = 'float:none'
		end
		if isEmbedded then
			style[#style + 1] = 'border-collapse:collapse'
			style[#style + 1] = 'border-width:1px 0 0 0'
			style[#style + 1] = 'background:transparent'
			style[#style + 1] = 'float:none'
			style[#style + 1] = 'margin:0 -5px'
		end
		if args.pos == 'left' then
			style[#style + 1] = 'float:left'
		elseif args.pos == 'center' then
			style[#style + 1] = 'float:none'
			style[#style + 1] = 'margin-left:auto'
			style[#style + 1] = 'margin-right:auto'
		end
		
		style[#style + 1] = args.style
		sbargs.style = table.concat(style, '; ')
	end
	sbargs.textstyle = 'line-height:1.1em'

	-- Image
	if not isPlain and not isEmbedded then
		if args.image then
			sbargs.image = args.image
		else
			local images = {
				speech = 'Audio-input-microphone.svg',
				music = 'Gnome-mime-audio-openclipart.svg'
			}
			local image = args.type
				and images[args.type]
				or 'Gnome-mime-sound-openclipart.svg'
			sbargs.image = mFileLink._main{
				file = image,
				size = '65x50px',
				location = 'center',
				link = '',
				alt = ''
			}
		end
	end

	-- Text
	do
		local header
		if args.header then
			header = mw.html.create('div')
			header
				:css{
					background = 'transparent',
					['text-align'] = 'left',
					padding = args.embed and '2px 0' or '2px'
				}
				:wikitext(args.header)
			header = tostring(header)
			header = header .. '\n'
		else
			header = ''
		end
		local text = {}
		for i, t in ipairs(numArgs) do
			text[#text + 1] = p.renderRow(t.filename, t.title, t.play, t.alt, t.description)
			if numArgs[i + 1] then
				text[#text + 1] = '<hr />'
			end
		end
		sbargs.text = header .. table.concat(text)
	end

	-- Below
	if not isPlain and not isEmbedded and args.help ~= 'no' then
		sbargs.below = string.format(
			"<hr /><span>''Adda kadi dagiti problema ti panagtokar %s? Kitaen ti [[Wikipedia:Tulong para iti midia|tulong para iti midia]].''</span>",
			#numArgs > 1 and 'kadagitoy a papeles' or 'iti daytoy a papeles'
		)
	end

	-- Render the side box.
	local sideBox = mSideBox._main(sbargs)

	-- Render the tracking categories.
	local trackingCategories = p.renderTrackingCategories(args, numArgs)

	return sideBox .. trackingCategories
end

function p.renderRow(filename, title, play, alt, description)
	-- Renders the HTML for one file description row.
	if not filename then
		return nil
	end
	local root = mw.html.create('')
	root
		:tag('div')
			:addClass('haudio')
			:newline()
			:tag('div')
				:css('padding', '4px 0')
				:wikitext(string.format('[[:File:%s|%s]]', filename, title or ''))
				:done()
			:newline()
			:tag('div')
				:wikitext(
					play ~= 'no'
						and mFileLink._main{
							file = filename,
							size = '220px',
							alt = alt
						}
						or nil
				)
				:done()
			:newline()
			:tag('div')
				:css('padding', '2px 0 0 0')
				:addClass('description')
				:wikitext(description)
				:done()
			:done()
	return tostring(root)
end

function p.renderTrackingCategories(args, numArgs, titleObj)
	-- Renders all tracking categories produced by the template.
	-- args and numArgs are passed through from p._main,
	-- and the titleObj is only used for testing purposes.
	local cats = {}

	local currentTitle = titleObj or mw.title.getCurrentTitle()
	if currentTitle.namespace == 0 then
		-- We are in mainspace.
		cats[#cats + 1] = 'Dagiti artikulo nga adda dagiti mikropormat nga hAudio'

		for i, t in ipairs(numArgs) do
			local success, title = pcall(mw.title.new, 'Media:' .. t.filename)
			if success and title and not title.exists then
				cats[#cats + 1] = 'Dagiti artikulo nga awan linaon ti plantilia dengngen'
				break
			end
		end
	end

	if args.plain == 'yes' then
		cats[#cats + 1] = 'Plantilia ti panagdengngeg nga agus-usar ti naranas a parametro'
	end

	for i, cat in ipairs(cats) do
		cats[i] = string.format('[[Kategoria:%s]]', cat)
	end
	return table.concat(cats)
end

return p