Module:ElementNTLDStats: Difference between revisions
Appearance
// via Wikitext Extension for VSCode |
// via Wikitext Extension for VSCode |
||
| (One intermediate revision by the same user not shown) | |||
| Line 1: | Line 1: | ||
--[[ | --[[ | ||
* Name: ElementNTLDStats | |||
* Author: Mark W. Datysgeld | |||
* Description: Element module that renders NTLDStats links for generic TLDs, displaying statistics from ntldstats.com | |||
* Notes: Designed for Blueprint template system integration; excludes ccTLDs and classic TLDs from rendering; creates divider block with NTLDStats logo linking to external statistics; protected execution with error handling | |||
]] | |||
local p = {} | local p = {} | ||
| Line 65: | Line 66: | ||
-- Render divider and NTLDStats link | -- Render divider and NTLDStats link | ||
local divider = | local divider = require('Module:TemplateStructure').renderDividerBlock("Find out more:") | ||
local stats = string.format( | local stats = string.format( | ||
'|-\n| colspan="2" | <div class="ntldstats icannwiki-centered">[[File:NTLDStatsLogo.png|100px|alt=NTLDStats|link=https://ntldstats.com/tld/%s]]</div>', | '|-\n| colspan="2" | <div class="ntldstats icannwiki-centered">[[File:NTLDStatsLogo.png|100px|alt=NTLDStats|link=https://ntldstats.com/tld/%s]]</div>', | ||
Latest revision as of 03:01, 25 August 2025
Documentation for this module may be created at Module:ElementNTLDStats/doc
--[[
* Name: ElementNTLDStats
* Author: Mark W. Datysgeld
* Description: Element module that renders NTLDStats links for generic TLDs, displaying statistics from ntldstats.com
* Notes: Designed for Blueprint template system integration; excludes ccTLDs and classic TLDs from rendering; creates divider block with NTLDStats logo linking to external statistics; protected execution with error handling
]]
local p = {}
p.elementName = "ntldstats"
-- Dependencies
local TemplateHelpers = require('Module:TemplateHelpers')
local ConfigRepository = require('Module:ConfigRepository')
local ErrorHandling = require('Module:ErrorHandling')
local mw = mw -- MediaWiki API
-- Classic TLDs not integrated into NTLDStats database
local CLASSIC_TLDS = {
com=true, net=true, org=true, info=true,
edu=true, gov=true, mil=true, int=true,
aero=true, asia=true, cat=true, coop=true,
jobs=true, mobi=true, museum=true, post=true,
tel=true, travel=true, xxx=true
}
-- Create an NTLDStats block
function p.createBlock()
return function(template, args)
local ctx = template._errorContext
-- Protected execution wrapper
local function execute(func, ...)
if ctx then
return ErrorHandling.protect(
ctx,
"ElementBlock_ntldstats",
func,
"",
...
)
else
local ok, result = pcall(func, ...)
return ok and result or ""
end
end
return execute(function()
-- Skip for ccTLDs
if args._type == "ccTLD" then
return ""
end
-- Use CLASSIC_TLDS constant defined above
-- Determine page name and TLD identifier
local titleObj = mw.title.getCurrentTitle()
local pageName = titleObj and titleObj.text or ""
local tldName = pageName:gsub("^%.", "")
local ext = tldName:match("%.([^%.]+)$")
-- Skip classic TLDs
if CLASSIC_TLDS[string.lower(tldName)] or (ext and CLASSIC_TLDS[string.lower(ext)]) then
return ""
end
-- Render divider and NTLDStats link
local divider = require('Module:TemplateStructure').renderDividerBlock("Find out more:")
local stats = string.format(
'|-\n| colspan="2" | <div class="ntldstats icannwiki-centered">[[File:NTLDStatsLogo.png|100px|alt=NTLDStats|link=https://ntldstats.com/tld/%s]]</div>',
tldName
)
return divider .. "\n" .. stats
end)
end
end
return p