Модуль:Wikidata.sort

Для документации этого модуля может быть создана страница Модуль:Wikidata.sort/doc

local p={}

-- делаем из snak строку для сравнения
function p.renderSnak(snak)
	return (snak and snak.datavalue and snak.datavalue.value and snak.datavalue.value.time) or mw.wikibase.renderSnak(snak)
end

-- запускаем selectClaims стандартный, а потом сортировку
function p.selectClaims( context, options, propertySelector )
	local claims= context.selectClaimsDefault( options, propertySelector );
	if claims ~= nil then
		table.sort(claims, function (a,b) return p.renderSnak(a.qualifiers[options.sort][1])<p.renderSnak(b.qualifiers[options.sort][1]) end );
	end
    return claims;
end

-- замена selectClaims
function p.changeselectClaims(context, options) 
	options.sort = string.upper(options.sort)
	context.selectClaimsDefault = context.selectClaims
	context.selectClaims = function( options, propertyId ) return p.selectClaims( context, options, propertyId ) end;
end

-- для тестовых целей 
function p.formatSortProperty( context, options )
	if(options.sort) then p.changeselectClaims(context,options)	end
    return context.formatPropertyDefault(context,options);
end

return p