<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans">
	<id>https://unimage.wcnm.pw/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ADev%2FDialogue</id>
	<title>模块:Dev/Dialogue - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://unimage.wcnm.pw/index.php?action=history&amp;feed=atom&amp;title=%E6%A8%A1%E5%9D%97%3ADev%2FDialogue"/>
	<link rel="alternate" type="text/html" href="https://unimage.wcnm.pw/index.php?title=%E6%A8%A1%E5%9D%97:Dev/Dialogue&amp;action=history"/>
	<updated>2026-08-31T23:32:58Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://unimage.wcnm.pw/index.php?title=%E6%A8%A1%E5%9D%97:Dev/Dialogue&amp;diff=705&amp;oldid=prev</id>
		<title>WikiAdmin：​从 Fandom Developer Wiki 本地化全局模块，源修订 194365</title>
		<link rel="alternate" type="text/html" href="https://unimage.wcnm.pw/index.php?title=%E6%A8%A1%E5%9D%97:Dev/Dialogue&amp;diff=705&amp;oldid=prev"/>
		<updated>2026-08-31T12:54:32Z</updated>

		<summary type="html">&lt;p&gt;从 Fandom Developer Wiki 本地化全局模块，源修订 194365&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- 来源：https://dev.fandom.com/wiki/Module%3ADialogue&lt;br /&gt;
-- 许可：CC BY-SA，作者与修订记录见来源页面&lt;br /&gt;
--| Creates dialogue definition lists&lt;br /&gt;
--- For whatever reason, refuses to make blockquotes&lt;br /&gt;
--- &amp;lt;nowiki&amp;gt;&lt;br /&gt;
local Dialogue = {}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
-- Libraries and Globals&lt;br /&gt;
----&lt;br /&gt;
-- Parses invocation and template parameters, trims whitespace, and removes blanks.&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Dev/Arguments&amp;#039;).getArgs&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
-- Local Functions&lt;br /&gt;
----&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
  return function (frame)&lt;br /&gt;
    local args = getArgs(frame, {removeBlanks = false})&lt;br /&gt;
    return Dialogue[funcName](args)&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
-- Public Functions&lt;br /&gt;
----&lt;br /&gt;
--% Formats dialogue between multiple speakers&lt;br /&gt;
--- Intended to replace {{Dialogue}}.  &lt;br /&gt;
--- Syntax compliant with [[wikipedia:Template:Dialogue]] &lt;br /&gt;
--- with portability and citation modifications&lt;br /&gt;
--@ frame (table) Invokes the frame from {{Dialogue}}. See [[Template:Dialogue/doc]].&lt;br /&gt;
--: (string) HTML &amp;lt;dl /&amp;gt;&lt;br /&gt;
Dialogue.main = makeInvokeFunc(&amp;#039;dialogue&amp;#039;)&lt;br /&gt;
--% &amp;amp; crafts the Dialogue definition list&lt;br /&gt;
--@ args (table) Arguments passed from Module function call &amp;lt;code&amp;gt;[.main]&amp;lt;/code&amp;gt; or other Lua Modules&lt;br /&gt;
function Dialogue.dialogue (args)&lt;br /&gt;
  local block = mw.html.create(&amp;#039;dl&amp;#039;):addClass(&amp;#039;dialogue-wrapper&amp;#039;)&lt;br /&gt;
  for i,v in ipairs(args) do&lt;br /&gt;
    local next_param = i + 1&lt;br /&gt;
    local mood_line = next_param / 2&lt;br /&gt;
      if i == 1 then &lt;br /&gt;
        if v == &amp;#039;action&amp;#039; then&lt;br /&gt;
          block:tag(&amp;#039;dd&amp;#039;)&lt;br /&gt;
          :tag(&amp;#039;small&amp;#039;):attr(&amp;#039;data-dialogue&amp;#039;,&amp;#039;action&amp;#039;)&lt;br /&gt;
          :tag(&amp;#039;u&amp;#039;)&lt;br /&gt;
          :wikitext(&amp;#039;[&amp;#039;..args[next_param]..&amp;#039;]&amp;#039;)&lt;br /&gt;
          :done():done():done()&lt;br /&gt;
        else&lt;br /&gt;
          local speaker = &lt;br /&gt;
            (args[i] and args[args[i]]) &lt;br /&gt;
            and args[args[i]]&lt;br /&gt;
            or (&lt;br /&gt;
                type(args[i]) == &amp;#039;string&amp;#039; &lt;br /&gt;
                    and mw.text.trim(args[i]):len() &amp;gt; 0&lt;br /&gt;
                ) &lt;br /&gt;
              and args[i] &lt;br /&gt;
              or nil&lt;br /&gt;
          speaker = speaker and string.format(&amp;quot;&amp;#039;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;#039;&amp;quot;, speaker)&lt;br /&gt;
          local mood = args[&amp;#039;mood&amp;#039;..mood_line] or nil&lt;br /&gt;
          mood = mood and string.format(&amp;quot;&amp;amp;nbsp;&amp;#039;&amp;#039;(%s)&amp;#039;&amp;#039;&amp;quot;, mood)&lt;br /&gt;
          if speaker or mood then&lt;br /&gt;
            block:tag(&amp;#039;dt&amp;#039;)&lt;br /&gt;
            :wikitext(&lt;br /&gt;
              (&amp;#039;%s%s&amp;#039;):format( speaker or &amp;#039;&amp;#039;, mood or &amp;#039;&amp;#039;)&lt;br /&gt;
            ):done()&lt;br /&gt;
          end&lt;br /&gt;
          if args[next_param] then&lt;br /&gt;
            block:tag(&amp;#039;dd&amp;#039;):tag(&amp;#039;q&amp;#039;)&lt;br /&gt;
            :wikitext(args[next_param])&lt;br /&gt;
            :done():done()&lt;br /&gt;
          else&lt;br /&gt;
            block:tag(&amp;#039;dd&amp;#039;):wikitext(&amp;#039;...&amp;#039;):done()&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      elseif math.fmod(i, 2) == 1 then&lt;br /&gt;
        if v == &amp;#039;action&amp;#039; then&lt;br /&gt;
          block:tag(&amp;#039;dd&amp;#039;)&lt;br /&gt;
          :tag(&amp;#039;small&amp;#039;)&lt;br /&gt;
          :attr(&amp;#039;data-dialogue&amp;#039;,&amp;#039;action&amp;#039;)&lt;br /&gt;
          :tag(&amp;#039;u&amp;#039;)&lt;br /&gt;
          :wikitext(&amp;#039;[&amp;#039;..args[next_param]..&amp;#039;]&amp;#039;)&lt;br /&gt;
          :done():done():done()&lt;br /&gt;
        else&lt;br /&gt;
          local speaker = &lt;br /&gt;
            (args[i] and args[args[i]]) &lt;br /&gt;
            and args[args[i]]&lt;br /&gt;
            or (&lt;br /&gt;
                type(args[i]) == &amp;#039;string&amp;#039; &lt;br /&gt;
                    and mw.text.trim(args[i]):len() &amp;gt; 0&lt;br /&gt;
                ) &lt;br /&gt;
              and args[i] &lt;br /&gt;
              or nil&lt;br /&gt;
          speaker = speaker and string.format(&amp;quot;&amp;#039;&amp;#039;&amp;#039;%s&amp;#039;&amp;#039;&amp;#039;&amp;quot;, speaker)&lt;br /&gt;
          local mood = args[&amp;#039;mood&amp;#039;..mood_line] or nil&lt;br /&gt;
          mood = mood and string.format(&amp;quot;&amp;amp;nbsp;&amp;#039;&amp;#039;(%s)&amp;#039;&amp;#039;&amp;quot;, mood)&lt;br /&gt;
          if speaker or mood then&lt;br /&gt;
            block:tag(&amp;#039;dt&amp;#039;)&lt;br /&gt;
            :wikitext(&lt;br /&gt;
              (&amp;#039;%s%s&amp;#039;):format( speaker or &amp;#039;&amp;#039;, mood or &amp;#039;&amp;#039;)&lt;br /&gt;
            )&lt;br /&gt;
            :done()&lt;br /&gt;
          end&lt;br /&gt;
          if args[next_param] ~= &amp;#039;&amp;#039; then&lt;br /&gt;
            block:tag(&amp;#039;dd&amp;#039;):tag(&amp;#039;q&amp;#039;)&lt;br /&gt;
            :wikitext(args[next_param])&lt;br /&gt;
            :done():done()&lt;br /&gt;
          else&lt;br /&gt;
            block:tag(&amp;#039;dd&amp;#039;):wikitext(&amp;#039;...&amp;#039;):done()&lt;br /&gt;
          end&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
  end&lt;br /&gt;
  block:done()&lt;br /&gt;
  if args[&amp;#039;cite&amp;#039;] then&lt;br /&gt;
    block:tag(&amp;#039;cite&amp;#039;):wikitext(string.format(&amp;quot;— %s&amp;quot;, args[&amp;#039;cite&amp;#039;])):done()&lt;br /&gt;
  end&lt;br /&gt;
  return tostring(block)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
-- Output&lt;br /&gt;
----&lt;br /&gt;
return Dialogue&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>
	</entry>
</feed>