Jump to content

Module:Link with country/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
No edit summary
Line 1: Line 1:

local p = {}
local p = {}


local ISO_3166 = require('Module:ISO 3166')
local ISO_3166 = require('Module:ISO 3166')


local function ltrim(s)
local function ltrim(s)
return s:match'^%s*(.*)'
return s:match '^%s*(.*)'
end
end


local function split_with_comma(str)
local function split_with_comma(str)
local fields = {}
local fields = {}
for field in str:gmatch('([^,]+)') do
for field in str:gmatch('([^,]+)') do
fields[#fields+1] = ltrim (field)
fields[#fields + 1] = ltrim(field)
end
end
return fields
return fields
end
end


local function to_ISO_3166(country)
local function to_ISO_3166(country)
for i = 1, #country do
for i = 1, #country do
shortname = ISO_3166.name({country[i]})
shortname = ISO_3166.name({ country[i] })
if shortname ~= "" then country[i] = shortname end
if shortname ~= "" then country[i] = shortname end
end
end
return country
return country
end
end


local function to_str(arr)
local function to_str(arr)
commastring = ""
commastring = ""
for i = 1, #arr-1 do
for i = 1, #arr - 1 do
commastring = commastring .. ltrim(arr[i]) .. ", "
commastring = commastring .. ltrim(arr[i]) .. ", "
end
end
commastring = commastring .. ltrim(arr[#countryarray])
commastring = commastring .. ltrim(arr[#countryarray])
return commastring
return commastring
end
end




function p.countrynames( frame )
function p.countrynames(frame)
-- local test = frame.args[1] .. ", " .. frame.args.property
-- local test = frame.args[1] .. ", " .. frame.args.property
-- return test
-- return test


-- change comma list to array
-- change comma list to array
countryarray = split_with_comma( frame.args[1] )
countryarray = split_with_comma(frame.args[1])


-- put each array entry {as a table} through Module:ISO 3166. If the result is null, keep original entry
-- put each array entry {as a table} through Module:ISO 3166. If the result is null, keep original entry
to_ISO_3166(countryarray)
to_ISO_3166(countryarray)


-- change array back to comma string
-- change array back to comma string
commastring = to_str(countryarray)
commastring = to_str(countryarray)


return commastring
return commastring
end
end



Revision as of 10:17, 21 May 2024

local p = {}

local ISO_3166 = require('Module:ISO 3166')

local function ltrim(s)
    return s:match '^%s*(.*)'
end

local function split_with_comma(str)
    local fields = {}
    for field in str:gmatch('([^,]+)') do
        fields[#fields + 1] = ltrim(field)
    end
    return fields
end

local function to_ISO_3166(country)
    for i = 1, #country do
        shortname = ISO_3166.name({ country[i] })
        if shortname ~= "" then country[i] = shortname end
    end
    return country
end

local function to_str(arr)
    commastring = ""
    for i = 1, #arr - 1 do
        commastring = commastring .. ltrim(arr[i]) .. ", "
    end
    commastring = commastring .. ltrim(arr[#countryarray])
    return commastring
end


function p.countrynames(frame)
    -- local test = frame.args[1] .. ", " .. frame.args.property
    --    return test

    -- change comma list to array
    countryarray = split_with_comma(frame.args[1])

    -- put each array entry {as a table} through Module:ISO 3166. If the result is null, keep original entry
    to_ISO_3166(countryarray)

    -- change array back to comma string
    commastring = to_str(countryarray)

    return commastring
end

return p