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

local PROP_NAME = 'P2561'
local PROP_NAMED_AFTER = 'P138'

local p = {}

p.main = function ( frame )
    local fields = '_pageName, image, wikidata'
    local args = {
        orderBy = '_pageName ASC',
        limit = 1000
    }
    local results = mw.ext.cargo.query( 'streets', fields, args )
    local street_names = {}
	for _,res in pairs( results ) do
		street_names[ res._pageName ] = ''
		if res.wikidata then
			local item = mw.ext.UnlinkedWikibase.getEntity( res.wikidata )
			if item.claims ~= nil and item.claims[ PROP_NAMED_AFTER ] ~= nil then
				for _,namedAfterClaim in pairs( item.claims[ PROP_NAMED_AFTER ] ) do
					local named_after_qid = namedAfterClaim.mainsnak.datavalue.value.id
					street_names[ res._pageName ] = named_after_qid
				end
			end
		end
	end

    local out = '<ol>'
    for street,named_after_qid in pairs( street_names ) do
        out = out .. '<li>[[' .. street .. ']]:'
        if named_after_qid ~= '' then
        	out = out .. ' ' .. frame:expandTemplate{ title = 'wdl', args = { named_after_qid } }
        end
        out = out .. '</li>\n'
    end
    out = out .. '</ol>'
	return out
end

return p