<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.czchan.org/w/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2FFilterers</id>
	<title>Modul:Wikidata/Filterers - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.czchan.org/w/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2FFilterers"/>
	<link rel="alternate" type="text/html" href="https://wiki.czchan.org/w/index.php?title=Modul:Wikidata/Filterers&amp;action=history"/>
	<updated>2026-05-13T17:44:04Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.czchan.org/w/index.php?title=Modul:Wikidata/Filterers&amp;diff=92&amp;oldid=prev</id>
		<title>Sneedmaster: naimportována 1 revize</title>
		<link rel="alternate" type="text/html" href="https://wiki.czchan.org/w/index.php?title=Modul:Wikidata/Filterers&amp;diff=92&amp;oldid=prev"/>
		<updated>2026-01-10T14:49:47Z</updated>

		<summary type="html">&lt;p&gt;naimportována 1 revize&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 10. 1. 2026, 14:49&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;cs&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Žádný rozdíl)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key nuwiki-nuwiki-:diff:1.41:old-91:rev-92 --&gt;
&lt;/table&gt;</summary>
		<author><name>Sneedmaster</name></author>
	</entry>
	<entry>
		<id>https://wiki.czchan.org/w/index.php?title=Modul:Wikidata/Filterers&amp;diff=91&amp;oldid=prev</id>
		<title>wp&gt;Matěj Suchánek: přepsání isInstance do podoby, jaká byla zamýšlena; bohužel mw.wikibase.getReferencedEntityId lze volat nejvýše 3krát...</title>
		<link rel="alternate" type="text/html" href="https://wiki.czchan.org/w/index.php?title=Modul:Wikidata/Filterers&amp;diff=91&amp;oldid=prev"/>
		<updated>2025-04-27T11:38:49Z</updated>

		<summary type="html">&lt;p&gt;přepsání isInstance do podoby, jaká byla zamýšlena; bohužel mw.wikibase.getReferencedEntityId lze volat nejvýše 3krát...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;require &amp;#039;strict&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local lib = require &amp;#039;Modul:Wikidata/lib&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local function in_array(value, array)&lt;br /&gt;
	local TableTools = require &amp;#039;Modul:TableTools&amp;#039;&lt;br /&gt;
	return TableTools.inArray(array, value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function assertDatatype(actual, expected, method)&lt;br /&gt;
	if actual ~= expected then&lt;br /&gt;
		error(lib.raiseInvalidDatatype(method, actual, expected))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function assertEntityDatatype(datatype, method)&lt;br /&gt;
	if lib.datatypeToValueType[datatype] ~= &amp;#039;wikibase-entityid&amp;#039; then&lt;br /&gt;
		local dtypes = {}&lt;br /&gt;
		for dt, vt in pairs(lib.datatypeToValueType) do&lt;br /&gt;
			if vt == &amp;#039;wikibase-entityid&amp;#039; then&lt;br /&gt;
				table.insert(dtypes, dt)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		error(lib.raiseInvalidDatatype(method, datatype, dtypes))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkLimit(array, limit)&lt;br /&gt;
	local limit = limit and tonumber(limit)&lt;br /&gt;
	if limit then&lt;br /&gt;
		return #array &amp;gt;= limit&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function applyLimit(array, limit)&lt;br /&gt;
	local limit = limit and tonumber(limit)&lt;br /&gt;
	while limit and #array &amp;gt; limit do&lt;br /&gt;
		table.remove(array)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function filter(array, callback, ...)&lt;br /&gt;
	local i = #array&lt;br /&gt;
	while i &amp;gt; 0 do&lt;br /&gt;
		if not callback(array[i], ...) then&lt;br /&gt;
			table.remove(array, i)&lt;br /&gt;
		end&lt;br /&gt;
		i = i - 1&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function filterMainsnak(statements, callback, ...)&lt;br /&gt;
	filter(statements, function (statement, ...)&lt;br /&gt;
		return callback(statement.mainsnak, ...)&lt;br /&gt;
	end, ...)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isInLanguage(snak, langs)&lt;br /&gt;
	assertDatatype(snak.datatype, &amp;#039;monolingualtext&amp;#039;, &amp;#039;isInLanguage&amp;#039;)&lt;br /&gt;
	local langs = lib.textToTable(langs)&lt;br /&gt;
	return lib.IsSnakValue(snak) and in_array(snak.datavalue.value.language, langs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasSnaktype(snak, somevalue, novalue)&lt;br /&gt;
	local snaktype = snak.snaktype&lt;br /&gt;
	if snaktype == &amp;#039;somevalue&amp;#039; then&lt;br /&gt;
		return somevalue or false&lt;br /&gt;
	elseif snaktype == &amp;#039;novalue&amp;#039; then&lt;br /&gt;
		return novalue or false&lt;br /&gt;
	end&lt;br /&gt;
	return lib.IsSnakValue(snak)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasTarget(snak, target)&lt;br /&gt;
	local Formatters = require &amp;#039;Modul:Wikidata/Formatters&amp;#039;&lt;br /&gt;
	return tostring(Formatters.getRawValue(snak)) == tostring(target)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasQualifier(statement, prop, value)&lt;br /&gt;
	if statement.qualifiers then&lt;br /&gt;
		prop = prop:upper()&lt;br /&gt;
		for _, snak in ipairs(statement.qualifiers[prop] or {}) do&lt;br /&gt;
			if not value or hasTarget(snak, value) then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function withoutQualifier(statement, prop, value)&lt;br /&gt;
	return not hasQualifier(statement, prop, value)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasRanks(statement, ranks)&lt;br /&gt;
	return in_array(statement.rank, ranks)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasReferences(statement, options)&lt;br /&gt;
	if statement.references then&lt;br /&gt;
		if #p.filterReferences(statement.references, options) &amp;gt; 0 then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasLabel(snak)&lt;br /&gt;
	assertEntityDatatype(snak.datatype, &amp;#039;hasLabel&amp;#039;)&lt;br /&gt;
	if lib.IsSnakValue(snak) then&lt;br /&gt;
		local i18n = mw.loadData(&amp;#039;Modul:Wikidata/i18n&amp;#039;)&lt;br /&gt;
		local langs = mw.language.getFallbacksFor(i18n.lang)&lt;br /&gt;
		table.insert(langs, 1, i18n.lang)&lt;br /&gt;
		local Formatters = require &amp;#039;Modul:Wikidata/Formatters&amp;#039;&lt;br /&gt;
		if lib.getLabelInLanguage(Formatters.getRawValue(snak), langs) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasSitelink(statement)&lt;br /&gt;
	assertDatatype(statement.mainsnak.datatype, &amp;#039;wikibase-item&amp;#039;, &amp;#039;hasSitelink&amp;#039;)&lt;br /&gt;
	if lib.IsSnakValue(statement.mainsnak) then&lt;br /&gt;
		if mw.wikibase.sitelink(Formatters.getRawValue(statement.mainsnak)) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isInstance(snak, instance)&lt;br /&gt;
	assertEntityDatatype(snak.datatype, &amp;#039;isInstance&amp;#039;)&lt;br /&gt;
	if lib.IsSnakValue(snak) then&lt;br /&gt;
		local Formatters = require &amp;#039;Modul:Wikidata/Formatters&amp;#039;&lt;br /&gt;
		local targets = lib.textToTable(instance)&lt;br /&gt;
&lt;br /&gt;
		local item = Formatters.getRawValue(snak)&lt;br /&gt;
		local statements = mw.wikibase.getBestStatements(item, &amp;#039;P31&amp;#039;)&lt;br /&gt;
		local classes = {}&lt;br /&gt;
		for _, claim in ipairs(statements) do&lt;br /&gt;
			if lib.IsSnakValue(claim.mainsnak) then&lt;br /&gt;
				local value = Formatters.getRawValue(claim.mainsnak)&lt;br /&gt;
				classes[value] = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for _, target in ipairs(targets) do&lt;br /&gt;
			if classes[target] then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for class in pairs(classes) do&lt;br /&gt;
			if mw.wikibase.getReferencedEntityId(class, &amp;#039;P279&amp;#039;, targets) then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasProperty(snak, property, value)&lt;br /&gt;
	assertEntityDatatype(snak.datatype, &amp;#039;hasProperty&amp;#039;)&lt;br /&gt;
	if not lib.IsSnakValue(snak) then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	local Formatters = require &amp;#039;Modul:Wikidata/Formatters&amp;#039;&lt;br /&gt;
	local id = Formatters.getRawValue(snak)&lt;br /&gt;
	local statements = mw.wikibase.getBestStatements(id, property:upper())&lt;br /&gt;
	if value then&lt;br /&gt;
		filterMainsnak(statements, hasTarget, value)&lt;br /&gt;
	end&lt;br /&gt;
	return #statements &amp;gt; 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hasUnit(statement, unit)&lt;br /&gt;
	assertDatatype(statement.mainsnak.datatype, &amp;#039;quantity&amp;#039;, &amp;#039;hasUnit&amp;#039;)&lt;br /&gt;
	if lib.IsSnakValue(statement.mainsnak) then&lt;br /&gt;
		return (lib.getItemIdFromURI(statement.mainsnak.datavalue.value.unit) or &amp;#039;Q199&amp;#039;) == unit&lt;br /&gt;
	else&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getValuesFromQualifiers(qualifiers)&lt;br /&gt;
	local Values = {}&lt;br /&gt;
	local Formatters = require &amp;#039;Modul:Wikidata/Formatters&amp;#039;&lt;br /&gt;
	for key, array in pairs(lib.props) do&lt;br /&gt;
		for _, prop in ipairs(array) do&lt;br /&gt;
			for _, snak in ipairs(qualifiers[prop] or {}) do&lt;br /&gt;
				if lib.IsSnakValue(snak) then&lt;br /&gt;
					Values[key] = Formatters.getRawValue(snak, {})&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return Values&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.filterStatementsFromEntity(entity, options)&lt;br /&gt;
	if not options.property or options.property == &amp;#039;&amp;#039; then&lt;br /&gt;
		error(lib.formatError(&amp;#039;param-not-provided&amp;#039;, &amp;#039;property&amp;#039;))&lt;br /&gt;
	end&lt;br /&gt;
	if not entity then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local statements = mw.clone(entity:getAllStatements(options.property))&lt;br /&gt;
	if #statements ~= 0 then&lt;br /&gt;
		p.filterStatements(statements, options)&lt;br /&gt;
	end&lt;br /&gt;
	return statements&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.filterStatements(statements, options)&lt;br /&gt;
	-- apply filter by rank&lt;br /&gt;
	local rank = options.rank or &amp;quot;valid&amp;quot;&lt;br /&gt;
	if rank ~= &amp;quot;all&amp;quot; then&lt;br /&gt;
		if rank == &amp;quot;valid&amp;quot; then&lt;br /&gt;
			filter(statements, hasRanks, { &amp;quot;normal&amp;quot;, &amp;quot;preferred&amp;quot; })&lt;br /&gt;
		elseif rank == &amp;quot;best&amp;quot; then&lt;br /&gt;
			local bestRank = &amp;quot;normal&amp;quot;&lt;br /&gt;
			for _, statement in ipairs(statements) do&lt;br /&gt;
				if statement.rank == &amp;quot;preferred&amp;quot; then&lt;br /&gt;
					bestRank = &amp;quot;preferred&amp;quot;&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			filter(statements, hasRanks, { bestRank })&lt;br /&gt;
		else&lt;br /&gt;
			filter(statements, hasRanks, { rank })&lt;br /&gt;
		end&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by source&lt;br /&gt;
	if options.ref then&lt;br /&gt;
		filter(statements, hasReferences, options)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by snak type&lt;br /&gt;
	filterMainsnak(statements, hasSnaktype, options.somevalue and true, options.novalue and true)&lt;br /&gt;
	if #statements == 0 then return end&lt;br /&gt;
	-- apply filter by target value&lt;br /&gt;
	if options.withtarget then&lt;br /&gt;
		filterMainsnak(statements, hasTarget, options.withtarget)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by qualifier property&lt;br /&gt;
	if options.withqualifier then&lt;br /&gt;
		filter(statements, hasQualifier, options.withqualifier, options.withqualifiervalue)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	if options.withoutqualifier then&lt;br /&gt;
		filter(statements, withoutQualifier, options.withoutqualifier, options.withoutqualifiervalue)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by language&lt;br /&gt;
	if options.withlang then&lt;br /&gt;
		filterMainsnak(statements, isInLanguage, options.withlang)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by unit&lt;br /&gt;
	if options.withunit then&lt;br /&gt;
		filter(statements, hasUnit, options.withunit)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by time&lt;br /&gt;
	if options.date then&lt;br /&gt;
		local date&lt;br /&gt;
		local Time = require &amp;#039;Modul:Time&amp;#039;&lt;br /&gt;
		if type(options.date) == &amp;#039;table&amp;#039; then&lt;br /&gt;
			date = options.date&lt;br /&gt;
		elseif options.date == &amp;#039;#now&amp;#039; then&lt;br /&gt;
			local osDate = os.date(&amp;#039;!*t&amp;#039;)&lt;br /&gt;
			date = Time.new{&lt;br /&gt;
				year = osDate.year,&lt;br /&gt;
				month = osDate.month,&lt;br /&gt;
				day = osDate.day,&lt;br /&gt;
				precision = Time.PRECISION.DAY,&lt;br /&gt;
				calendar = Time.CALENDAR.GREGORIAN,&lt;br /&gt;
			}&lt;br /&gt;
		else&lt;br /&gt;
			date = Time.newFromIso8601(options.date)&lt;br /&gt;
		end&lt;br /&gt;
		if not date then&lt;br /&gt;
			error(lib.formatError(&amp;#039;invalid-date&amp;#039;, tostring(options.date)))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local oldStatements = mw.clone(statements)&lt;br /&gt;
		while #statements &amp;gt; 0 do table.remove(statements) end&lt;br /&gt;
		for _, statement in ipairs(oldStatements) do&lt;br /&gt;
			local Values = getValuesFromQualifiers(statement.qualifiers or {})&lt;br /&gt;
			if Values.point then&lt;br /&gt;
				if date == Values.point then&lt;br /&gt;
					filter(statements, function(st)&lt;br /&gt;
						local val = getValuesFromQualifiers(st.qualifiers).point&lt;br /&gt;
						if val then&lt;br /&gt;
							return val == Values.point&lt;br /&gt;
						end&lt;br /&gt;
						return true&lt;br /&gt;
					end)&lt;br /&gt;
					table.insert(statements, statement)&lt;br /&gt;
				elseif Values.point &amp;lt; date then&lt;br /&gt;
					if #statements == 0 then&lt;br /&gt;
						table.insert(statements, statement)&lt;br /&gt;
					else&lt;br /&gt;
						local same, ins&lt;br /&gt;
						for _, st in ipairs(statements) do&lt;br /&gt;
							local val = getValuesFromQualifiers(st.qualifiers).point&lt;br /&gt;
							if val then&lt;br /&gt;
								if date == Values.point then&lt;br /&gt;
									same = true&lt;br /&gt;
									break&lt;br /&gt;
								end&lt;br /&gt;
								if val == Values.point or val &amp;lt; Values.point then&lt;br /&gt;
									ins = true&lt;br /&gt;
								end&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						if ins and not same then&lt;br /&gt;
							filter(statements, function(st)&lt;br /&gt;
								local val = getValuesFromQualifiers(st.qualifiers).point&lt;br /&gt;
								return not val or val == Values.point&lt;br /&gt;
							end)&lt;br /&gt;
							table.insert(statements, statement)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				if Values.begin then&lt;br /&gt;
					if Values.begin &amp;lt; date then&lt;br /&gt;
						if not Values.ending then&lt;br /&gt;
							table.insert(statements, statement)&lt;br /&gt;
						elseif date &amp;lt; Values.ending then&lt;br /&gt;
							table.insert(statements, statement)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				elseif Values.ending then&lt;br /&gt;
					if date &amp;lt; Values.ending then&lt;br /&gt;
						if not Values.begin then&lt;br /&gt;
							table.insert(statements, statement)&lt;br /&gt;
						elseif Values.begin &amp;lt; date then&lt;br /&gt;
							table.insert(statements, statement)&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	if lib.IsOptionTrue(options, &amp;#039;withlabel&amp;#039;) then&lt;br /&gt;
		filterMainsnak(statements, hasLabel)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	if lib.IsOptionTrue(options, &amp;#039;withsitelink&amp;#039;) then&lt;br /&gt;
		filter(statements, hasSitelink)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	if options.hasproperty then&lt;br /&gt;
		filterMainsnak(statements, hasProperty, options.hasproperty, options.haspropertyvalue)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by class&lt;br /&gt;
	if options.instance then&lt;br /&gt;
		filterMainsnak(statements, isInstance, options.instance)&lt;br /&gt;
		if #statements == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	-- sort statements if needed&lt;br /&gt;
	if options.sort then -- patří to sem?&lt;br /&gt;
		local Sorters = require &amp;#039;Modul:Wikidata/Sorters&amp;#039;&lt;br /&gt;
		Sorters.sortStatements(statements, options)&lt;br /&gt;
	end&lt;br /&gt;
	-- apply filter by limit&lt;br /&gt;
	applyLimit(statements, options.limit)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.filterQualifiers(qualifiers, options)&lt;br /&gt;
	filter(qualifiers, hasSnaktype, options.somevalue and true, options.novalue and true)&lt;br /&gt;
	if #qualifiers == 0 then return end&lt;br /&gt;
	if options.withlang then&lt;br /&gt;
		filter(qualifiers, isInLanguage, options.withlang)&lt;br /&gt;
		if #qualifiers == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	if lib.IsOptionTrue(options, &amp;#039;withlabel&amp;#039;) then&lt;br /&gt;
		filter(qualifiers, hasLabel)&lt;br /&gt;
		if #qualifiers == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	if options.instance then&lt;br /&gt;
		filter(qualifiers, isInstance, options.instance)&lt;br /&gt;
		if #qualifiers == 0 then return end&lt;br /&gt;
	end&lt;br /&gt;
	if options.sort then&lt;br /&gt;
		local Sorters = require &amp;#039;Modul:Wikidata/Sorters&amp;#039;&lt;br /&gt;
		Sorters.sortQualifiers(qualifiers, options)&lt;br /&gt;
	end&lt;br /&gt;
	applyLimit(qualifiers, options.limit)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.filterReferences(references, options)&lt;br /&gt;
	if options.ref == &amp;#039;#any&amp;#039; then&lt;br /&gt;
		-- @deprecated&lt;br /&gt;
		return references&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local oldReferences, References = references, {}&lt;br /&gt;
	if options.ref == &amp;#039;valid&amp;#039; then&lt;br /&gt;
		local map = (require &amp;#039;Modul:Wikidata/cite&amp;#039;).props&lt;br /&gt;
		for _, ref in ipairs(oldReferences) do&lt;br /&gt;
			for _, props in pairs(map) do&lt;br /&gt;
				for _, prop in ipairs(props) do&lt;br /&gt;
					if ref.snaks[prop] then&lt;br /&gt;
						table.insert(References, ref)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if options.min_ref and not checkLimit(References, options.min_ref) then&lt;br /&gt;
		return {}&lt;br /&gt;
	end&lt;br /&gt;
	-- @deprecated&lt;br /&gt;
	return References&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wp&gt;Matěj Suchánek</name></author>
	</entry>
</feed>