Module:NodeInfoInvoke

local Utils = require('Module:Utils') local format = require('Module:StringInterpolation').format local NodeInfo = require('Module:NodeInfo')

local title_template_simple = ${map} ${node}: ${name}

local title_template = [[${map} ${node}: ${name} (PoiDB) ]]

local event_numbers = { ["Winter 2016 Event"] = 33, ["Spring 2016 Event"] = 34, ["Summer 2016 Event"] = 35, ["Fall 2016 Event"] = 36, ["Winter 2017 Event"] = 37, }

local diff_numbers = { ["Easy"] = 1, ["Normal"] = 2, ["Hard"] = 3, }

function formatTitle(pagename, args)

local event, map = string.match(pagename, "([^/]+)/([^/]+)") event = event or "" map = map or "E-?"

local node = args[1] and (string.match(args[1], "^[A-Z]$") or args[1] == "AB") and args[1] or "?" local diff = diff_numbers[args.diff] and args.diff or "?" local name = args.name or "?"

local event_number = event_numbers[event] or "" local map_number = string.match(map, "%d") or "" local diff_number = diff_numbers[diff] or ""

return format{ node == "AB" and title_template_simple or title_template, map = map, node = node, diff = diff, name = name, event_number = event_number, map_number = map_number, diff_number = diff_number, }

end

local NodeInfoInvoke = {}

function NodeInfoInvoke.Table(frame) local args = Utils.getTemplateArgs(frame) local table_string = NodeInfo:Table(args.explicit) if args.explicit.diff then return formatTitle(args.implicit.pagename, args.explicit) .. table_string else return table_string end end

return NodeInfoInvoke