Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Documentation for this module may be created at Module:Sandbox/doc

local M = {}

function M.hello(F)
	local whom = F.args[1]
	if whom == nil then return 'Hi!' end
	return [[Hello, ]] .. whom .. '!'
end

function M:fizzbuzz()
	local r = ''
	for i = 1, 100 do
		local s = ''
		if i % 3 == 0 then
			s = s .. 'Fizz'
		end
		if i % 5 == 0 then
			s = s .. 'Buzz'
		end
		if s == '' then
			s = s .. i
		end
		r = r .. s .. "\n"
	end
	return r
end

local members = mw.loadData [[Module:Sandbox/data]]
members = mw.text.jsonDecode(
	(mw.ext.externaldata.getWebData({
		url = "https://tildeverse.org/members.json", 
		data = "data=data", 
		regex = "/(?'data'[\\s\\S]*)/", 
		format = 'text'
	}))[1]['data']).members

local function as_date(d)
	local year, month, day = string.match(d,
		[[(%d+)-(%d+)-(%d+)T]])
	local t = os.time{ year = year, month = month, day = day}
	return os.date("%B %e, %Y", t)
end

local function admins(a)
	local t = {}
	for _, v in ipairs(a) do
		table.insert(t, '[' .. v[2] .. ' ' .. v[1] .. ']')
	end
	return table.concat(t, ', ')
end

M.list = function()
    local tbl = [=[
{|class="wikitable"|
! Name
! Description
! Created
! Sysadmins
! OS
! [[tilde.chat]] channel
! Link]=]
    for _, v in ipairs(members) do
    	local s = "|-\n| " .. table.concat({
    		v.name,
    		v.description,
    		as_date(v.created),
    		admins(v.sysadmins),
    		v.os,
    		v.channel,
    		v.link
    	}, "\n| ")
	    tbl = tbl .. "\n" .. s
    end
    tbl = tbl .. "\n|}"
	return tbl
end

return M