Module:Craft Usage: Difference between revisions
Created page with "local p = {} local recipeParams = { station = 'station', time = 'time', output = 'output', yield = 'yield', } local labels = { craftTitle = 'Crafting', craftInputText = 'The item can be used in the following craft recipes', craftOutputText = 'The item can be created in the following craft recipes', incineratorTitle = 'Incinerator', incineratorInputText = 'The item can be used in the following incinerator recipes', incineratorOutputText = 'The item can be c..." |
mNo edit summary |
||
| (One intermediate revision by the same user not shown) | |||
| Line 22: | Line 22: | ||
waterTitle = 'Water Source', | waterTitle = 'Water Source', | ||
waterInputText = 'The item can be used at a water source to gain the following items', | waterInputText = 'The item can be used at a water source to gain the following items', | ||
waterOutputText = 'The item can be gained at a water source by using | waterOutputText = 'The item can be gained at a water source by using the following items', | ||
} | } | ||
function split(str, delimiter) | function split(str, delimiter) | ||
local returnTable = {} | local returnTable = {} | ||
for k, v in string.gmatch(str, "([^" .. delimiter .. "]+)") | for k, v in string.gmatch(str, "([^" .. delimiter .. "]+)") do | ||
returnTable[#returnTable+1] = k | returnTable[#returnTable+1] = k | ||
end | end | ||
| Line 41: | Line 40: | ||
if not args.item then | if not args.item then | ||
args.item = mw.title.getCurrentTitle().text | args.item = mw.title.getCurrentTitle().text | ||
end | end | ||
local title = mw.title.new('Recipes') | local title = mw.title.new('Recipes') | ||
local content = title:getContent() | local content = title:getContent() | ||
if not content then | |||
return '<div class="error">Strona Recipes nie istnieje.</div>' | |||
end | |||
local recipeStringResult = '' | local recipeStringResult = '' | ||
| Line 67: | Line 70: | ||
local outputs = {} | local outputs = {} | ||
for propertyStringKey, propertyString in pairs(split(recipe, '|')) do | for propertyStringKey, propertyString in pairs(split(recipe, '|')) do | ||
if not (propertyString | if not (propertyString == 'Recipe') then | ||
local propertySplitTable = split(propertyString, '=') | local propertySplitTable = split(propertyString, '=') | ||
if not recipeParams[propertySplitTable[1]] then | if not recipeParams[propertySplitTable[1]] then | ||
inputText = inputText..'[['..propertySplitTable[1]..']]'..' x '..propertySplitTable[2]..'</ | inputText = inputText..'[['..propertySplitTable[1]..']]'..' x '..propertySplitTable[2]..'<br />' | ||
inputs[propertySplitTable[1]] = true | inputs[propertySplitTable[1]] = true | ||
else | else | ||
recipeTable[propertySplitTable[1]] = propertySplitTable[2] | recipeTable[propertySplitTable[1]] = propertySplitTable[2] | ||
if propertySplitTable[1] == 'output' then | if propertySplitTable[1] == 'output' then | ||
outputs[propertySplitTable[2]] = true | outputs[propertySplitTable[2]] = true | ||
| Line 86: | Line 89: | ||
recipeTable['inputText'] = inputText | recipeTable['inputText'] = inputText | ||
if recipeTable.station == 'Incinerator' then | if recipeTable.station == 'Incinerator' then | ||
typeKey = 'incineratorRecipes' | typeKey = 'incineratorRecipes' | ||
| Line 101: | Line 104: | ||
end | end | ||
end | end | ||
local wrapper = mw.html.create('div') | local wrapper = mw.html.create('div') | ||
local function buildTable(wrapper, titleText, labelText, recipeList, showStation, showTime) | |||
if not recipeList[1] then return end | |||
local section = wrapper:tag('div') | |||
local | section:tag('h3'):tag('span'):addClass('mw-headline'):wikitext(titleText) | ||
section:tag('p'):wikitext(labelText) | |||
-- używamy wikitable zamiast fandom-table | |||
local _table = section:tag('table'):addClass('wikitable sortable') | |||
local _table = | |||
local tr = _table:tag('tr') | local tr = _table:tag('tr') | ||
tr:tag('th'):wikitext('Ingredients') | tr:tag('th'):wikitext('Ingredients') | ||
if showStation then tr:tag('th'):wikitext('Station') end | |||
if showTime then tr:tag('th'):wikitext('Time') end | |||
tr:tag('th'):wikitext('Output') | tr:tag('th'):wikitext('Output') | ||
for | for _, recipe in pairs(recipeList) do | ||
if recipe.output then | if recipe.output then | ||
local | local row = _table:tag('tr') | ||
row:tag('td'):wikitext(recipe.inputText or '-') | |||
if showStation then row:tag('td'):wikitext(recipe.station and '[['..recipe.station..']]' or '-') end | |||
if showTime then row:tag('td'):wikitext(recipe.time or '-') end | |||
row:tag('td'):wikitext('[['..recipe.output..']]'..' x '..(recipe.yield or 1)) | |||
end | end | ||
end | end | ||
end | end | ||
local mode = args.mode or 'output' | |||
buildTable(wrapper, labels.craftTitle, | |||
mode == 'input' and labels.craftInputText or labels.craftOutputText, | |||
recipes.craftRecipes, true, true) | |||
buildTable(wrapper, labels.incineratorTitle, | |||
mode == 'input' and labels.incineratorInputText or labels.incineratorOutputText, | |||
recipes.incineratorRecipes, false, false) | |||
buildTable(wrapper, labels.cookingTitle, | |||
mode == 'input' and labels.cookingInputText or labels.cookingOutputText, | |||
recipes.cookingRecipes, false, false) | |||
buildTable(wrapper, labels.farmingTitle, | |||
mode == 'input' and labels.farmingInputText or labels.farmingOutputText, | |||
recipes.farmingRecipes, false, false) | |||
buildTable(wrapper, labels.waterTitle, | |||
mode == 'input' and labels.waterInputText or labels.waterOutputText, | |||
recipes.waterRecipes, false, false) | |||
return wrapper | return wrapper | ||