<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://secrets.warcraftwatch.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AProfessionTable</id>
	<title>Module:ProfessionTable - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://secrets.warcraftwatch.com/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AProfessionTable"/>
	<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:ProfessionTable&amp;action=history"/>
	<updated>2026-05-06T19:55:27Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://secrets.warcraftwatch.com/w/index.php?title=Module:ProfessionTable&amp;diff=7213&amp;oldid=prev</id>
		<title>imported&gt;Dragnog at 13:03, 8 April 2023</title>
		<link rel="alternate" type="text/html" href="https://secrets.warcraftwatch.com/w/index.php?title=Module:ProfessionTable&amp;diff=7213&amp;oldid=prev"/>
		<updated>2023-04-08T13:03:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local p = {}&lt;br /&gt;
local data = mw.loadData(&amp;#039;Module:ProfessionTable/data&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local isGathering = {&lt;br /&gt;
	Herbalism = true,&lt;br /&gt;
	Skinning = true,&lt;br /&gt;
	Mining = true,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local recipeHeader = [=[&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;darktable zebra plainlinks recipetable&amp;quot;&lt;br /&gt;
|+ %s&lt;br /&gt;
|-&lt;br /&gt;
! [[Recipe]]&lt;br /&gt;
! [[Materials]]&lt;br /&gt;
! Optional&lt;br /&gt;
! class=&amp;quot;skill-orange&amp;quot; | Skill&lt;br /&gt;
! class=&amp;quot;skill-yellow&amp;quot; | G.&lt;br /&gt;
! class=&amp;quot;skill-green&amp;quot; | G.&lt;br /&gt;
! class=&amp;quot;skill-gray&amp;quot; | G.&lt;br /&gt;
! Source&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local gatherHeader = [=[&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;darktable zebra plainlinks gathertable&amp;quot;&lt;br /&gt;
|+ %s&lt;br /&gt;
|-&lt;br /&gt;
! [[Recipe]]&lt;br /&gt;
! class=&amp;quot;skill-orange&amp;quot; | Skill&lt;br /&gt;
! class=&amp;quot;skill-yellow&amp;quot; | G.&lt;br /&gt;
! class=&amp;quot;skill-green&amp;quot; | G.&lt;br /&gt;
! class=&amp;quot;skill-gray&amp;quot; | G.&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local footer = [=[&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local rowSpacer = [=[&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ]=]  -- backwards compatibility {{RecipeTable}}&lt;br /&gt;
&lt;br /&gt;
local pattern = &amp;quot;#using:%s&amp;quot;								-- #using:Transmute: Iron to Gold		-- &lt;br /&gt;
--local patternProf = &amp;quot;#using:%s#%s&amp;quot;&lt;br /&gt;
local patternProf = &amp;quot;#using:%s&amp;quot;-- #using:Minor Mana Potion#Alchemy&lt;br /&gt;
&lt;br /&gt;
local function append(tableData, frame, v, tpl, profession)&lt;br /&gt;
	table.insert(tableData, rowSpacer)&lt;br /&gt;
	if (type(v)==&amp;quot;string&amp;quot;) then&lt;br /&gt;
		if (v:find(&amp;quot;:&amp;quot;)) then&lt;br /&gt;
			table.insert(tableData, frame:callParserFunction(pattern:format(v), tpl))&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(tableData, frame:callParserFunction(patternProf:format(v, profession), tpl))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if(v[1]:find(&amp;quot;:&amp;quot;)) then&lt;br /&gt;
			table.insert(tableData,frame:callParserFunction(pattern:format(v[1], profession), {&lt;br /&gt;
				tpl, &lt;br /&gt;
				[&amp;quot;faction&amp;quot;]=v.faction,	-- nil or true&lt;br /&gt;
				[&amp;quot;ranks&amp;quot;]=v.ranks,		-- nil or true&lt;br /&gt;
			}))&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(tableData, frame:callParserFunction(patternProf:format(v[1], profession), {&lt;br /&gt;
				tpl,&lt;br /&gt;
				[&amp;quot;faction&amp;quot;]=v.faction,	-- nil or true&lt;br /&gt;
				[&amp;quot;ranks&amp;quot;]=v.ranks,		-- nil or true&lt;br /&gt;
			}))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p.GenerateTable(frame)&lt;br /&gt;
	local args = getArgs(frame, {wrappers = &amp;#039;Template:ProfessionTable&amp;#039;})&lt;br /&gt;
	local profession, expansion = args.profession, args.expansion&lt;br /&gt;
&lt;br /&gt;
	local info&lt;br /&gt;
	if data[profession] and data[profession][expansion] then&lt;br /&gt;
		info = data[profession][expansion]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local header, rowtpl = recipeHeader, &amp;quot;RecipeTable/RecipeRow&amp;quot;&lt;br /&gt;
	if isGathering[profession] then&lt;br /&gt;
		-- one fewer column&lt;br /&gt;
		header, rowtpl = gatherHeader, &amp;quot;RecipeTable/GatherRow&amp;quot; -- placeholder; this doesn&amp;#039;t exist yet&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if info then&lt;br /&gt;
		local tableData = {}&lt;br /&gt;
		&lt;br /&gt;
		-- table.sort(data[args.category]) -- Would it be possible to sort once (when adding new info) vice every page view?&lt;br /&gt;
		table.insert(tableData, frame:expandTemplate{ title = &amp;#039;i-note&amp;#039;, args = {data.lastUpdate}})&lt;br /&gt;
&lt;br /&gt;
		-- Anything that isn&amp;#039;t in a subcategory will be listed in a table.&lt;br /&gt;
		if (info[1]) then&lt;br /&gt;
			table.insert(tableData,  header:format(&amp;quot;&amp;quot;))&lt;br /&gt;
			for k,v in ipairs(info) do&lt;br /&gt;
				append(tableData, frame, v, rowtpl, profession)&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(tableData, footer)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		-- Subcategories next, each with their own sortable table.&lt;br /&gt;
		for k,v in pairs(info) do&lt;br /&gt;
			if (type(k) == &amp;quot;string&amp;quot;) then&lt;br /&gt;
				table.insert(tableData, header:format(k))&lt;br /&gt;
				for k2,v2 in ipairs(v) do&lt;br /&gt;
					append(tableData, frame, v2, rowtpl, profession)&lt;br /&gt;
				end&lt;br /&gt;
				table.insert(tableData, footer)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return table.concat(tableData)	&lt;br /&gt;
	else&lt;br /&gt;
		return args.expansion .. &amp;quot; does not exist in [[Module:ProfessionTable/data]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Dragnog</name></author>
	</entry>
</feed>