<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://wikisp.org/wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3ACardLua</id>
	<title>Módulo:CardLua - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://wikisp.org/wiki/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3ACardLua"/>
	<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:CardLua&amp;action=history"/>
	<updated>2026-09-14T05:21:53Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:CardLua&amp;diff=8137&amp;oldid=prev</id>
		<title>Luxbane: Página creada con «require(&#039;strict&#039;)  --- @module CardLua --- A reusable card primitive: a bordered, surface-coloured, rounded container --- with a shared header row (title + description on the left, an optional --- trailing element on the right) and an optional always-visible footer. --- --- Specialized cards compose this: ---  * Module:CollapsibleCard wraps a &lt;details&gt; body as the card `content` and ---    supplies a chevron as the header trailing element. ---  * `renderLinkCard` is a…»</title>
		<link rel="alternate" type="text/html" href="https://wikisp.org/wiki/index.php?title=M%C3%B3dulo:CardLua&amp;diff=8137&amp;oldid=prev"/>
		<updated>2026-09-11T23:24:50Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «require(&amp;#039;strict&amp;#039;)  --- @module CardLua --- A reusable card primitive: a bordered, surface-coloured, rounded container --- with a shared header row (title + description on the left, an optional --- trailing element on the right) and an optional always-visible footer. --- --- Specialized cards compose this: ---  * Module:CollapsibleCard wraps a &amp;lt;details&amp;gt; body as the card `content` and ---    supplies a chevron as the header trailing element. ---  * `renderLinkCard` is a…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
--- @module CardLua&lt;br /&gt;
--- A reusable card primitive: a bordered, surface-coloured, rounded container&lt;br /&gt;
--- with a shared header row (title + description on the left, an optional&lt;br /&gt;
--- trailing element on the right) and an optional always-visible footer.&lt;br /&gt;
---&lt;br /&gt;
--- Specialized cards compose this:&lt;br /&gt;
---  * Module:CollapsibleCard wraps a &amp;lt;details&amp;gt; body as the card `content` and&lt;br /&gt;
---    supplies a chevron as the header trailing element.&lt;br /&gt;
---  * `renderLinkCard` is a built-in specialization: a static card whose&lt;br /&gt;
---    trailing element is a Module:ButtonLua button (e.g. &amp;quot;view on external&lt;br /&gt;
---    source&amp;quot;) — for summaries that link out rather than expand in place.&lt;br /&gt;
---  * `renderMediaCard` is a built-in specialization for cards that lead with a&lt;br /&gt;
---    picture. It owns only the art — that it bleeds to the card&amp;#039;s inner edge&lt;br /&gt;
---    without any negative margins, because `.t-card` carries no padding of its&lt;br /&gt;
---    own and the shell&amp;#039;s `overflow: clip` trims the picture to the inside of&lt;br /&gt;
---    the border — and hands everything else to a content slot, with&lt;br /&gt;
---    `renderMediaBody` as the helper for the usual text block.&lt;br /&gt;
&lt;br /&gt;
local button = require(&amp;#039;Module:ButtonLua&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--- Builds the inner title/description block (no wrapper header row). Exposed so&lt;br /&gt;
--- interactive consumers (CollapsibleCard&amp;#039;s &amp;lt;summary&amp;gt;) can place it inside their&lt;br /&gt;
--- own header element alongside a trailing control.&lt;br /&gt;
---&lt;br /&gt;
--- @param title string&lt;br /&gt;
--- @param description string|nil&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.renderHeaderContent(title, description)&lt;br /&gt;
	local root = mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__header-content&amp;#039;)&lt;br /&gt;
	root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__title&amp;#039;):wikitext(title)&lt;br /&gt;
	if description and description ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__description&amp;#039;):wikitext(description)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- @class CardHeaderProps&lt;br /&gt;
--- @field title string&lt;br /&gt;
--- @field description? string&lt;br /&gt;
--- @field trailing? string  HTML rendered on the right of the header (button, icon, …)&lt;br /&gt;
&lt;br /&gt;
--- Builds a full static header row: title + description on the left, optional&lt;br /&gt;
--- `trailing` element on the right.&lt;br /&gt;
---&lt;br /&gt;
--- @param props CardHeaderProps&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.renderHeader(props)&lt;br /&gt;
	local root = mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__header&amp;#039;)&lt;br /&gt;
	root:wikitext(p.renderHeaderContent(props.title, props.description))&lt;br /&gt;
	if props.trailing and props.trailing ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__trailing&amp;#039;):wikitext(tostring(props.trailing))&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- @class CardProps&lt;br /&gt;
--- @field content string|mw.html  Card body.&lt;br /&gt;
--- @field footer? string          Always-visible footer (attribution, etc.).&lt;br /&gt;
--- @field class? string           Extra class(es) appended to the card root.&lt;br /&gt;
&lt;br /&gt;
--- Wraps `content` (and optional `footer`) in the card shell.&lt;br /&gt;
---&lt;br /&gt;
--- @param props CardProps&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.render(props)&lt;br /&gt;
	local styles = mw.getCurrentFrame():extensionTag({&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;,&lt;br /&gt;
		args = { src = &amp;#039;Module:CardLua/styles.css&amp;#039; },&lt;br /&gt;
	})&lt;br /&gt;
	local root = mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card&amp;#039;)&lt;br /&gt;
	if props.class and props.class ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root:addClass(props.class)&lt;br /&gt;
	end&lt;br /&gt;
	root:wikitext(tostring(props.content))&lt;br /&gt;
	if props.footer and props.footer ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__footer&amp;#039;):wikitext(tostring(props.footer))&lt;br /&gt;
	end&lt;br /&gt;
	return styles .. tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- @class LinkCardProps&lt;br /&gt;
--- @field title string&lt;br /&gt;
--- @field description? string&lt;br /&gt;
--- @field buttons ButtonProps[]  One or more Module:ButtonLua props; rendered as trailing link-out actions.&lt;br /&gt;
--- @field class? string&lt;br /&gt;
&lt;br /&gt;
--- A static card whose body is a header row with one or more link-out buttons&lt;br /&gt;
--- on the right — for summaries backed by external sources rather than on-page&lt;br /&gt;
--- data (e.g. &amp;quot;Browse 830 recipes&amp;quot; → Wiki API; &amp;quot;Browse trade data&amp;quot; → SC Trade&lt;br /&gt;
--- Tools + UEX).&lt;br /&gt;
---&lt;br /&gt;
--- @param props LinkCardProps&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.renderLinkCard(props)&lt;br /&gt;
	local rendered = {}&lt;br /&gt;
	for _, b in ipairs(props.buttons or {}) do&lt;br /&gt;
		rendered[#rendered + 1] = button.render(b)&lt;br /&gt;
	end&lt;br /&gt;
	return p.render({&lt;br /&gt;
		class = props.class,&lt;br /&gt;
		content = p.renderHeader({&lt;br /&gt;
			title = props.title,&lt;br /&gt;
			description = props.description,&lt;br /&gt;
			trailing = table.concat(rendered),&lt;br /&gt;
		}),&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- @class MediaCardReadout&lt;br /&gt;
--- @field label? string  Left-hand label, e.g. &amp;quot;Ends in&amp;quot;.&lt;br /&gt;
--- @field value? string  Right-hand value: a count, a countdown, a price…&lt;br /&gt;
--- @field attrs? table&amp;lt;string, string&amp;gt;  Attributes set on the value element, for&lt;br /&gt;
---        gadgets that animate or refresh it (e.g. a countdown target date).&lt;br /&gt;
&lt;br /&gt;
--- @class MediaBodyProps&lt;br /&gt;
--- @field title string      Required.&lt;br /&gt;
--- @field link? string      Page the title links to.&lt;br /&gt;
--- @field kicker? string    Overline above the title.&lt;br /&gt;
--- @field body? string      Prose, or a wikitext list. A longer register than&lt;br /&gt;
---        the header row&amp;#039;s one-line `description`. A `*` list renders as a&lt;br /&gt;
---        compact bulleted list — the shape Update: pages already use for&lt;br /&gt;
---        &amp;quot;what&amp;#039;s new&amp;quot; — and each item should stay to one line, because a&lt;br /&gt;
---        wrapped item costs a slot in a card whose height is fixed by whatever&lt;br /&gt;
---        sits beside it.&lt;br /&gt;
--- @field readout? MediaCardReadout&lt;br /&gt;
--- @field more? string     Read-more affordance at the foot of the body.&lt;br /&gt;
---        Rendered as styled text, never a second anchor: the title already&lt;br /&gt;
---        links to the same page, and on a stretch-linked card the whole&lt;br /&gt;
---        surface is that link, so an anchor here would only hand keyboard and&lt;br /&gt;
---        screen-reader users a duplicate stop to a place they have already&lt;br /&gt;
---        been offered. Hidden from assistive tech for the same reason — &amp;quot;read&lt;br /&gt;
---        more&amp;quot; is precisely the link text a screen reader user is taught to&lt;br /&gt;
---        distrust, and it carries nothing the title has not already said.&lt;br /&gt;
&lt;br /&gt;
--- @class MediaCardProps&lt;br /&gt;
--- @field image? string       File name for the leading art; a &amp;quot;File:&amp;quot; prefix is optional.&lt;br /&gt;
--- @field imageAlt? string    Alt text. Defaults to empty, which is correct for&lt;br /&gt;
---        decorative art sitting next to a title that already names the subject.&lt;br /&gt;
--- @field imageWidth? number  Width the file is RENDERED at, in px, not the size&lt;br /&gt;
---        of the slot — the art is cropped to fill, so this only needs to be&lt;br /&gt;
---        large enough to stay sharp. Defaults to 480.&lt;br /&gt;
--- @field layout? string      &amp;#039;split&amp;#039; (art beside the text, the default) or&lt;br /&gt;
---        &amp;#039;banner&amp;#039; (art across the top). Split stays short; banner is taller for&lt;br /&gt;
---        the same content, which matters when the card sits above the fold.&lt;br /&gt;
--- @field content string|mw.html  Everything that is not the art. Usually&lt;br /&gt;
---        `renderMediaBody(…)`, optionally followed by more elements — they&lt;br /&gt;
---        become further columns of the card&amp;#039;s flex row, which is how a&lt;br /&gt;
---        countdown or any other aside gets in without this module growing a&lt;br /&gt;
---        prop for it.&lt;br /&gt;
--- @field stretchLink? boolean  Make the whole card clickable. Requires a link&lt;br /&gt;
---        in `content` — the CSS stretches the title&amp;#039;s anchor — so it pairs with&lt;br /&gt;
---        `link` on the body rather than on the card. Off by default, because a&lt;br /&gt;
---        card that swallows every click also swallows text selection.&lt;br /&gt;
--- @field footer? string      Card footer, below a divider.&lt;br /&gt;
--- @field class? string&lt;br /&gt;
&lt;br /&gt;
--- Wikitext for the leading art. `link=` is deliberately empty: the title&lt;br /&gt;
--- carries the link, and a second target over the picture gives keyboard and&lt;br /&gt;
--- screen-reader users a duplicate stop for the same destination.&lt;br /&gt;
---&lt;br /&gt;
--- @param props MediaCardProps&lt;br /&gt;
--- @return string&lt;br /&gt;
local function mediaWikitext(props)&lt;br /&gt;
	local name = mw.text.trim(props.image)&lt;br /&gt;
	name = name:gsub(&amp;#039;^[Ff][Ii][Ll][Ee]:&amp;#039;, &amp;#039;&amp;#039;):gsub(&amp;#039;^[Ii][Mm][Aa][Gg][Ee]:&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	return string.format(&amp;#039;[[File:%s|%dpx|link=|alt=%s]]&amp;#039;, name, tonumber(props.imageWidth) or 480, props.imageAlt or &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- The visible cue that a card is clickable. A stretched anchor is invisible,&lt;br /&gt;
--- so without this the card gives no sign of being a link until a cursor is&lt;br /&gt;
--- already over it, and no sign at all to someone reading rather than pointing.&lt;br /&gt;
---&lt;br /&gt;
--- @param text string&lt;br /&gt;
--- @return string&lt;br /&gt;
local function moreHtml(text)&lt;br /&gt;
	return tostring(mw.html.create(&amp;#039;span&amp;#039;):addClass(&amp;#039;t-card__more&amp;#039;):attr(&amp;#039;aria-hidden&amp;#039;, &amp;#039;true&amp;#039;):wikitext(text))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- @param readout MediaCardReadout&lt;br /&gt;
--- @return string&lt;br /&gt;
local function readoutHtml(readout)&lt;br /&gt;
	local row = mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__readout&amp;#039;)&lt;br /&gt;
	row:tag(&amp;#039;span&amp;#039;):addClass(&amp;#039;t-card__readout-label&amp;#039;):wikitext(readout.label or &amp;#039;&amp;#039;)&lt;br /&gt;
	local value = row:tag(&amp;#039;span&amp;#039;):addClass(&amp;#039;t-card__readout-value&amp;#039;)&lt;br /&gt;
	for name, content in pairs(readout.attrs or {}) do&lt;br /&gt;
		value:attr(name, content)&lt;br /&gt;
	end&lt;br /&gt;
	value:wikitext(readout.value or &amp;#039;&amp;#039;)&lt;br /&gt;
	return tostring(row)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Builds the standard text block: overline, title, prose, and an optional&lt;br /&gt;
--- readout row pinned to the foot.&lt;br /&gt;
---&lt;br /&gt;
--- Exposed rather than inlined because the card takes a content slot, not a&lt;br /&gt;
--- fixed set of fields. A consumer that wants the usual text plus something&lt;br /&gt;
--- beside it composes this with whatever else, exactly as `renderLinkCard`&lt;br /&gt;
--- composes `renderHeader` with buttons.&lt;br /&gt;
---&lt;br /&gt;
--- The foot is bottom-anchored on purpose. Cards laid out in a row are&lt;br /&gt;
--- stretched to the tallest of them, and this decides where that spare height&lt;br /&gt;
--- lands: as a gap above the foot, which reads as deliberate, rather than as a&lt;br /&gt;
--- hole below everything, which reads as a mistake.&lt;br /&gt;
---&lt;br /&gt;
--- @param props MediaBodyProps&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.renderMediaBody(props)&lt;br /&gt;
	if not props.title or props.title == &amp;#039;&amp;#039; then&lt;br /&gt;
		error(&amp;#039;renderMediaBody: title is required&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local root = mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__media-body&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	if props.kicker and props.kicker ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__kicker&amp;#039;):wikitext(props.kicker)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local linked = props.link and props.link ~= &amp;#039;&amp;#039;&lt;br /&gt;
	local title = linked and string.format(&amp;#039;[[%s|%s]]&amp;#039;, props.link, props.title) or props.title&lt;br /&gt;
	root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__title&amp;#039;):wikitext(title)&lt;br /&gt;
&lt;br /&gt;
	if props.body and props.body ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		-- The leading newline is load-bearing. mw.html emits this div inline, so a&lt;br /&gt;
		-- body that opens with `*` would sit immediately after `&amp;gt;` rather than at&lt;br /&gt;
		-- the start of a line, and the parser renders it as literal text instead&lt;br /&gt;
		-- of opening a list. Only the FIRST item is affected, so the bug looks&lt;br /&gt;
		-- like a typo in the wikitext rather than a rendering problem. Harmless&lt;br /&gt;
		-- for prose: a leading newline inside a block element changes nothing.&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__body&amp;#039;):wikitext(&amp;#039;\n&amp;#039; .. props.body)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- One wrapper rather than an auto margin on each: flex splits free space&lt;br /&gt;
	-- evenly between auto margins, so two of them would push the pair apart&lt;br /&gt;
	-- instead of holding it together at the bottom.&lt;br /&gt;
	local foot = {}&lt;br /&gt;
	if props.readout and (props.readout.label or props.readout.value) then&lt;br /&gt;
		foot[#foot + 1] = readoutHtml(props.readout)&lt;br /&gt;
	end&lt;br /&gt;
	if props.more and props.more ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		foot[#foot + 1] = moreHtml(props.more)&lt;br /&gt;
	end&lt;br /&gt;
	if #foot &amp;gt; 0 then&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__foot&amp;#039;):wikitext(table.concat(foot))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- A card that leads with a picture, followed by whatever `content` supplies.&lt;br /&gt;
---&lt;br /&gt;
--- The card owns only the media: where it sits, that it bleeds to the inner&lt;br /&gt;
--- edge, and whether the row runs across or down. Everything else is the&lt;br /&gt;
--- caller&amp;#039;s, laid out as flex children of the same row — so a second element&lt;br /&gt;
--- after the body becomes a second column without this module needing to know&lt;br /&gt;
--- what it is.&lt;br /&gt;
---&lt;br /&gt;
--- @param props MediaCardProps&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.renderMediaCard(props)&lt;br /&gt;
	local layout = props.layout == &amp;#039;banner&amp;#039; and &amp;#039;banner&amp;#039; or &amp;#039;split&amp;#039;&lt;br /&gt;
	local root = mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__media-layout&amp;#039;):addClass(&amp;#039;t-card__media-layout--&amp;#039; .. layout)&lt;br /&gt;
&lt;br /&gt;
	if props.image and props.image ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		root:tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;t-card__media&amp;#039;):wikitext(mediaWikitext(props))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	root:wikitext(tostring(props.content or &amp;#039;&amp;#039;))&lt;br /&gt;
&lt;br /&gt;
	-- The stretch is a class on the card, not an extra element: the title&amp;#039;s own&lt;br /&gt;
	-- anchor is grown to cover the card by CSS. A separate overlay anchor would&lt;br /&gt;
	-- either have no accessible name, or repeat the title and hand keyboard and&lt;br /&gt;
	-- screen-reader users a second stop for the same destination.&lt;br /&gt;
	local class = props.class&lt;br /&gt;
	if props.stretchLink == true then&lt;br /&gt;
		class = class and (class .. &amp;#039; t-card--link&amp;#039;) or &amp;#039;t-card--link&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return p.render({&lt;br /&gt;
		content = tostring(root),&lt;br /&gt;
		footer = props.footer,&lt;br /&gt;
		class = class,&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Wikitext entry point for the media card: the common case, where the content&lt;br /&gt;
--- slot is a standard body, optionally followed by something else.&lt;br /&gt;
---&lt;br /&gt;
--- `after` is deliberately untyped — wikitext cannot compose Lua, so it is how a&lt;br /&gt;
--- template hands a second column in (`|after={{#invoke:Countdown|main|…}}`)&lt;br /&gt;
--- without this module learning what a countdown is.&lt;br /&gt;
---&lt;br /&gt;
--- Readout attributes are Lua-only: they exist for gadget hooks, which belong to&lt;br /&gt;
--- a module that knows what it is hooking, not to a template parameter.&lt;br /&gt;
---&lt;br /&gt;
--- @param frame mw.frame&lt;br /&gt;
--- @return string&lt;br /&gt;
function p.mediaCard(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame)&lt;br /&gt;
	local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
	return p.renderMediaCard({&lt;br /&gt;
		image = args.image,&lt;br /&gt;
		imageAlt = args.imagealt,&lt;br /&gt;
		imageWidth = args.imagewidth,&lt;br /&gt;
		layout = args.layout,&lt;br /&gt;
		stretchLink = yesno(args.stretchlink, false) == true,&lt;br /&gt;
		content = p.renderMediaBody({&lt;br /&gt;
			title = args.title,&lt;br /&gt;
			link = args.link,&lt;br /&gt;
			kicker = args.kicker,&lt;br /&gt;
			body = args.body,&lt;br /&gt;
			readout = { label = args.readoutlabel, value = args.readout },&lt;br /&gt;
			more = args.more,&lt;br /&gt;
		}) .. (args.after or &amp;#039;&amp;#039;),&lt;br /&gt;
		footer = args.footer,&lt;br /&gt;
		class = args.class,&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Luxbane</name></author>
	</entry>
</feed>