<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://drl.droidbuilders.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ADialogue</id>
	<title>Module:Dialogue - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://drl.droidbuilders.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ADialogue"/>
	<link rel="alternate" type="text/html" href="https://drl.droidbuilders.net/index.php?title=Module:Dialogue&amp;action=history"/>
	<updated>2026-06-15T17:59:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://drl.droidbuilders.net/index.php?title=Module:Dialogue&amp;diff=4112&amp;oldid=prev</id>
		<title>Drl-admin: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://drl.droidbuilders.net/index.php?title=Module:Dialogue&amp;diff=4112&amp;oldid=prev"/>
		<updated>2018-08-12T16:26:51Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
--&lt;br /&gt;
-- This module implements [[Template:Dialogue]].&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function makeCategoryLink(cat)&lt;br /&gt;
	return string.format(&amp;#039;[[Category:%s]]&amp;#039;, cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeWikitextError(msg)&lt;br /&gt;
	local ret = &amp;#039;&amp;#039;&lt;br /&gt;
	ret = ret .. string.format(&lt;br /&gt;
		&amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;[[Template:Dialogue]] error: %s.&amp;lt;/strong&amp;gt;&amp;#039;,&lt;br /&gt;
		msg&lt;br /&gt;
	)&lt;br /&gt;
	if mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		ret = ret .. makeCategoryLink(&amp;#039;Pages with template parameter errors&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(lines, options)&lt;br /&gt;
	-- Validate the lines data.&lt;br /&gt;
	if #lines &amp;lt; 2 then&lt;br /&gt;
		return makeWikitextError(&amp;#039;dialogues must have at least two lines&amp;#039;)&lt;br /&gt;
	elseif #lines &amp;gt; 10 then&lt;br /&gt;
		-- Dialogues were restricted to 10 lines or less in&lt;br /&gt;
		-- [[Forum:CT Archive/Quote length]].&lt;br /&gt;
		return makeWikitextError(&amp;#039;dialogues must not have more than 10 lines&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	for i, t in ipairs(lines) do&lt;br /&gt;
		if not t.speaker then&lt;br /&gt;
			return makeWikitextError(string.format(&lt;br /&gt;
				&amp;#039;no speaker was specified for line %d of the dialogue&amp;#039;,&lt;br /&gt;
				i&lt;br /&gt;
			))&lt;br /&gt;
		elseif not t.text then&lt;br /&gt;
			return makeWikitextError(string.format(&lt;br /&gt;
				&amp;#039;no text was specified for line %d of the dialogue&amp;#039;,&lt;br /&gt;
				i&lt;br /&gt;
			))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Get the dialogue text.&lt;br /&gt;
	local dialogue = {}&lt;br /&gt;
	for i, t in ipairs(lines) do&lt;br /&gt;
		local text&lt;br /&gt;
		if t.format == &amp;#039;trans&amp;#039; then&lt;br /&gt;
			text = string.format(&amp;quot;&amp;amp;laquo;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;amp;raquo;&amp;quot;, t.text)&lt;br /&gt;
		elseif t.format == &amp;#039;no&amp;#039; then&lt;br /&gt;
			text = t.text&lt;br /&gt;
		else&lt;br /&gt;
			text = string.format(&amp;quot;\&amp;quot;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;\&amp;quot;&amp;quot;, t.text)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(dialogue, string.format(&lt;br /&gt;
			&amp;quot;:&amp;#039;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;#039;: %s&amp;quot;, t.speaker, text&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	dialogue = table.concat(dialogue, &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Make the footnote.&lt;br /&gt;
	local footnote = {}&lt;br /&gt;
	table.insert(footnote, &amp;#039;:&amp;amp;#8213;&amp;#039;)&lt;br /&gt;
	if options.attr then&lt;br /&gt;
		table.insert(footnote, options.attr)&lt;br /&gt;
	else&lt;br /&gt;
		return makeWikitextError(&amp;quot;no &amp;#039;attr&amp;#039; argument was specified&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	if options.audio then&lt;br /&gt;
		table.insert(footnote, string.format(&lt;br /&gt;
			&amp;#039;&amp;lt;span class=&amp;quot;noprint&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;mdash; &amp;#039; ..&lt;br /&gt;
			&amp;#039;[[File:Gnome-speakernotes.png|20px|(audio)]]&amp;#039; ..&lt;br /&gt;
			&amp;#039;[[Media:%s|Listen]] &amp;#039; ..&lt;br /&gt;
			&amp;#039;&amp;lt;small&amp;gt;([[:File:%s|file info]])&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&amp;#039;,&lt;br /&gt;
			options.audio, options.audio&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
	if options.src then&lt;br /&gt;
		local formatString&lt;br /&gt;
		if options.url then&lt;br /&gt;
			formatString = &amp;#039;&amp;lt;sup class=&amp;quot;noprint plainlinks&amp;quot;&amp;gt;[%s %s]&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			formatString = &amp;#039;&amp;lt;sup class=&amp;quot;noprint&amp;quot;&amp;gt;[[%s|%s]]&amp;lt;/sup&amp;gt;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(footnote, string.format(&lt;br /&gt;
			formatString,&lt;br /&gt;
			options.src,&lt;br /&gt;
			mw.text.nowiki(&amp;#039;[src]&amp;#039;)&lt;br /&gt;
		))&lt;br /&gt;
	elseif mw.title.getCurrentTitle().namespace == 0 then&lt;br /&gt;
		table.insert(footnote, makeCategoryLink(&amp;#039;Unsourced quotes&amp;#039;))&lt;br /&gt;
	end&lt;br /&gt;
	footnote = table.concat(footnote)&lt;br /&gt;
&lt;br /&gt;
	-- Return the assembled output.&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&amp;#039;&amp;lt;div class=&amp;quot;quote&amp;quot;&amp;gt;\n%s\n%s&amp;lt;/div&amp;gt;&amp;#039;,&lt;br /&gt;
		dialogue,&lt;br /&gt;
		footnote&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- Process arguments from the frame object.&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(frame:getParent().args) do&lt;br /&gt;
		v = v:match(&amp;#039;^%s*(.-)%s*$&amp;#039;) -- trim whitespace&lt;br /&gt;
		if v ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Sort the aguments into a usable format.&lt;br /&gt;
	local lines, options = {}, {}&lt;br /&gt;
	local function addLineData(line, lineKey, value)&lt;br /&gt;
		lines[line] = lines[line] or {}&lt;br /&gt;
		lines[line][lineKey] = value&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &amp;#039;number&amp;#039; then&lt;br /&gt;
			local line = math.ceil(k / 2)&lt;br /&gt;
			local lineKey = k % 2 == 1 and &amp;#039;speaker&amp;#039; or &amp;#039;text&amp;#039;&lt;br /&gt;
			addLineData(line, lineKey, v)&lt;br /&gt;
		else&lt;br /&gt;
			-- Assume k is a string.&lt;br /&gt;
			local line = k:match(&amp;#039;^line([1-9][0-9]*)$&amp;#039;)&lt;br /&gt;
			if line then&lt;br /&gt;
				addLineData(tonumber(line), &amp;#039;format&amp;#039;, v)&lt;br /&gt;
			else&lt;br /&gt;
				options[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Remove blanks from the lines data.&lt;br /&gt;
	local function removeBlanks(t)&lt;br /&gt;
		local ret, nums = {}, {}&lt;br /&gt;
		for num in pairs(t) do&lt;br /&gt;
			nums[#nums + 1] = num&lt;br /&gt;
		end&lt;br /&gt;
		for i, num in ipairs(nums) do&lt;br /&gt;
			ret[i] = t[num]&lt;br /&gt;
		end&lt;br /&gt;
		return ret&lt;br /&gt;
	end&lt;br /&gt;
	lines = removeBlanks(lines)&lt;br /&gt;
&lt;br /&gt;
	return p._main(lines, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Drl-admin</name></author>
	</entry>
</feed>