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

local p = {}

function split(s)
    result = {};
    for match in (s .. ':'):gmatch("(.-)" .. ':') do
        table.insert(result, match);
    end
    return result;
end

function trim(s)
   return (s:gsub("^%s*(.-)%s*$", "%1"))
end

function p.format_isbn(frame)
	local unformatted_isbn = frame.args[1]
	local formatted_isbn = ''
	
	if string.find(unformatted_isbn, ':', 1, true) == nil then
		formatted_isbn = p.link_isbn(unformatted_isbn)	
	else
		-- split by comma into isbn name/value pairs connected by colon :
		for qualified_isbn in string.gmatch(unformatted_isbn, '([^,]+)') do
			local isbnTable = split(qualified_isbn) -- split by : into name/value pair table
			formatted_isbn = formatted_isbn .. isbnTable[1] .. ': ' .. p.link_isbn(isbnTable[2]) .. "<br>"
		end
	end
	
	return formatted_isbn
end

function p.link_isbn(isbn)
	trimmed_isbn = trim(isbn)
	return "[[Specialus:Knygų_šaltiniai/" .. trimmed_isbn .. "|" .. trimmed_isbn .. "]]"	
end

return p