<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=Module%3AScript_doc_auto</id>
	<title>Module:Script doc auto - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://70.231.62.181/index.php?action=history&amp;feed=atom&amp;title=Module%3AScript_doc_auto"/>
	<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=Module:Script_doc_auto&amp;action=history"/>
	<updated>2026-07-04T21:28:25Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://70.231.62.181/index.php?title=Module:Script_doc_auto&amp;diff=21067544&amp;oldid=prev</id>
		<title>imported&gt;Ahecht: Support .json and .vue files</title>
		<link rel="alternate" type="text/html" href="http://70.231.62.181/index.php?title=Module:Script_doc_auto&amp;diff=21067544&amp;oldid=prev"/>
		<updated>2025-08-14T15:32:57Z</updated>

		<summary type="html">&lt;p&gt;Support .json and .vue files&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local MessageBox = require(&amp;#039;Module:Message box&amp;#039;)&lt;br /&gt;
local Gadgets = require(&amp;#039;Module:Gadgets&amp;#039;)&lt;br /&gt;
local Arguments = require(&amp;#039;Module:Arguments&amp;#039;)&lt;br /&gt;
local TableTools = require(&amp;#039;Module:TableTools&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
p.main = function(frame)&lt;br /&gt;
	local args = Arguments.getArgs(frame)&lt;br /&gt;
	return p.core(args.page or mw.title.getCurrentTitle().fullText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.core = function(page)&lt;br /&gt;
	local text = &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
	local content = mw.title.new(page).content&lt;br /&gt;
	if content then&lt;br /&gt;
		local result = content:match(&amp;quot;/%* ({{mfd.-}})&amp;quot;)&lt;br /&gt;
		if result then&lt;br /&gt;
			text = text .. mw.getCurrentFrame():preprocess(result)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local len = page:len()&lt;br /&gt;
	if len &amp;lt; 4 then&lt;br /&gt;
		-- Too short page name, do nothing more&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p.makeMessage(page)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local skins = TableTools.listToSet({ &lt;br /&gt;
	&amp;#039;common&amp;#039;, &amp;#039;vector-2022&amp;#039;, &amp;#039;vector&amp;#039;, &amp;#039;timeless&amp;#039;, &amp;#039;minerva&amp;#039;, &amp;#039;monobook&amp;#039;, &amp;#039;modern&amp;#039;, &amp;#039;cologneblue&amp;#039; &lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
p.gadget_text = function(name, repo)&lt;br /&gt;
	local lang = mw.getContentLanguage()&lt;br /&gt;
	local options = repo[name].options&lt;br /&gt;
	local dependents = {}&lt;br /&gt;
	if options.hidden ~= nil then&lt;br /&gt;
		-- Find dependents&lt;br /&gt;
		for n, c in pairs(repo) do&lt;br /&gt;
			local deps = c.options.dependencies and &lt;br /&gt;
				TableTools.listToSet(mw.text.split(c.options.dependencies, &amp;#039;,&amp;#039;, false)) or {}&lt;br /&gt;
			local peers = c.options.peers and &lt;br /&gt;
				TableTools.listToSet(mw.text.split(c.options.peers, &amp;#039;,&amp;#039;, false)) or {}&lt;br /&gt;
			if deps[&amp;#039;ext.gadget.&amp;#039;..name] ~= nil or peers[name] ~= nil then &lt;br /&gt;
				table.insert(dependents, &amp;#039;[[Special:Gadgets#gadget-&amp;#039;..n..&amp;#039;|&amp;#039;..n..&amp;#039;]]&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local usage = Gadgets.get_usage(name)&lt;br /&gt;
	if usage == -1 then&lt;br /&gt;
		usage = &amp;quot;an unknown number of&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		usage = lang:formatNum(usage)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;This page is loaded as a part of the &amp;#039; ..&lt;br /&gt;
		&amp;#039;[[Special:Gadgets#gadget-&amp;#039;..name..&amp;#039;|&amp;#039;..name..&amp;#039;]] gadget&amp;#039; ..&lt;br /&gt;
		(options.hidden ~= nil and &amp;#039;, a hidden gadget&amp;#039;..&lt;br /&gt;
			(#dependents &amp;gt; 0 and &amp;#039; used by &amp;#039;..mw.text.listToText(dependents)..&amp;#039;.&amp;#039; or &amp;#039;.&amp;#039;) or &lt;br /&gt;
		(options.default ~= nil and &amp;#039;, &amp;lt;b&amp;gt;which is enabled by default&amp;lt;/b&amp;gt;.&amp;#039; or &lt;br /&gt;
		(&amp;#039;, used by &amp;#039;..usage..&amp;#039; users. &amp;#039;)))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.makeMessage = function(page)&lt;br /&gt;
	local pageparts = mw.text.split(page, &amp;#039;.&amp;#039;, true)&lt;br /&gt;
	local pagetype = &amp;#039;.&amp;#039; .. pageparts[#pageparts]&lt;br /&gt;
	&lt;br /&gt;
	local pagetypes = TableTools.listToSet({ &lt;br /&gt;
		&amp;#039;.js&amp;#039;, &amp;#039;.css&amp;#039;, &amp;#039;.json&amp;#039;, &amp;#039;.vue&amp;#039;&lt;br /&gt;
	})&lt;br /&gt;
	&lt;br /&gt;
	if #pageparts&amp;lt;2 or pagetypes[pagetype] == nil then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function listSisters(title, intro)&lt;br /&gt;
		local output = {intro}&lt;br /&gt;
		for sistertype in pairs(pagetypes) do&lt;br /&gt;
			if sistertype ~= pagetype then&lt;br /&gt;
				local sisterpage = mw.title.new(title .. sistertype)&lt;br /&gt;
				if sisterpage.exists then&lt;br /&gt;
					table.insert(output, &lt;br /&gt;
						&amp;#039;an accompanying &amp;#039;..sistertype..&amp;#039; page at [[&amp;#039;..sisterpage.fullText..&amp;#039;]]&amp;#039;&lt;br /&gt;
					)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		--listToText with Oxford commas&lt;br /&gt;
		return mw.text.listToText(output, &amp;#039;, &amp;#039;, (#output &amp;gt; 2) and &amp;#039;, and &amp;#039; or &amp;#039; and &amp;#039;) .. &amp;#039;.&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local text = &amp;#039;&amp;#039;&lt;br /&gt;
	local basepage = mw.title.new(page:sub(0, -1 * (#pagetype + 1)))&lt;br /&gt;
	&lt;br /&gt;
	if basepage.namespace == 2 then&lt;br /&gt;
		if skins[basepage.subpageText] ~= nil and (pagetype == &amp;#039;.js&amp;#039; or pagetype == &amp;#039;.css&amp;#039;) then&lt;br /&gt;
			-- We are on a user skin file&lt;br /&gt;
			local sistertype = (pagetype == &amp;#039;.js&amp;#039;) and &amp;#039;.css&amp;#039; or &amp;#039;.js&amp;#039;&lt;br /&gt;
			local sisterpage = mw.title.new(basepage.fullText .. sistertype)&lt;br /&gt;
			text = &amp;#039;The accompanying &amp;#039;..sistertype..&amp;#039; page for this skin &amp;#039;..&lt;br /&gt;
				(sisterpage.exists and &amp;#039;is&amp;#039; or &amp;#039;can be added&amp;#039;)..&amp;#039; at [[&amp;#039;..sisterpage.fullText..&amp;#039;]].&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			-- We are on some script page, not a user skin file&lt;br /&gt;
			if basepage.exists then&lt;br /&gt;
				text = listSisters(basepage.fullText, &amp;#039;This [[Wikipedia:User scripts|user script]] seems to have a documentation page at [[&amp;#039;..basepage.fullText..&amp;#039;]]&amp;#039;)&lt;br /&gt;
			else&lt;br /&gt;
				text = listSisters(basepage.fullText)&lt;br /&gt;
				text = &amp;#039;Documentation for this [[Wikipedia:User scripts|user script]] can be added at [[&amp;#039;..basepage.fullText..&amp;#039;]]&amp;#039; .. &lt;br /&gt;
					((#text &amp;gt; 1) and &amp;#039;. This user script seems to have &amp;#039; or &amp;#039;&amp;#039;) ..&lt;br /&gt;
					text&lt;br /&gt;
			end	&lt;br /&gt;
		end&lt;br /&gt;
	elseif basepage.namespace == 8 then&lt;br /&gt;
		if basepage.text:find(&amp;#039;^Gadget-&amp;#039;) ~= nil then&lt;br /&gt;
			local gadgetRepo = Gadgets.parse()&lt;br /&gt;
			local shortName = basepage.text:gsub(&amp;#039;^Gadget%-&amp;#039;, &amp;#039;&amp;#039;) .. pagetype&lt;br /&gt;
			for name, config in pairs(gadgetRepo) do&lt;br /&gt;
				if TableTools.inArray(config.pages, shortName) then&lt;br /&gt;
					text = text .. p.gadget_text(name, gadgetRepo)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if text ~= &amp;#039;&amp;#039; then&lt;br /&gt;
				local sisterText = listSisters(basepage.fullText)&lt;br /&gt;
				text = text .. &lt;br /&gt;
					((#sisterText &amp;gt; 1) and (&amp;#039; There seems to be &amp;#039; .. sisterText) or &amp;#039;&amp;#039;) ..&lt;br /&gt;
					&amp;#039;&amp;lt;br&amp;gt;&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if text ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		return mw.getCurrentFrame():extensionTag{&lt;br /&gt;
			name = &amp;#039;templatestyles&amp;#039;, args = { src = &amp;#039;Module:Script doc auto/styles.css&amp;#039; }&lt;br /&gt;
		} .. MessageBox.main(&amp;#039;fmbox&amp;#039;, {&lt;br /&gt;
			class = &amp;#039;script-doc-auto-box&amp;#039;,&lt;br /&gt;
			id = &amp;#039;mw-script-doc&amp;#039;,&lt;br /&gt;
			type = &amp;#039;system&amp;#039;,&lt;br /&gt;
			image = &amp;#039;[[File:Template-info.svg|43x40px]]&amp;#039;,&lt;br /&gt;
			text = text&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Ahecht</name></author>
	</entry>
</feed>