local p = {}

function p.makelink(url, showntext)
	if (not url) or (url == "-") then 
		return nil
	end

	--I validation de l'url (paramètre URL)
	url = mw.text.trim(url)


	-- II texte à afficher (paramètre "showntext")

	--- valeur spéciale : aucun texte
	if showntext == "-" then
		return url
	end

	--- laissé vide : texte basé sur l'URL
	if not showntext then
		if mw.ustring.sub(url, 1, 1) == "[" then
			return url
		end
		local sub12 = mw.ustring.sub(url, 1, 12)
		if sub12 == '<span class=' or sub12 == '<cite class=' or sub12 == '<abbr class=' then
			-- résultat produit par [[modèle:URL]], [[modèle:Lien web]], [[modèle:Site officiel]], ou [[modèle:en]]
			return url
		end
		local space = mw.ustring.find(url, ' ') -- si le nom du site est passé par mégarde dans l'URL, le séparer
		if space then
			local full = url
			url = mw.ustring.sub(full, 1, space - 1)
			showntext = mw.ustring.sub(full, space + 1)
		else
			showntext = string.gsub( url, 'https?://', '')
			---- remove trailing slash
			if string.sub(showntext, #showntext, #showntext) == '/' then
				showntext = string.sub(showntext, 1, #showntext - 1)
			end
		end
	end

	return '[' .. url .. ' ' .. showntext .. ']'
end

function p.makelinks(stringlist, separator)
	if not type(stringlist) == table then
		return error('stringlist should be table')
	end
	if not separator then
		separator = '<br />'
	end
	for i, j in pairs(stringlist) do
		stringlist[i] = p.makelink(j)
	end
	return table.concat(stringlist, separator)
end

return p