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[#arr])
    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