Jump to content

Module:Link with country/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Undid revision 1224930636 by Hohum (talk)
No edit summary
Line 25: Line 25:


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


Line 39: Line 39:


-- 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:26, 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
        local shortname = ISO_3166.name({ country[i] })
        if shortname ~= "" then country[i] = shortname end
    end
    return country
end

local function to_str(arr)
    local cstring = ""
    for i = 1, #arr - 1 do
        cstring = cstring .. ltrim(arr[i]) .. ", "
    end
    cstring = cstring .. ltrim(arr[#countryarray])
    return cstring
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