Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
You must create an account or log in to edit.
Revision as of 18:22, January 13, 2025 by Tesinormed (talk | contribs)

This module is used for Template:Hatnote. See the template's page for more information.


local getArgs = require('Module:Arguments').getArgs
local yesno = require('Module:Yesno')
local p = {}

function p.main(frame)
	local args = getArgs(frame)
	local wrapper = mw.html.create('div')
		:attr('class', 'noexcerpt')
		:attr('role', 'note')

	-- input validation
	if not args['file1'] and args['file2'] then
		error('file2 is specified while file1 is not specified')
	end

	-- set the color so the look stays consistent even outside of the scope
	if args['color'] then
		wrapper:css('--color-amaranth-legacy-scope', args['color'])
		if yesno(args['color_applies_to_links'] or true) then
			wrapper:css('--color-link', args['color'])
		end
	end

	-- top <hr>
	if not yesno(args['remove_hr'] or false) and not yesno(args['remove_hr_top'] or false) then
		wrapper:wikitext('<hr>')
	end

	-- content wrapper
	local content = wrapper:tag('div')
	if args['file1'] and args['file2'] then
		content:attr('class', 'hatnote2')
	elseif args['file1'] then
		content:attr('class', 'hatnote1')
	else
		content:attr('class', 'hatnote0')
	end

	-- left file
	if args['file1'] then
		content:tag('div'):wikitext('[['
			.. 'File:' .. args['file1']
			.. '|' .. (args['file_size'] or '80px')
			.. '|class=notpageimage'
			.. '|link='
			.. '|alt='
		.. ']]')
	end

	

	-- right file
	if args['file2'] then
		content:tag('div'):wikitext('[['
			.. 'File:' .. args['file2']
			.. '|' .. (args['file_size'] or '80px')
			.. '|class=notpageimage'
			.. '|link='
			.. '|alt='
		.. ']]')
	end

	-- bottom <hr>
	if not yesno(args['remove_hr'] or false) and not yesno(args['remove_hr_bottom'] or false) then
		wrapper:wikitext('<hr>')
	end

	return tostring(wrapper)
end

return p