Modul:Navbox person: Unterschied zwischen den Versionen
Noémi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „local p = {} local YesNo = require( 'Module:Yesno' ) processArguments = function ( args ) local processedArguments = {} if args.clan and string.length(ar…“) |
Noémi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
local p = {} | local p = {} | ||
local YesNo = require( 'Module:Yesno' ) | local YesNo = require( 'Module:Yesno' ) | ||
getArgs = function ( frame ) | |||
return require('Module:Arguments').getArgs( frame ) | |||
end | |||
processArguments = function ( args ) | processArguments = function ( args ) | ||
| Zeile 37: | Zeile 42: | ||
end | end | ||
processData = function ( data, | processData = function ( data, clan ) | ||
local processedData = { | |||
clan = {}, | |||
coterie = {}, | |||
all = {}, | |||
} | |||
for _, row in pairs(data) do | |||
if clan and clan == data.clan then | |||
table.insert(processedData.clan, data.name) | |||
end | |||
if data.coterie then | |||
table.insert(processedData.coterie, data.name) | |||
end | |||
if not processedData[data.type] then | |||
processedData[data.type] = {} | |||
end | |||
table.insert(processedData[data.type], data.name) | |||
table.insert(processedData.all, data.name) | |||
end | |||
end | end | ||
displayNavbox = function( data, coterie ) | |||
local html = mw.html.create('') | |||
end | |||
function p.main(frame) | function p.main(frame) | ||
| Zeile 47: | Zeile 74: | ||
local data = p.getData() | local data = p.getData() | ||
data = p.processData( data, args ) | data = p.processData( data, args.clan ) | ||
end | end | ||
return p | return p | ||
Version vom 3. September 2021, 08:28 Uhr
| This module depends on the following other modules: |
This module implements the {{Navbox person}} template. Please see the template page for usage instructions.
Usage
{{#invoke:Navbox person|navbox}}
local p = {}
local YesNo = require( 'Module:Yesno' )
getArgs = function ( frame )
return require('Module:Arguments').getArgs( frame )
end
processArguments = function ( args )
local processedArguments = {}
if args.clan and string.length(args.clan) > 0 then
processedArguments.clan = clan
end
if args.coterie and string.length(args.coterie) > 0 then
processedArguments.coterie = YesNo( args.coterie, true )
end
return processedArguments
end
getData = function ()
local SmwUtil = require('Module:SmwUtil')
local query = {
select = { '[[is_member_of_class::Person]]' },
fields = { 'is_of_character_type=type', 'is_member_of_the_coterie=coterie', 'is_member_of_clan=clan' }
}
local attributes = {
sort = 'has display title',
order = 'asc',
mainlabel = 'name'
}
return SmwUtil.ask(query, attributes)
-- returns data as follows
-- clan : (string) clan; WARNING: OPTIONAL
-- type : (string) person type; Vampire, Kithain, etc.
-- name : (string) pagename
-- coterie : (bool) member of the coterie; WARNING: OPTIONAL
end
processData = function ( data, clan )
local processedData = {
clan = {},
coterie = {},
all = {},
}
for _, row in pairs(data) do
if clan and clan == data.clan then
table.insert(processedData.clan, data.name)
end
if data.coterie then
table.insert(processedData.coterie, data.name)
end
if not processedData[data.type] then
processedData[data.type] = {}
end
table.insert(processedData[data.type], data.name)
table.insert(processedData.all, data.name)
end
end
displayNavbox = function( data, coterie )
local html = mw.html.create('')
end
function p.main(frame)
local args = getArgs(frame)
args = processArguments( args )
local data = p.getData()
data = p.processData( data, args.clan )
end
return p