Модуль: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