Модуль:AIMeta

Материал из Поле цифровой дидактики

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

local p = {}

local function trim(s)
	if s == nil then
		return nil
	end
	s = mw.text.trim(tostring(s))
	if s == '' then
		return nil
	end
	return s
end

function p.render(frame)
	local parent = frame:getParent()
	local args = parent and parent.args or frame.args

	local aiSystem = trim(args['AI system used'] or args[1])
	local prompt = trim(args['AI prompt'] or args[2])

	local out = {}

	if aiSystem or prompt then
		local setParts = {}
		if aiSystem then
			table.insert(setParts, 'AI system used=' .. aiSystem)
		end
		if prompt then
			table.insert(setParts, 'AI prompt=' .. prompt)
		end
		table.insert(out, '{{#set:' .. table.concat(setParts, '|') .. '}}')
	end

	if aiSystem then
		local root = mw.html.create('div')
		root
			:css('clear', 'both')
			:css('margin-top', '1em')
			:css('padding', '0.45em 0.7em')
			:css('font-size', '0.82em')
			:css('line-height', '1.35')
			:css('color', '#777')
			:css('background', '#fafafa')
			:css('border-top', '1px solid #e8e8e8')

		root:tag('span'):wikitext('AI: [[' .. aiSystem .. ']]')
		table.insert(out, tostring(root))
	end

	return table.concat(out)
end

return p