Module:ConfigRepository: Difference between revisions
// via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 50: | Line 50: | ||
-- IMPORTANT: "Logo" is processed automatically whenever it is called as a key by the Template Blueprint, in such a way that it does not need to be declared for any templates in this repository | -- IMPORTANT: "Logo" is processed automatically whenever it is called as a key by the Template Blueprint, in such a way that it does not need to be declared for any templates in this repository | ||
} | |||
-- Global field patterns used in multiple templates | |||
p.fieldPatterns = { | |||
itemDelimiter = ";%s*", -- Matches semicolon followed by optional whitespace | |||
websitePattern = "^https?://[^%s]+" -- Matches URLs starting with http:// or https:// | |||
} | |||
-- Global field processors for reusable field definitions | |||
p.fieldProcessors = { | |||
website = { | |||
list = { mode = 'bullet_custom', bulletChar = '🔗', postProcess = 'website' } | |||
} | |||
} | } | ||
| Line 211: | Line 224: | ||
-- Patterns for event navigation detection | -- Patterns for event navigation detection | ||
seriesNumber = "^([%w%s]+)%s+(%d+)$", -- e.g., "ICANN 76" | seriesNumber = "^([%w%s]+)%s+(%d+)$", -- e.g., "ICANN 76" | ||
seriesYear = "^([%w%s]+)%s+(%d%d%d%d)$" -- e.g., "IGF 2023" | seriesYear = "^([%w%s]+)%s+(%d%d%d%d)$", -- e.g., "IGF 2023" | ||
itemDelimiter = p.fieldPatterns.itemDelimiter, | |||
websitePattern = p.fieldPatterns.websitePattern | |||
}, | }, | ||
fields = { | fields = { | ||
| Line 222: | Line 237: | ||
{key="venue", label="Venue"}, | {key="venue", label="Venue"}, | ||
{key="organizer", label="Organizer"}, | {key="organizer", label="Organizer"}, | ||
{keys={"website", "url"}, label=p.fieldLabels.website}, | {keys={"website", "url"}, label=p.fieldLabels.website, list=p.fieldProcessors.website.list}, | ||
}, | }, | ||
semantics = { | semantics = { | ||
| Line 444: | Line 459: | ||
category = "Standards development organization"} | category = "Standards development organization"} | ||
} | } | ||
}, | |||
patterns = { | |||
itemDelimiter = p.fieldPatterns.itemDelimiter, | |||
websitePattern = p.fieldPatterns.websitePattern | |||
}, | }, | ||
fields = { | fields = { | ||
| Line 455: | Line 474: | ||
{key="ownership", label="Ownership", autoWikiLink=true}, | {key="ownership", label="Ownership", autoWikiLink=true}, | ||
{key="subsidiaries", label="Subsidiaries", list="bullet"}, | {key="subsidiaries", label="Subsidiaries", list="bullet"}, | ||
{keys={"website", "url"}, label=p.fieldLabels.website}, | {keys={"website", "url"}, label=p.fieldLabels.website, list=p.fieldProcessors.website.list}, | ||
}, | }, | ||
semantics = { | semantics = { | ||
| Line 494: | Line 513: | ||
-- REVIEW Community (Property:Has governance community) | -- REVIEW Community (Property:Has governance community) | ||
community = { | community = { | ||
-- | -- Broad definition | ||
{canonical = "Internet Governance Community", | {canonical = "Internet Governance Community", | ||
synonyms = {"ig", "internet governance"}, | synonyms = {"ig", "internet governance"}, | ||
| Line 541: | Line 560: | ||
fields = { | fields = { | ||
{key="community", label="Community"}, | {key="community", label="Community"}, | ||
{key="icann_group", label="ICANN | {key="icann_group", label="ICANN SO/AC", autoWikiLink=true}, -- (Property:Has ICANN affiliation) | ||
{key="organization", label="Organization", autoWikiLink=true, list="bullet"}, | {key="organization", label="Organization", autoWikiLink=true, list="bullet"}, | ||
{key="region", label=p.fieldLabels.region, list="bullet"}, | {key="region", label=p.fieldLabels.region, list="bullet"}, | ||
{key="country", label=p.fieldLabels.country}, | {key="country", label=p.fieldLabels.country}, | ||
{key="languages", label="Languages", list = { mode = 'bullet_custom', bulletChar = '🗣️', postProcess = 'language' }}, | {key="languages", label="Languages", list = { mode = 'bullet_custom', bulletChar = '🗣️', postProcess = 'language' }}, | ||
{key="website", label=p.fieldLabels.website, list = | {key="website", label=p.fieldLabels.website, list=p.fieldProcessors.website.list}, | ||
{key="soi", label="SOI"}, | {key="soi", label="SOI"}, | ||
{key="userbox", label="Achievements"}, | {key="userbox", label="Achievements"}, | ||
| Line 552: | Line 571: | ||
}, | }, | ||
patterns = { | patterns = { | ||
itemDelimiter = | itemDelimiter = p.fieldPatterns.itemDelimiter, | ||
websitePattern = | websitePattern = p.fieldPatterns.websitePattern | ||
}, | }, | ||
semantics = { | semantics = { | ||
| Line 743: | Line 762: | ||
patterns = { | patterns = { | ||
tldExtension="%.([^%.]+)$", -- Extracts the TLD part after the last dot (e.g., "com" from "example.com") | tldExtension="%.([^%.]+)$", -- Extracts the TLD part after the last dot (e.g., "com" from "example.com") | ||
countryDelimiter="([^;]+)" -- Matches any sequence of characters not containing semicolons; used for country parsing | countryDelimiter="([^;]+)", -- Matches any sequence of characters not containing semicolons; used for country parsing | ||
itemDelimiter = p.fieldPatterns.itemDelimiter, | |||
websitePattern = p.fieldPatterns.websitePattern | |||
}, | }, | ||
fields = { | fields = { | ||
| Line 758: | Line 779: | ||
{key="ascii", label="Punycode"}, | {key="ascii", label="Punycode"}, | ||
{key="registry", label="Registry", autoWikiLink=true}, | {key="registry", label="Registry", autoWikiLink=true}, | ||
{key="website", label=p.fieldLabels.website}, | {key="website", label=p.fieldLabels.website, list=p.fieldProcessors.website.list}, | ||
{keys={"RVC", "PIC"}, label = "PIC/RVC"} | {keys={"RVC", "PIC"}, label = "PIC/RVC"} | ||
}, | }, | ||