<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.boywiki.org/en/index.php?action=history&amp;feed=atom&amp;title=Module%3AArchives</id>
	<title>Module:Archives - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.boywiki.org/en/index.php?action=history&amp;feed=atom&amp;title=Module%3AArchives"/>
	<link rel="alternate" type="text/html" href="https://www.boywiki.org/en/index.php?title=Module:Archives&amp;action=history"/>
	<updated>2026-04-28T12:34:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.boywiki.org/en/index.php?title=Module:Archives&amp;diff=53210&amp;oldid=prev</id>
		<title>Etenne: Created page with &quot;p = {}  local cfg = mw.loadData(&#039;Module:Archives/config&#039;)  local function is_filled(var) 	return var and var ~= &#039;&#039; end  -- simple helper for simple cases local function var_or_default(var, default) 	if is_filled(var) then 		return var 	else 		return default 	end end  local function wikilink(link, display) 	if display then 		return &#039;&#039; .. display .. &#039;&#039; 	else 		return &#039;&#039; .. link .. &#039;&#039; 	end end  local function talk_other(demospace, talk) 	if is_filled(...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.boywiki.org/en/index.php?title=Module:Archives&amp;diff=53210&amp;oldid=prev"/>
		<updated>2022-06-22T17:00:28Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;p = {}  local cfg = mw.loadData(&amp;#039;Module:Archives/config&amp;#039;)  local function is_filled(var) 	return var and var ~= &amp;#039;&amp;#039; end  -- simple helper for simple cases local function var_or_default(var, default) 	if is_filled(var) then 		return var 	else 		return default 	end end  local function wikilink(link, display) 	if display then 		return &amp;#039;&lt;a href=&quot;/en/index.php?title=%27_.._link_.._%27&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;&amp;#039; .. link .. &amp;#039; (page does not exist)&quot;&gt;&amp;#039; .. display .. &amp;#039;&lt;/a&gt;&amp;#039; 	else 		return &amp;#039;&lt;a href=&quot;/en/index.php?title=%27_.._link_.._%27&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;&amp;#039; .. link .. &amp;#039; (page does not exist)&quot;&gt;&amp;#039; .. link .. &amp;#039;&lt;/a&gt;&amp;#039; 	end end  local function talk_other(demospace, talk) 	if is_filled(...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;p = {}&lt;br /&gt;
&lt;br /&gt;
local cfg = mw.loadData(&amp;#039;Module:Archives/config&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local function is_filled(var)&lt;br /&gt;
	return var and var ~= &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- simple helper for simple cases&lt;br /&gt;
local function var_or_default(var, default)&lt;br /&gt;
	if is_filled(var) then&lt;br /&gt;
		return var&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wikilink(link, display)&lt;br /&gt;
	if display then&lt;br /&gt;
		return &amp;#039;[[&amp;#039; .. link .. &amp;#039;|&amp;#039; .. display .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;#039;[[&amp;#039; .. link .. &amp;#039;]]&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function talk_other(demospace, talk)&lt;br /&gt;
	if is_filled(demospace) then return demospace end&lt;br /&gt;
	&lt;br /&gt;
	if mw.title.getCurrentTitle().isTalkPage then return talk end&lt;br /&gt;
	&lt;br /&gt;
	return nil -- just return nil rather than &amp;#039;other&amp;#039; since we have no need&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function add_image(image)&lt;br /&gt;
	if image.image and (image.image == &amp;#039;none&amp;#039; or image.image == &amp;#039;&amp;#039;) then return nil end&lt;br /&gt;
&lt;br /&gt;
	return mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;archives-image&amp;#039;):wikitext(&lt;br /&gt;
		require(&amp;#039;Module:InfoboxImage/sandbox&amp;#039;)._InfoboxImage({&lt;br /&gt;
			[cfg.img_mod.image] = var_or_default(image.image, cfg.image),&lt;br /&gt;
			[cfg.img_mod.alt] = var_or_default(image.alt, cfg.img_mod.alt_none),&lt;br /&gt;
			[cfg.img_mod.link] = var_or_default(image.link, cfg.img_mod.link_none),&lt;br /&gt;
			[cfg.img_mod.size] = var_or_default(image.size, nil),&lt;br /&gt;
			[cfg.img_mod.sizedefault] = cfg.image_size&lt;br /&gt;
		})&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function auto_list(list_root, is_banner, list_auto, list_prefix)&lt;br /&gt;
	local list_args = {}&lt;br /&gt;
	&lt;br /&gt;
	if list_root then&lt;br /&gt;
		list_args.root = list_root&lt;br /&gt;
	else&lt;br /&gt;
		list_args.DISABLE1 = list_root&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_banner then&lt;br /&gt;
		list_args.nobr = &amp;#039;yes&amp;#039;&lt;br /&gt;
		list_args.DISABLE2 = list_auto or &amp;#039;long&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		list_args.nobr = &amp;#039;no&amp;#039;&lt;br /&gt;
		list_args.auto = list_auto or &amp;#039;long&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if list_prefix then&lt;br /&gt;
		list_args.prefix = list_prefix&lt;br /&gt;
	else&lt;br /&gt;
		list_args.DISABLE3 = list_prefix&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return require(&amp;#039;Module:Archive list&amp;#039;).main(list_args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_title(is_banner, title)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function search_box(frame, is_banner, root, search)&lt;br /&gt;
&lt;br /&gt;
	if search.search and search.search == cfg.search_no then return nil end&lt;br /&gt;
	&lt;br /&gt;
	local prefix = &amp;#039;&amp;#039;&lt;br /&gt;
	if is_filled(search.prefix) then&lt;br /&gt;
		prefix = search.prefix&lt;br /&gt;
	-- this double-check elseif may move out to code-proper&lt;br /&gt;
	elseif is_filled(root) then&lt;br /&gt;
		prefix = root&lt;br /&gt;
	else&lt;br /&gt;
		prefix = mw.title.getCurrentTitle().prefixedText .. &amp;#039;/&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- break&lt;br /&gt;
	local sbreak&lt;br /&gt;
	if search.sbreak and (search.sbreak == &amp;#039;yes&amp;#039; or search.sbreak == &amp;#039;no&amp;#039;) then&lt;br /&gt;
		sbreak = search.sbreak&lt;br /&gt;
	end&lt;br /&gt;
	-- set sbreak&amp;#039;s default&lt;br /&gt;
	if not sbreak then&lt;br /&gt;
		if is_banner then&lt;br /&gt;
			sbreak = &amp;#039;no&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			sbreak = &amp;#039;yes&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- width&lt;br /&gt;
	local width = &amp;#039;&amp;#039;&lt;br /&gt;
	if not is_banner then&lt;br /&gt;
		width = var_or_default(search.width, cfg.search_width)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- label&lt;br /&gt;
	local label = var_or_default(search.label, cfg.search_label)&lt;br /&gt;
	&lt;br /&gt;
	local inputbox_options = {&lt;br /&gt;
		[&amp;#039;bgcolor&amp;#039;] = &amp;#039;transparent&amp;#039;,&lt;br /&gt;
		[&amp;#039;type&amp;#039;] = &amp;#039;fulltext&amp;#039;,&lt;br /&gt;
		[&amp;#039;prefix&amp;#039;] = prefix,&lt;br /&gt;
		[&amp;#039;break&amp;#039;] = sbreak,&lt;br /&gt;
		[&amp;#039;width&amp;#039;] = width,&lt;br /&gt;
		[&amp;#039;searchbuttonlabel&amp;#039;] = label&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	local inputbox_content = {}&lt;br /&gt;
	for k, v in pairs(inputbox_options) do&lt;br /&gt;
		table.insert(inputbox_content, k .. &amp;#039;=&amp;#039; .. v)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;archives-search&amp;#039;):wikitext(frame:extensionTag{&lt;br /&gt;
		name = &amp;#039;inputbox&amp;#039;,&lt;br /&gt;
		content = table.concat(inputbox_content, &amp;#039;\n&amp;#039;)&lt;br /&gt;
	})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function note_auto(frame, auto)&lt;br /&gt;
	if not is_filled(auto.age) and not is_filled(auto.target) then return nil end&lt;br /&gt;
	&lt;br /&gt;
	local age = var_or_default(auto.age, nil)&lt;br /&gt;
	local target = var_or_default(auto.target, nil)&lt;br /&gt;
	&lt;br /&gt;
	local target_text = &amp;#039;&amp;#039;&lt;br /&gt;
	if target then&lt;br /&gt;
		target_text = mw.ustring.format(&lt;br /&gt;
			cfg.has_archives,&lt;br /&gt;
			frame:callParserFunction( &amp;#039;#rel2abs&amp;#039;, target ),&lt;br /&gt;
			age and &amp;#039; &amp;#039; or &amp;#039;&amp;#039;&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local age_text = &amp;#039;&amp;#039;&lt;br /&gt;
	if age then&lt;br /&gt;
		local units = var_or_default(auto.units, cfg.units)&lt;br /&gt;
		-- there&amp;#039;s probably a friendlier l10n way to do this check on units...&lt;br /&gt;
		-- TODO make it friendlier. maybe split it to a separate function?&lt;br /&gt;
		-- (borrowed from Module:String.endswith in the meantime)&lt;br /&gt;
		if age ~= &amp;#039;1&amp;#039; and mw.ustring.sub(units, -1, -1) ~= &amp;#039;s&amp;#039; then&lt;br /&gt;
			units = units .. &amp;#039;s&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- TODO localize&lt;br /&gt;
		local age_with_units = age .. &amp;#039;&amp;amp;nbsp;&amp;#039; .. units&lt;br /&gt;
		&lt;br /&gt;
		local has_bot = is_filled(auto.bot)&lt;br /&gt;
		local has_minthreads = is_filled(auto.minthreads)&lt;br /&gt;
		if has_bot and has_minthreads then&lt;br /&gt;
			age_text = mw.ustring.format(&lt;br /&gt;
				cfg.age_bot_threads,&lt;br /&gt;
				age_with_units,&lt;br /&gt;
				wikilink(&amp;#039;User:&amp;#039; .. auto.bot, auto.bot),&lt;br /&gt;
				var_or_default(auto.minthreads, cfg.min_threads)&lt;br /&gt;
			)&lt;br /&gt;
		elseif has_bot then&lt;br /&gt;
			age_text = mw.ustring.format(&lt;br /&gt;
				cfg.age_bot,&lt;br /&gt;
				age_with_units,&lt;br /&gt;
				wikilink(&amp;#039;User:&amp;#039; .. auto.bot, auto.bot)&lt;br /&gt;
			)&lt;br /&gt;
		elseif has_minthreads then&lt;br /&gt;
			age_text = mw.ustring.format(&lt;br /&gt;
				cfg.age_threads,&lt;br /&gt;
				age_with_units,&lt;br /&gt;
				var_or_default(auto.minthreads, cfg.min_threads)&lt;br /&gt;
			)&lt;br /&gt;
		else&lt;br /&gt;
			age_text = mw.ustring.format(&lt;br /&gt;
				cfg.age,&lt;br /&gt;
				age_with_units&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;archives-auto&amp;#039;):wikitext(target_text .. age_text)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function edit_list(frame, auto, list1, archive_list, archive_list_exists, editbox)&lt;br /&gt;
	&lt;br /&gt;
	local has_editbox = not editbox or (editbox and (editbox == &amp;#039;&amp;#039; or editbox == &amp;#039;yes&amp;#039;))&lt;br /&gt;
	if not (archive_list_exists and has_editbox and not auto and list1) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.html.create(&amp;#039;div&amp;#039;):addClass(&amp;#039;archives-edit&amp;#039;):wikitext(mw.ustring.format(&lt;br /&gt;
		cfg.edit_this_box,&lt;br /&gt;
		archive_list.fullUrl(&amp;#039;action=edit&amp;#039; .. cfg.pre_load)&lt;br /&gt;
	))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function render_list(root, auto, list1, archive_list_title, archive_list_exists, list, index, prefix)&lt;br /&gt;
	-- this logic is seriously fucking screwy&lt;br /&gt;
	-- only hope is for the test cases to catch the insanity&lt;br /&gt;
	local auto_default = true&lt;br /&gt;
	if list1 then&lt;br /&gt;
		auto_default = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local is_foreign = true&lt;br /&gt;
	if (auto and auto == &amp;#039;no&amp;#039;) or (not auto and not auto_default) then&lt;br /&gt;
		is_foreign = false&lt;br /&gt;
	end&lt;br /&gt;
	local foreign_archive_list = &amp;#039;&amp;#039;&lt;br /&gt;
	local list = var_or_default(content.list, nil)&lt;br /&gt;
	if not list and is_foreign then&lt;br /&gt;
	&lt;br /&gt;
		local index_page = frame:callParserFunction(&lt;br /&gt;
			&amp;#039;#rel2abs&amp;#039;,&lt;br /&gt;
			var_or_default(content.index, &amp;#039;./Archive index&amp;#039;)&lt;br /&gt;
		)&lt;br /&gt;
		local index_link = &amp;#039;&amp;#039;&lt;br /&gt;
		if mw.title.new(index_page).exists then&lt;br /&gt;
			index_link = wikilink(index_page, &amp;#039;Index&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local prefix = var_or_default(content.prefix, nil)&lt;br /&gt;
		if archive_list_exists then&lt;br /&gt;
			foreign_archive_list = frame:expandTemplate{ title = archive_list_name}&lt;br /&gt;
		else&lt;br /&gt;
			foreign_archive_list = auto_list(root, is_banner, auto, prefix)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		foreign_archive_list = index_link .. foreign_archive_list&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local local_archive_list = &amp;#039;&amp;#039;&lt;br /&gt;
	if list or list1 then&lt;br /&gt;
		local_archive_list = &amp;#039;\n&amp;#039; .. (list or list1)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return foreign_archive_list .. local_archive_list&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_main_content(frame, is_banner, content)&lt;br /&gt;
	&lt;br /&gt;
	local is_collapsible = false&lt;br /&gt;
	local is_collapsed = false&lt;br /&gt;
	if content.collapsible and content.collapsible == &amp;#039;yes&amp;#039; then&lt;br /&gt;
		is_collapsible = true&lt;br /&gt;
	end&lt;br /&gt;
	if content.collapsed and content.collapsed == &amp;#039;yes&amp;#039; then&lt;br /&gt;
		is_collapsed = true&lt;br /&gt;
		is_collapsible = true&lt;br /&gt;
	end&lt;br /&gt;
	local root = var_or_default(content.root, nil)&lt;br /&gt;
	local auto = var_or_default(content.auto, nil)&lt;br /&gt;
	local list1 = var_or_default(content.list1, nil)&lt;br /&gt;
		&lt;br /&gt;
	local archive_list_name = frame:callParserFunction(&lt;br /&gt;
		&amp;#039;#rel2abs&amp;#039;,&lt;br /&gt;
		var_or_default(content.archive_list, cfg.archive_list)&lt;br /&gt;
	)&lt;br /&gt;
	local archive_list_title = mw.title.new(archive_list_name)&lt;br /&gt;
	local archive_list_exists = archive_list_title.exists&lt;br /&gt;
	&lt;br /&gt;
	local all_lists = render_list(&lt;br /&gt;
		root,&lt;br /&gt;
		auto,&lt;br /&gt;
		list1,&lt;br /&gt;
		archive_list_title,&lt;br /&gt;
		archive_list_exists,&lt;br /&gt;
		content.list,&lt;br /&gt;
		content.index,&lt;br /&gt;
		content.prefix&lt;br /&gt;
	)&lt;br /&gt;
	&lt;br /&gt;
	local main_content = mw.html.create()&lt;br /&gt;
	main_content&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;archives-flex-child&amp;#039;)&lt;br /&gt;
			:wikitext(all_lists)&lt;br /&gt;
			:node(search_box(frame, is_banner, root, content.search))&lt;br /&gt;
			:node(note_auto(frame, content.auto_explanation))&lt;br /&gt;
			:node(edit_list(&lt;br /&gt;
				frame, auto, list1, archive_list_title, archive_list_exists, content.editbox&lt;br /&gt;
			))&lt;br /&gt;
&lt;br /&gt;
	return main_content&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
pass the frame down for a minute because we do a lot of work with a frame&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
function p._main(args, frame)&lt;br /&gt;
&lt;br /&gt;
	local is_banner = false&lt;br /&gt;
	if (args[cfg.arg.banner] and args[cfg.arg.banner] == cfg.banner_yes) or&lt;br /&gt;
		(args[cfg.arg.large] and args[cfg.arg.large] == cfg.banner_yes) then&lt;br /&gt;
		is_banner = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local archives = mw.html.create()&lt;br /&gt;
	archives&lt;br /&gt;
		:tag(&amp;#039;div&amp;#039;)&lt;br /&gt;
			:addClass(&amp;#039;archives plainlinks&amp;#039;)&lt;br /&gt;
			-- banner is roughly mbox, small is roughly mbox-small&lt;br /&gt;
			:addClass(is_banner and &amp;#039;archives-banner&amp;#039; or &amp;#039;archives-small&amp;#039;)&lt;br /&gt;
			-- archives-talk has same-ish styles as tmbox tmbox-notice&lt;br /&gt;
			-- base styles are same-ish as ombox ombox-notice&lt;br /&gt;
			:addClass(talk_other(&lt;br /&gt;
				var_or_default(args[cfg.arg.demospace], nil),&lt;br /&gt;
				&amp;#039;archives-talk&amp;#039;&lt;br /&gt;
			))&lt;br /&gt;
			:css(&amp;#039;width&amp;#039;, var_or_default(args[cfg.arg.box_width], nil))&lt;br /&gt;
			:cssText(var_or_default(args[cfg.arg.style], nil))&lt;br /&gt;
			&lt;br /&gt;
			:node(add_image({&lt;br /&gt;
				image = args[cfg.arg.image],&lt;br /&gt;
				alt = args[cfg.arg.alt],&lt;br /&gt;
				link = args[cfg.arg.link],&lt;br /&gt;
				size = args[cfg.arg.image_size]&lt;br /&gt;
			}))&lt;br /&gt;
			:node(add_main_content(frame, is_banner, {&lt;br /&gt;
				archive_list = args[cfg.arg.archive_list],&lt;br /&gt;
				auto = args[cfg.arg.auto],&lt;br /&gt;
				collapsible = args[cfg.arg.collapsible],&lt;br /&gt;
				collapsed = args[cfg.arg.collapsed],&lt;br /&gt;
				edit_box = args[cfg.arg.edit_box],&lt;br /&gt;
				index = args[cfg.arg.index],&lt;br /&gt;
				list = args[cfg.arg.list],&lt;br /&gt;
				list1 = args[cfg.arg.list1],&lt;br /&gt;
				prefix = args[cfg.arg.prefix],&lt;br /&gt;
				root = args[cfg.arg.root],&lt;br /&gt;
				title = args[cfg.arg.title],&lt;br /&gt;
				search = {&lt;br /&gt;
					search = args[cfg.arg.search],&lt;br /&gt;
					prefix = args[cfg.arg.search_prefix],&lt;br /&gt;
					width = args[cfg.arg.search_width],&lt;br /&gt;
					sbreak = args[cfg.arg.search_break],&lt;br /&gt;
					label = args[cfg.arg.search_button_label]&lt;br /&gt;
				},&lt;br /&gt;
				auto_explanation = {&lt;br /&gt;
					age = args[cfg.arg.age],&lt;br /&gt;
					target = args[cfg.arg.target],&lt;br /&gt;
					units = args[cfg.arg.units],&lt;br /&gt;
					bot = args[cfg.arg.bot],&lt;br /&gt;
					minthreads = args[cfg.arg.minthreads]&lt;br /&gt;
				}&lt;br /&gt;
			}))&lt;br /&gt;
&lt;br /&gt;
	return frame:extensionTag{&lt;br /&gt;
		name = &amp;#039;templatestyles&amp;#039;, args = { src = cfg.templatestyles }&lt;br /&gt;
	} .. tostring(archives)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	return p._main(require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame), frame)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Etenne</name></author>
	</entry>
</feed>