Geen bewerkingssamenvatting |
Geen bewerkingssamenvatting |
||
| (15 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
| Regel 1: | Regel 1: | ||
local p = {} | local p = {} | ||
local mSlot = require('Module:Slot') | |||
--[[ | --[[ | ||
| Regel 28: | Regel 29: | ||
["Belongs to award event"] = awardEvent or "", | ["Belongs to award event"] = awardEvent or "", | ||
["Has position"] = args["Rank"] or "", | ["Has position"] = args["Rank"] or "", | ||
["Has recognition type"] = args["Type"] or "", | |||
-- ["Has category"] = args["Categorie"] or "", | -- ["Has category"] = args["Categorie"] or "", | ||
["Has recipient"] = mw.text.split( recipient, ',', true ) or "", | ["Has recipient"] = mw.text.split( recipient, ',', true ) or "", | ||
| Regel 49: | Regel 50: | ||
]]-- | ]]-- | ||
p.store = function( frame ) | |||
local page = frame.args["page"] or nil | local page = frame.args["page"] or nil | ||
if page == nil or page == "" then return end | if page == nil or page == "" then return end | ||
local slot = frame.args["slot"] or "ws-data" | local slot = frame.args["slot"] or "ws-data" | ||
local id = frame.args["id"] or "" | local id = frame.args["id"] or "" | ||
local jsonstr = mw.slots.slotContent( slot, page ) | local jsonstr = mw.slots.slotContent( slot, page ) | ||
| Regel 63: | Regel 65: | ||
local awardCategory = json["Award category"] or "" | local awardCategory = json["Award category"] or "" | ||
local awardEvent = json["Award event"] or "" | local awardEvent = json["Award event"] or "" | ||
mw.log( "awardEvent: " .. awardEvent ) | |||
-- @todo query award | -- @todo query award | ||
local award = mSlot.getValueFromTemplateData( "ws-page-props", awardEvent, "Award event", "Prijs" ) or "" | |||
mw.log( "award: " .. award ) | |||
-- p.getSlotValue( page, slot, "Award" ) | |||
-- @todo derive name from category + event? | -- @todo derive name from category + event? | ||
| Regel 75: | Regel 82: | ||
["Klasse"] = "Prijscategorie op evenement", | ["Klasse"] = "Prijscategorie op evenement", | ||
["Has ID"] = id, | ["Has ID"] = id, | ||
["Belongs to award"] = award, | |||
["Belongs to award category"] = awardCategory, | ["Belongs to award category"] = awardCategory, | ||
["Belongs to award event"] = awardEvent | ["Belongs to award event"] = awardEvent | ||
| Regel 88: | Regel 95: | ||
-- #subobjects | -- #subobjects | ||
local awardInstances = | local awardInstances = json["Persons"] or json["Titles"] or json["Books"] or json["Series"] or nil | ||
if awardInstances ~= nil then | if awardInstances ~= nil then | ||
| Regel 108: | Regel 108: | ||
--ternary | --ternary | ||
--local sign = if x < 0 then 'negative' else 'non-negative' end | --local sign = if x < 0 then 'negative' else 'non-negative' end | ||
return | return | ||
end | end | ||
| Regel 124: | Regel 125: | ||
--[[ | --[[ | ||
]]-- | ]]-- | ||
p.show_award_recognitions = function( frame ) | |||
local page = frame.args["page"] or page | local page = frame.args["page"] or page | ||
local slot = frame.args["slot"] or "ws-data" | |||
local template = frame.args["template"] or nil | local template = frame.args["template"] or nil | ||
local jsonstr = mw.slots.slotContent( slot, page ) | |||
if jsonstr == nil or jsonstr == "" then return "" end | |||
-- jsontree | |||
local json = mw.text.jsonDecode( jsonstr ) | |||
if type(json) ~= "table" then return "" end | |||
res = "" | res = "" | ||
local awards = json["Persons"] or json["Titles"] or json["Books"] or json["Series"] or nil | |||
if awards == nil then return "" end | |||
for i,v in ipairs(awards) do | |||
res = res .. send_to_template( frame, template, v ) | |||
end | end | ||
-- | |||
--etc | |||
return res | return res | ||
end | end | ||
| Regel 145: | Regel 150: | ||
--[[ @todo maybe - naming has changed so this won't work ]]-- | --[[ @todo maybe - naming has changed so this won't work ]]-- | ||
p.getAwardEventFromPageName = function( page ) | p.getAwardEventFromPageName = function( page ) | ||
local page = frame.args["page"] or nil | |||
if page == nil or page == "" then return end | |||
local slot = frame.args["slot"] or "ws-data" | |||
local awardEvent = nil | local awardEvent = nil | ||
-- get awardEvent on the basis of the page name | -- get awardEvent on the basis of the page name | ||
Huidige versie van 18 sep 2025 19:47
Module:Award event category
local p = {}
local mSlot = require('Module:Slot')
--[[
Ignore - generic test
{{#invoke:Award category |main |json={{#slot:ws-data|{{FULLPAGENAME}}}} }}
]]--
function p.main ( frame )
local json = frame.args["json"]
if json == nil or json == "" then
return error("No JSON string found")
end
return json
end
--[[
Local helper function for p.store below
Stores each instance in a subobject
]]--
local function store_award_as_subobject( frame, args, award, awardCategory, awardEvent, awardEventCategory )
--local frame = mw.getCurrentFrame()
if mw.smw then
local recipient = args["Title"] or args["Book"] or args["Person"] or ""
local subobject = {
["Class"] = "Award recognition",
["Belongs to award"] = award or "",
["Belongs to award category"] = awardCategory or "",
["Belongs to award event"] = awardEvent or "",
["Has position"] = args["Rank"] or "",
["Has recognition type"] = args["Type"] or "",
-- ["Has category"] = args["Categorie"] or "",
["Has recipient"] = mw.text.split( recipient, ',', true ) or "",
["Has description"] = args["Description"] or ""
}
local subobjectStore = mw.smw.subobject( subobject )
end
return
end
--[[
Store in SMW
Consider using Lua version of parser function instead
{{#invoke:Award event category|store
|page={{FULLPAGENAME}}
|slot=ws-data
|id=
}}
]]--
p.store = function( frame )
local page = frame.args["page"] or nil
if page == nil or page == "" then return end
local slot = frame.args["slot"] or "ws-data"
local id = frame.args["id"] or ""
local jsonstr = mw.slots.slotContent( slot, page )
if jsonstr == nil or jsonstr == "" then return end
-- jsontree
local json = mw.text.jsonDecode( jsonstr )
if type(json) ~= "table" then return end
local awardCategory = json["Award category"] or ""
local awardEvent = json["Award event"] or ""
mw.log( "awardEvent: " .. awardEvent )
-- @todo query award
local award = mSlot.getValueFromTemplateData( "ws-page-props", awardEvent, "Award event", "Prijs" ) or ""
mw.log( "award: " .. award )
-- p.getSlotValue( page, slot, "Award" )
-- @todo derive name from category + event?
local name = json["Name"] or ""
-- #set:
local setResult = nil
if mw.smw then
local setTable = {
-- Dutch-language label
["Klasse"] = "Prijscategorie op evenement",
["Has ID"] = id,
["Belongs to award"] = award,
["Belongs to award category"] = awardCategory,
["Belongs to award event"] = awardEvent
--["Belongs to award event category"] = page,
--["Title"] = json["Name"] or "",
--["Has name"] = json["Name"] or "",
--["Has description"] = json["Description"] or "",
--["Has category"] = json["Category"] or ""
}
setResult = mw.smw.set( setTable )
end
-- #subobjects
local awardInstances = json["Persons"] or json["Titles"] or json["Books"] or json["Series"] or nil
if awardInstances ~= nil then
local awardEventCategory = page
for i, v in ipairs( awardInstances ) do
local subobjectStore = store_award_as_subobject(
frame, v, award, awardCategory, awardEvent, awardEventCategory
)
end
end
--ternary
--local sign = if x < 0 then 'negative' else 'non-negative' end
return
end
--[[
use a template to format a (Lua) table
]]--
local function send_to_template( frame, templateName, argsTable )
if templateName ~= nil and argsTable ~= nil then
return frame:expandTemplate{ title = templateName, args = argsTable }
else
return ""
end
end
--[[
]]--
p.show_award_recognitions = function( frame )
local page = frame.args["page"] or page
local slot = frame.args["slot"] or "ws-data"
local template = frame.args["template"] or nil
local jsonstr = mw.slots.slotContent( slot, page )
if jsonstr == nil or jsonstr == "" then return "" end
-- jsontree
local json = mw.text.jsonDecode( jsonstr )
if type(json) ~= "table" then return "" end
res = ""
local awards = json["Persons"] or json["Titles"] or json["Books"] or json["Series"] or nil
if awards == nil then return "" end
for i,v in ipairs(awards) do
res = res .. send_to_template( frame, template, v )
end
--
--etc
return res
end
--[[ @todo maybe - naming has changed so this won't work ]]--
p.getAwardEventFromPageName = function( page )
local page = frame.args["page"] or nil
if page == nil or page == "" then return end
local slot = frame.args["slot"] or "ws-data"
local awardEvent = nil
-- get awardEvent on the basis of the page name
if page ~= nil then
local pageParts = mw.text.split( page, "/" )
-- ??? remove last part ??
table.remove( pageParts );
--- ??
awardEvent = table.concat( pageParts, "/" )
end
return awardEvent
end
return p
