Jump to content

Module:Sandbox/Izno

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Izno (talk | contribs) at 05:19, 15 December 2022 (fail?). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}

function p.file() --frame
	
	local image = 'File:US 730.svg'
	local title = mw.title.new(image)
	
	local width = title.file.width
	local height = title.file.height
	
	return string.format('%s width: %d, height: %d', image, width, height)
end

function p.basic_iteration(frame)
	
	local pv = require('Module:If preview')
	local t = { 'a', 'b', 'c', 'd', }
	local t2 = { a = 'a', b = 'b', c = 'c', d = 'd' }
	local preview = ''
	for _, v in ipairs(t) do -- guarantees ordering
		preview = preview .. pv._warning({
			v
		})
	end
	for _, v in pairs(t2) do -- doesn't guarantee ordering
		preview = preview .. pv._warning({
			v
		})
	end
	
	return preview
end

local msg = mw.message.newRawMessage

function p.message(frame)
	local messages = {}
	table.insert(messages, 'This is an inserted message')
	local msg1 = msg('This is a $1 message.', 'raw')
	local msg2 = msg('This is a $1 message of $2 quality.', '[[raw]]', '{{icon|fa}}')
	local msg3 = msg('This is a $1 message of $2 quality.', '[[raw]]', '{{icon|fa}}'):plain()
	if frame.args[1] then
		table.insert(messages, frame.args[1])
	end
	
	return -- tostring(messages) .. '\n\n' .. -- this prints string 'table'
		 table.concat(messages) .. tostring(msg1) .. '\n\n' .. tostring(msg2) .. '\n\n' .. tostring(msg3)
end

function p.output()
	local obj = mw.html.create()
	obj:wikitext(p.addListStyles())
	return obj
end

function p.tostringnil()
	return tostring(nil)
end

local function has_list_class(args, htmlclass)
	local patterns = {
		'^' .. htmlclass .. '$',
		'%s' .. htmlclass .. '$',
		'^' .. htmlclass .. '%s',
		'%s' .. htmlclass .. '%s'
	}
	
	local types = {}
	local types_if = {}
	local types_if2 = {}
	
	for arg, value in pairs(args) do
		table.insert(types, table.concat({type(arg), arg, '=', value, '\n'}))
		if type(arg) == 'string' and mw.ustring.find(arg, 'class') then
			table.insert(types_if, table.concat({type(arg), arg, '=', value, '\n'}))
			for _, pattern in ipairs(patterns) do
				if mw.ustring.find(args[arg] or '', pattern) then
					table.insert(types_if2, table.concat({type(arg), arg, '=', value, '\n'}))
					return true, types_if2
				end
			end
		end
	end
	return false, types_if2
end

function p.lists(frame)
	local _, types = has_list_class(frame.args, 'plainlist')
	return table.concat(types, '\n')
end


return p