Module:Miscellaneous: Difference between revisions
Jump to navigation
Jump to search
>OmegaK2 No edit summary |
>OmegaK2 (Updated based on feedback; added range 0-4 for the columns, filtration/customation columns added, removed the direct_link column) |
||
Line 39: | Line 39: | ||
:tag('th') | :tag('th') | ||
:attr('rowspan', 2) | :attr('rowspan', 2) | ||
:wikitext(' | :wikitext('Release') | ||
:done() | :done() | ||
:tag('th') | :tag('th') | ||
:attr('colspan', 8) | :attr('colspan', 8) | ||
:wikitext('Features') | :wikitext('Ingame Features') | ||
:done() | :done() | ||
:tag('th') | :tag('th') | ||
:attr(' | :attr('colspan', 1) | ||
:wikitext(' | :wikitext('Other Features') | ||
:done() | |||
:tag('th') | |||
:attr('colspan', 2) | |||
:wikitext('Filtration Support') | |||
:done() | :done() | ||
:done() | :done() | ||
:tag('tr') | :tag('tr') | ||
Line 75: | Line 80: | ||
:wikitext('Crafting') | :wikitext('Crafting') | ||
:done() | :done() | ||
-- Other Features | |||
:tag('th') | |||
:wikitext('Customizable') | |||
:done() | |||
-- Filtration | |||
:tag('th') | |||
:wikitext('General') | |||
:done() | |||
:tag('th') | |||
:wikitext('Themes') | |||
:done() | |||
:done() | :done() | ||
:wikitext(g_args.rows) | :wikitext(g_args.rows) | ||
Line 85: | Line 101: | ||
-- | -- | ||
local filter_list_required_args = xtable:new({'name', 'release_link', 'author', ' | local filter_list_required_args = xtable:new({'name', 'release_link', 'author', 'release', 'colour', 'border', 'font_size', 'item_hiding', 'leveling', 'endgame', 'vendor_recipes', 'crafting'}) | ||
local | local filter_list_range_args = xtable:new({'colour', 'border', 'font_size', 'item_hiding', 'leveling', 'endgame', 'vendor_recipes', 'crafting'}) | ||
local filter_list_range_values = xtable:new({'no', 'minor', 'partial', 'major', 'yes'}) | |||
local | |||
local filter_list_yes_no_args = xtable:new({'customization', 'filtration_general', 'filtration_themes'}) | |||
local filter_list_yes_no = xtable:new({'no', 'partial', 'yes', 'unknown'}) | |||
-- Test: =p.filter_list_row{name='a', release_link='http://google.de', author='Mario', author_contact='No idea', direct_link='http://google.de', colour='yes', border='yes', font_size='no', item_hiding='yes', leveling= | -- Test: =p.filter_list{rows=p.filter_list_row{name='a', release_link='http://google.de', author='Mario', author_contact='No idea', direct_link='http://google.de', colour='yes', border='yes', font_size='no', item_hiding='yes', leveling=0, endgame=4, vendor_recipes='partial', crafting='no', release='2015'}} | ||
-- =p | |||
function p.filter_list_row(frame) | function p.filter_list_row(frame) | ||
g_args = getArgs(frame, { | g_args = getArgs(frame, { | ||
Line 109: | Line 126: | ||
end | end | ||
for _, arg in ipairs( | g_args.filtration_general = g_args.filtration_general or 'unknown' | ||
g_args.filtration_themes = g_args.filtration_themes or 'unknown' | |||
g_args.customization = g_args.customization or 'unknown' | |||
-- Checking & formatting args | |||
for _, arg in ipairs(filter_list_range_args) do | |||
local val = g_args[arg] | local val = g_args[arg] | ||
if | local index = filter_list_range_values:index(val) | ||
error('Argument ' .. | if index then | ||
g_args[arg] = index | |||
else | |||
index = util.cast.number(val) | |||
if index ~= nil and index >= 0 and index < filter_list_range_values:size() then | |||
-- Lua starts counting at 1 | |||
g_args[arg] = index+1 | |||
else | |||
error('Argument ' .. arg .. ' requires one of the following arguments: ' .. table.concat(filter_list_range_values, ' ')) | |||
end | |||
end | end | ||
end | end | ||
for _, arg in ipairs( | for _, arg in ipairs(filter_list_yes_no_args) do | ||
local val = g_args[arg] | local val = g_args[arg] | ||
if not | if not filter_list_yes_no:contains(val) then | ||
error('Argument ' .. | error('Argument ' .. arg .. ' requires one of the following arguments: ' .. table.concat(filter_list_yes_no, ' ')) | ||
end | end | ||
end | end | ||
Line 134: | Line 166: | ||
:done() | :done() | ||
:tag('td') | :tag('td') | ||
:wikitext(g_args. | :wikitext(g_args.release) | ||
:done() | :done() | ||
for _, arg in ipairs( | -- Basic Features | ||
for _, arg in ipairs(filter_list_range_args) do | |||
local index = g_args[arg] | |||
local text = filter_list_range_values[index] or '' | |||
local note = g_args[arg .. '_note'] | local note = g_args[arg .. '_note'] | ||
local ref = '' | local ref = '' | ||
Line 153: | Line 180: | ||
tblrow | tblrow | ||
:tag('td') | :tag('td') | ||
:attr('class', 'table-cell-' .. | :attr('class', 'table-cell-' .. text ) | ||
:wikitext( | :attr('data-sort-value', index) | ||
:wikitext(text .. ref) | |||
:done() | :done() | ||
end | end | ||
tblrow | -- Other Features | ||
for _, arg in ipairs(filter_list_yes_no_args) do | |||
local val = g_args[arg] | |||
tblrow | |||
:tag('td') | |||
:attr('class', 'table-cell-' .. val) | |||
:attr('data-sort-value', '' .. filter_list_yes_no:index(val)) | |||
:wikitext(val) | |||
:done() | |||
end | |||
return tostring(tblrow) | return tostring(tblrow) | ||
end | end | ||
return p | return p |
Revision as of 18:54, 26 July 2015
Overview
Module for implementing various templates in lua that are not big/complex enough to warrent their own module.
List of currently implemented templates
The above documentation is transcluded from Module:Miscellaneous/doc.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
Editors can experiment in this module's sandbox and testcases pages.
Subpages of this module.
--[[
Module for implementing miscellaneous templates in lua.
Mostly exists here so we don't have hundred of module pages for templates that don't have a lot of code.
If a template requires a *lot* of coding consider moving it into it's own lua module.
]]--
local xtable = require('Module:Table')
local util = require('Module:Util')
local getArgs = require('Module:Arguments').getArgs
local m_item = require('Module:Item')
local p = {}
local g_frame, g_args
--
-- Template: ItemFilterList
--
function p.filter_list(frame)
g_args = getArgs(frame, {
parentFirst = true
})
if frame == nil or type(frame) == 'table' then
frame = mw.getCurrentFrame()
end
tbl = mw.html.create('table')
tbl
:attr('class', 'wikitable sortable')
:tag('tr')
:tag('th')
:attr('rowspan', 2)
:wikitext('Name')
:done()
:tag('th')
:attr('rowspan', 2)
:wikitext('Author')
:done()
:tag('th')
:attr('rowspan', 2)
:wikitext('Release')
:done()
:tag('th')
:attr('colspan', 8)
:wikitext('Ingame Features')
:done()
:tag('th')
:attr('colspan', 1)
:wikitext('Other Features')
:done()
:tag('th')
:attr('colspan', 2)
:wikitext('Filtration Support')
:done()
:done()
:tag('tr')
:tag('th')
:wikitext('Colours')
:done()
:tag('th')
:wikitext('Borders')
:done()
:tag('th')
:wikitext('Font<br>Size')
:done()
:tag('th')
:wikitext('Item<br>Hiding')
:done()
:tag('th')
:wikitext('Leveling')
:done()
:tag('th')
:wikitext('Endgame')
:done()
:tag('th')
:wikitext('Vendor<br>recipes')
:done()
:tag('th')
:wikitext('Crafting')
:done()
-- Other Features
:tag('th')
:wikitext('Customizable')
:done()
-- Filtration
:tag('th')
:wikitext('General')
:done()
:tag('th')
:wikitext('Themes')
:done()
:done()
:wikitext(g_args.rows)
return tostring(tbl) .. frame:extensionTag{ name = 'references', content = '', args = {group='note'}}
end
--
-- Template: ItemFilterListRow
--
local filter_list_required_args = xtable:new({'name', 'release_link', 'author', 'release', 'colour', 'border', 'font_size', 'item_hiding', 'leveling', 'endgame', 'vendor_recipes', 'crafting'})
local filter_list_range_args = xtable:new({'colour', 'border', 'font_size', 'item_hiding', 'leveling', 'endgame', 'vendor_recipes', 'crafting'})
local filter_list_range_values = xtable:new({'no', 'minor', 'partial', 'major', 'yes'})
local filter_list_yes_no_args = xtable:new({'customization', 'filtration_general', 'filtration_themes'})
local filter_list_yes_no = xtable:new({'no', 'partial', 'yes', 'unknown'})
-- Test: =p.filter_list{rows=p.filter_list_row{name='a', release_link='http://google.de', author='Mario', author_contact='No idea', direct_link='http://google.de', colour='yes', border='yes', font_size='no', item_hiding='yes', leveling=0, endgame=4, vendor_recipes='partial', crafting='no', release='2015'}}
-- =p
function p.filter_list_row(frame)
g_args = getArgs(frame, {
parentFirst = true
})
if frame == nil or type(frame) == 'table' then
frame = mw.getCurrentFrame()
end
-- Checking args
for _, arg in ipairs(filter_list_required_args) do
if g_args[arg] == nil then
error('Required argument ' .. arg .. ' is missing')
end
end
g_args.filtration_general = g_args.filtration_general or 'unknown'
g_args.filtration_themes = g_args.filtration_themes or 'unknown'
g_args.customization = g_args.customization or 'unknown'
-- Checking & formatting args
for _, arg in ipairs(filter_list_range_args) do
local val = g_args[arg]
local index = filter_list_range_values:index(val)
if index then
g_args[arg] = index
else
index = util.cast.number(val)
if index ~= nil and index >= 0 and index < filter_list_range_values:size() then
-- Lua starts counting at 1
g_args[arg] = index+1
else
error('Argument ' .. arg .. ' requires one of the following arguments: ' .. table.concat(filter_list_range_values, ' '))
end
end
end
for _, arg in ipairs(filter_list_yes_no_args) do
local val = g_args[arg]
if not filter_list_yes_no:contains(val) then
error('Argument ' .. arg .. ' requires one of the following arguments: ' .. table.concat(filter_list_yes_no, ' '))
end
end
-- Output
tblrow = mw.html.create('tr')
tblrow
:tag('td')
:wikitext('[' .. g_args.release_link .. ' ' .. g_args.name .. ']')
:done()
:tag('td')
:wikitext(g_args.author)
:done()
:tag('td')
:wikitext(g_args.release)
:done()
-- Basic Features
for _, arg in ipairs(filter_list_range_args) do
local index = g_args[arg]
local text = filter_list_range_values[index] or ''
local note = g_args[arg .. '_note']
local ref = ''
if note ~= nil then
ref = frame:extensionTag{ name = 'ref', content = note, args = {group='note'}}
end
tblrow
:tag('td')
:attr('class', 'table-cell-' .. text )
:attr('data-sort-value', index)
:wikitext(text .. ref)
:done()
end
-- Other Features
for _, arg in ipairs(filter_list_yes_no_args) do
local val = g_args[arg]
tblrow
:tag('td')
:attr('class', 'table-cell-' .. val)
:attr('data-sort-value', '' .. filter_list_yes_no:index(val))
:wikitext(val)
:done()
end
return tostring(tblrow)
end
return p