local p = {} -- p stands for package

-- Load the category handler module
local categoryHandler = require('Module:Category handler').main

-- Function to normalize URL by replacing spaces with underscores
function normalize(url)
	return url:gsub(" ", "_")
end

-- Function to generate the URL of the article
function p.url(frame)
	local language = frame.args['language']
	local title = p['title'](frame)
	local entity_id = mw.wikibase.getEntityIdForCurrentPage()
	if entity_id then
	    -- If entity ID exists, generate and return the URL
	    local url = normalize('https://' .. language .. '.wikipedia.org/wiki/' .. title)
	    return url
	else
	    -- If entity ID doesn't exist, return an error message
	    return error("ھەڵە: ئەم پەڕەیە بە ویکیدراوە گرێ نەدراوە. تکایە ئەگەر ڕێی تێ دەچێت بە ھەمان وتار گرێی بدە تا بەستەرێک وەک سەرچاوە دابین بکەین")
	end
end

-- Function to get the title of the article
function p.title(frame)
	local language = frame.args['language']
	mw.logObject(frame.args)
	language = language .. 'wiki'
	local entity_id = mw.wikibase.getEntityIdForCurrentPage()
	mw.logObject(entity_id)
	if entity_id then
	    -- If entity ID exists, retrieve and return the sitelink
	    return mw.wikibase.getSitelink(entity_id, language)
	else
	    -- If entity ID doesn't exist, categorize the page and return empty string
	    local category = categoryHandler{
	        main = '[[پۆل:ئەو وتارانەی وەک سەرچاوە ئاماژەیان بە ویکییەکانی تر داوە بەبێ ئەوەی لە ویکیدراوە گرێ درابن]]',
	        other = '[[پۆل:ھەموو ئەو پەڕە ناوتارانەی وەک سەرچاوە ئاماژەیان بە ویکییەکانی تر داوە بەبێ ئەوەی لە ویکیدراوە گرێ درابن]]',
	        nocat = frame.args.nocat
	    }
	    return category or '' -- Ensure that we return an empty string if category is nil
	end
end

return p