<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="az">
	<id>https://wiki.anas.az/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2Fdate</id>
	<title>Modul:Wikidata/date - Redaktə tarixçəsi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.anas.az/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AWikidata%2Fdate"/>
	<link rel="alternate" type="text/html" href="https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/date&amp;action=history"/>
	<updated>2026-05-10T01:26:51Z</updated>
	<subtitle>Vikidə bu səhifənin dəyişikliklər tarixçəsi</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/date&amp;diff=137&amp;oldid=prev</id>
		<title>imported&gt;Toghrul R 10:28, 13 avqust 2025-də</title>
		<link rel="alternate" type="text/html" href="https://wiki.anas.az/mediawiki/index.php?title=Modul:Wikidata/date&amp;diff=137&amp;oldid=prev"/>
		<updated>2025-08-13T10:28:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Yeni səhifə&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Vikidata tarixlərinin nizamlanması&lt;br /&gt;
&lt;br /&gt;
local nowLabel = &amp;#039;&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;hal-hazırda&amp;quot;&amp;gt;h.&amp;amp;nbsp;h.&amp;lt;/abbr&amp;gt;&amp;#039;&lt;br /&gt;
local abbrbc = &amp;#039;&amp;lt;abbr class=&amp;quot;abbr&amp;quot; title=&amp;quot;eradan əvvəl&amp;quot;&amp;gt;e.&amp;amp;nbsp;ə.&amp;lt;/abbr&amp;gt;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
local moduleDates = require( &amp;quot;Modul:Dates&amp;quot; )&lt;br /&gt;
local moduleWikidata = require( &amp;quot;Modul:Wikidata&amp;quot; )&lt;br /&gt;
local Ordinal = require( &amp;quot;Modul:Ordinal&amp;quot; )&lt;br /&gt;
local moduleRoman = require( &amp;quot;Modul:RomanNumber&amp;quot; )&lt;br /&gt;
local dateCat = require(&amp;quot;Modul:Infocards/dateCat&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local function deepcopy(orig)&lt;br /&gt;
	local orig_type = type(orig)&lt;br /&gt;
	local copy&lt;br /&gt;
	if orig_type == &amp;#039;table&amp;#039; then&lt;br /&gt;
		copy = {}&lt;br /&gt;
		for orig_key, orig_value in next, orig, nil do&lt;br /&gt;
			copy[deepcopy(orig_key)] = deepcopy(orig_value)&lt;br /&gt;
		end&lt;br /&gt;
		setmetatable(copy, deepcopy(getmetatable(orig)))&lt;br /&gt;
	else&lt;br /&gt;
		copy = orig&lt;br /&gt;
	end&lt;br /&gt;
	return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ageImpl ( bStructure, bPrecision, dStructure, dPrecision )&lt;br /&gt;
	if ( not bStructure or not dStructure or bPrecision &amp;lt; 10 or dPrecision &amp;lt; 10 ) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local shift = 0&lt;br /&gt;
	if ( bStructure.year &amp;lt; 0 and dStructure.year &amp;gt; 0 ) then&lt;br /&gt;
		shift = -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( bPrecision == 10 or dPrecision == 10 ) then&lt;br /&gt;
		if ( bStructure.month &amp;lt; dStructure.month ) then&lt;br /&gt;
			return dStructure.year - bStructure.year + shift&lt;br /&gt;
		end&lt;br /&gt;
		if ( bStructure.month == dStructure.month ) then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		if ( bStructure.month &amp;gt; dStructure.month ) then&lt;br /&gt;
			return dStructure.year - bStructure.year - 1 + shift&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	if ( bStructure.month &amp;lt; dStructure.month ) then&lt;br /&gt;
		return dStructure.year - bStructure.year + shift&lt;br /&gt;
	end&lt;br /&gt;
	if ( bStructure.month == dStructure.month ) then&lt;br /&gt;
		if ( bStructure.day &amp;lt;= dStructure.day ) then&lt;br /&gt;
			return dStructure.year - bStructure.year + shift&lt;br /&gt;
		else &lt;br /&gt;
			return dStructure.year - bStructure.year - 1 + shift&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if ( bStructure.month &amp;gt; dStructure.month ) then&lt;br /&gt;
		return dStructure.year - bStructure.year - 1 + shift&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ageCurrent ( bTable )&lt;br /&gt;
	local possibleAge = &amp;quot;NYA&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	for bKey, bValue in pairs(bTable) do&lt;br /&gt;
		if ( bValue.unknown ) then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		local bStructure = bValue.structure&lt;br /&gt;
		local bPrecision = bValue.precision&lt;br /&gt;
&lt;br /&gt;
		local dStructure = os.date( &amp;quot;*t&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
		local calculatedAge = ageImpl ( bStructure, bPrecision, dStructure, 11 )&lt;br /&gt;
		if ( possibleAge == &amp;quot;NYA&amp;quot; ) then&lt;br /&gt;
			possibleAge = calculatedAge&lt;br /&gt;
		else&lt;br /&gt;
			if ( possibleAge ~= calculatedAge ) then&lt;br /&gt;
				possibleAge = nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return possibleAge&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function age ( bTable, dTable )&lt;br /&gt;
	local possibleAge = &amp;quot;NYA&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	for bKey, bValue in pairs( bTable ) do&lt;br /&gt;
		if ( bValue.unknown ) then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		local bStructure = bValue.structure&lt;br /&gt;
		local bPrecision = bValue.precision&lt;br /&gt;
&lt;br /&gt;
		for dKey, dValue in pairs( dTable ) do&lt;br /&gt;
			if ( dValue.unknown ) then&lt;br /&gt;
				return nil&lt;br /&gt;
			end&lt;br /&gt;
			local dStructure = dValue.structure&lt;br /&gt;
			local dPrecision = dValue.precision&lt;br /&gt;
			if ( bValue.calendar == &amp;#039;julian&amp;#039; and dValue.calendar == &amp;#039;gregorian&amp;#039; ) then&lt;br /&gt;
				local shift = math.floor(bStructure.year/100-2) - math.floor(bStructure.year/400)&lt;br /&gt;
				bStructure.day = bStructure.day + shift&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			local calculatedAge = ageImpl ( bStructure, bPrecision, dStructure, dPrecision )&lt;br /&gt;
			if ( possibleAge == &amp;quot;NYA&amp;quot; ) then&lt;br /&gt;
				possibleAge = calculatedAge&lt;br /&gt;
			else&lt;br /&gt;
				if ( possibleAge ~= calculatedAge ) then&lt;br /&gt;
					possibleAge = nil&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return possibleAge&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function lastDayOfMonth(y, m)&lt;br /&gt;
	return tonumber(os.date(&amp;quot;*t&amp;quot;, os.time{ year = y, month = m + 1, day = 0 }).day)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeBoundsFromPrecision(structure, precision)&lt;br /&gt;
	if not structure or not precision or precision &amp;lt; 9 then&lt;br /&gt;
		return nil, nil&lt;br /&gt;
	end&lt;br /&gt;
	local earliest = deepcopy(structure)&lt;br /&gt;
	local latest   = deepcopy(structure)&lt;br /&gt;
&lt;br /&gt;
	if precision == 9 then&lt;br /&gt;
		earliest.month, earliest.day = 1, 1&lt;br /&gt;
		latest.month,   latest.day   = 12, 31&lt;br /&gt;
	elseif precision == 10 then&lt;br /&gt;
		earliest.day = 1&lt;br /&gt;
		latest.day   = lastDayOfMonth(latest.year, latest.month)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return earliest, latest&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function mergeBoundsFromTable(t)&lt;br /&gt;
	if not t or #t == 0 then return nil, nil end&lt;br /&gt;
	local globalEarliest, globalLatest = nil, nil&lt;br /&gt;
	for _, v in ipairs(t) do&lt;br /&gt;
		if v.unknown then return nil, nil end&lt;br /&gt;
		local e, l = makeBoundsFromPrecision(v.structure, v.precision)&lt;br /&gt;
		if not e then return nil, nil end&lt;br /&gt;
		if not globalEarliest or os.time(e) &amp;lt; os.time(globalEarliest) then globalEarliest = e end&lt;br /&gt;
		if not globalLatest   or os.time(l) &amp;gt; os.time(globalLatest)   then globalLatest   = l end&lt;br /&gt;
	end&lt;br /&gt;
	return globalEarliest, globalLatest&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ageBetween(bEarliest, bLatest, dEarliest, dLatest)&lt;br /&gt;
	local minAge = ageImpl(bLatest, 11, dEarliest, 11)&lt;br /&gt;
	local maxAge = ageImpl(bEarliest, 11, dLatest, 11)&lt;br /&gt;
	return minAge, maxAge&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ageRange(bTable, dTable)&lt;br /&gt;
	local bE, bL = mergeBoundsFromTable(bTable)&lt;br /&gt;
	local dE, dL = mergeBoundsFromTable(dTable)&lt;br /&gt;
	if not bE or not dE then return nil end&lt;br /&gt;
	local minAge, maxAge = ageBetween(bE, bL, dE, dL)&lt;br /&gt;
	if not minAge or not maxAge then return nil end&lt;br /&gt;
	return minAge, maxAge&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ageRangeCurrent(bTable)&lt;br /&gt;
	local bE, bL = mergeBoundsFromTable(bTable)&lt;br /&gt;
	if not bE then return nil end&lt;br /&gt;
	local now = os.date(&amp;quot;*t&amp;quot;)&lt;br /&gt;
	local minAge = ageImpl(bL, 11, now, 11)&lt;br /&gt;
	local maxAge = ageImpl(bE, 11, now, 11)&lt;br /&gt;
	if not minAge or not maxAge then return nil end&lt;br /&gt;
	return minAge, maxAge&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseISO8601Date(str)&lt;br /&gt;
	local pattern = &amp;quot;(%-?%d+)%-(%d+)%-(%d+)T&amp;quot;&lt;br /&gt;
	local Y, M, D = mw.ustring.match( str, pattern )&lt;br /&gt;
	return tonumber(Y), tonumber(M), tonumber(D)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local function parseISO8601Time(str)&lt;br /&gt;
	local pattern = &amp;quot;T(%d+):(%d+):(%d+)&amp;quot;&lt;br /&gt;
	local H, M, S = mw.ustring.match( str, pattern)&lt;br /&gt;
	return tonumber(H), tonumber(M), tonumber(S)&lt;br /&gt;
end&lt;br /&gt;
 &lt;br /&gt;
local function parseISO8601Offset(str)&lt;br /&gt;
	if str:sub(-1)==&amp;quot;Z&amp;quot; then return 0,0 end&lt;br /&gt;
 &lt;br /&gt;
	local pattern = &amp;quot;([-+])(%d%d):?(%d?%d?)$&amp;quot;&lt;br /&gt;
	local sign, oh, om = mw.ustring.match( str, pattern) &lt;br /&gt;
	sign, oh, om = sign or &amp;quot;+&amp;quot;, oh or &amp;quot;00&amp;quot;, om or &amp;quot;00&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
	return tonumber(sign .. oh), tonumber(sign .. om)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseISO8601(str)&lt;br /&gt;
	if &amp;#039;table&amp;#039; == type(str) then&lt;br /&gt;
		if str.args and str.args[1] then&lt;br /&gt;
			str = &amp;#039;&amp;#039; .. str.args[1]&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;unknown argument type: &amp;#039; .. type( str ) .. &amp;#039;: &amp;#039; .. table.tostring( str )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local Y,M,D = parseISO8601Date(str)&lt;br /&gt;
	local h,m,s = parseISO8601Time(str)&lt;br /&gt;
	local oh,om = parseISO8601Offset(str)&lt;br /&gt;
&lt;br /&gt;
	if not Y or not M or not D or not h or not m or not s or not oh or not om then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tonumber(os.time({ year=Y, month=M, day=D, hour=(h - oh), min=(m - om), sec=s }))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseClaim ( claim )&lt;br /&gt;
	if ( claim.mainsnak.snaktype == &amp;quot;value&amp;quot; ) then&lt;br /&gt;
		local timeISO8601 = string.gsub( string.gsub( tostring( claim.mainsnak.datavalue.value.time ), &amp;#039;-00%-&amp;#039;, &amp;#039;-01-&amp;#039; ), &amp;#039;-00T&amp;#039;, &amp;#039;-01T&amp;#039; )&lt;br /&gt;
		local unixtime = parseISO8601( timeISO8601 )&lt;br /&gt;
		local structure = os.date(&amp;quot;*t&amp;quot;, unixtime)&lt;br /&gt;
		local precision = tonumber( claim.mainsnak.datavalue.value.precision )&lt;br /&gt;
		local calendarmodel = &amp;#039;gregorian&amp;#039;&lt;br /&gt;
		if (mw.ustring.find(claim.mainsnak.datavalue.value.calendarmodel, &amp;#039;Q1985786&amp;#039;, 1, true)) then&lt;br /&gt;
			calendarmodel = &amp;#039;julian&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		local item = { structure=structure, precision=precision, calendar = calendarmodel }&lt;br /&gt;
		return item&lt;br /&gt;
	elseif ( claim.mainsnak.snaktype == &amp;quot;novalue&amp;quot; ) then&lt;br /&gt;
		return { unknown=&amp;quot;novalue&amp;quot; }&lt;br /&gt;
	else&lt;br /&gt;
		return { unknown=&amp;quot;unknown&amp;quot; }&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseProperty ( context, options, propertyId )&lt;br /&gt;
	if ( not context ) then error( &amp;#039;context not specified&amp;#039;); end&lt;br /&gt;
	if ( not options ) then error( &amp;#039;options not specified&amp;#039;); end&lt;br /&gt;
	if ( not options.entity ) then error( &amp;#039;options.entity is missing&amp;#039;); end&lt;br /&gt;
	if ( not propertyId ) then error( &amp;#039;propertyId not specified&amp;#039;); end&lt;br /&gt;
&lt;br /&gt;
	local claims = context.selectClaims( options, propertyId )&lt;br /&gt;
	if not claims then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = {}&lt;br /&gt;
	for key, claim in pairs( claims ) do&lt;br /&gt;
		table.insert ( result, parseClaim( claim ) )&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkDupDates( t )&lt;br /&gt;
	if #t &amp;gt; 1 then&lt;br /&gt;
		local removed = false&lt;br /&gt;
		local j = 1&lt;br /&gt;
		while (j &amp;lt;= #t)  do&lt;br /&gt;
			local i = 1&lt;br /&gt;
			while (i &amp;lt;= #t)  do&lt;br /&gt;
				if i ~= j then&lt;br /&gt;
					if (os.time(t[j].structure) == os.time(t[i].structure)) then&lt;br /&gt;
						if ((t[j].calendar == &amp;#039;gregorian&amp;#039;) and &lt;br /&gt;
							(t[i].calendar == &amp;#039;julian&amp;#039;)) then&lt;br /&gt;
							removed = true&lt;br /&gt;
							break&lt;br /&gt;
						else&lt;br /&gt;
							table.remove(t, i)&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
					  i = i + 1&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					i = i + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if removed then&lt;br /&gt;
				removed = false&lt;br /&gt;
				table.remove(t, j)&lt;br /&gt;
			else&lt;br /&gt;
				j = j+1&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getQualifierWithDataValue( statement, qualifierPropertyId )&lt;br /&gt;
	if ( statement.qualifiers&lt;br /&gt;
			and statement.qualifiers[qualifierPropertyId] ) then&lt;br /&gt;
		local qualifiers = statement.qualifiers[qualifierPropertyId]&lt;br /&gt;
		for _, qualifier in ipairs( qualifiers ) do&lt;br /&gt;
			if (qualifier.datavalue) then&lt;br /&gt;
				return qualifier&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function formatDecade( time, categoryNamePrefix )&lt;br /&gt;
	if ( time.year &amp;lt; 0 ) then&lt;br /&gt;
		local year = math.floor( math.abs(time.year) / 10 ) * 10&lt;br /&gt;
		if ( categoryNamePrefix ) then&lt;br /&gt;
			return &amp;#039;[[e.ə. &amp;#039; .. inYear(year) .. &amp;#039; illər|&amp;#039; .. abbrbc .. &amp;#039; &amp;#039; .. inYear(year) .. &amp;#039; illər]][[Kateqoriya:e.ə. &amp;#039; .. inYear(year) .. &amp;#039; illərdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;e.ə.&amp;#039; .. year .. &amp;#039;&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local year = math.floor( time.year / 10 ) * 10&lt;br /&gt;
		if ( categoryNamePrefix ) then&lt;br /&gt;
			return &amp;#039;[[&amp;#039; .. inYear(year) .. &amp;#039; illər]][[Kateqoriya:&amp;#039; .. inYear(year) .. &amp;#039; illərdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;&amp;#039; .. year&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatCentury( time, categoryNamePrefix )&lt;br /&gt;
if ( time.year &amp;lt; 0 ) then&lt;br /&gt;
    local century = math.floor( (math.abs( time.year) - 1) / 100 ) + 1;&lt;br /&gt;
    local infix = &amp;#039;  &amp;#039;;&lt;br /&gt;
    if century == 2 then infix = &amp;#039;  &amp;#039;; end;&lt;br /&gt;
    if ( moduleRoman ) then&lt;br /&gt;
        century = moduleRoman.toRomanNumber( century )&lt;br /&gt;
    end&lt;br /&gt;
    if ( categoryNamePrefix ) then&lt;br /&gt;
        return &amp;#039;[[e.ə. &amp;#039; .. century .. &amp;#039; əsr|&amp;#039; .. abbrbc .. &amp;#039; &amp;#039; ..  century .. &amp;#039; əsr]][[Kateqoriya:e.ə. &amp;#039; .. century .. &amp;#039; əsrdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;[[e.ə. &amp;#039; .. century .. &amp;#039; əsr| &amp;#039; .. century .. &amp;#039; əsr]]&amp;#039;&lt;br /&gt;
    end&lt;br /&gt;
else&lt;br /&gt;
    local century = math.floor( (time.year - 1) / 100 ) + 1&lt;br /&gt;
    local infix = &amp;#039;  &amp;#039;&lt;br /&gt;
    if (century == 2) then infix = &amp;#039; &amp;#039; end;&lt;br /&gt;
    if ( moduleRoman ) then&lt;br /&gt;
        century = moduleRoman.toRomanNumber( century )&lt;br /&gt;
    end&lt;br /&gt;
    if ( categoryNamePrefix ) then&lt;br /&gt;
        return &amp;#039;[[&amp;#039; .. century .. &amp;#039; əsr]][[Kateqoriya:&amp;#039; .. century .. &amp;#039; əsrdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
    else&lt;br /&gt;
        return &amp;#039;[[&amp;#039; .. century .. &amp;#039; əsr]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatMillenium( time, categoryNamePrefix )&lt;br /&gt;
	if ( time.year &amp;lt; 0 ) then&lt;br /&gt;
		local millenium = math.floor( (math.abs( time.year) - 1) / 1000 ) + 1&lt;br /&gt;
        local infix = &amp;#039;  &amp;#039;&lt;br /&gt;
        if millenium == 2 then infix = &amp;#039;  &amp;#039;; end&lt;br /&gt;
		if ( moduleRoman ) then&lt;br /&gt;
			millenium = moduleRoman.toRomanNumber( millenium )&lt;br /&gt;
		end&lt;br /&gt;
		if ( categoryNamePrefix ) then&lt;br /&gt;
			if ( millenium == 2 ) then&lt;br /&gt;
				return &amp;#039;[[e.ə. &amp;#039; .. millenium .. &amp;#039; minillik|&amp;#039; .. abbrbc .. &amp;#039; &amp;#039; ..  millenium .. &amp;#039; minillik]][[Kateqoriya:e.ə. &amp;#039; .. millenium .. &amp;#039; minillikdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			else	&lt;br /&gt;
				return &amp;#039;[[e.ə. &amp;#039; .. millenium .. &amp;#039; minillik|&amp;#039; .. abbrbc .. &amp;#039; &amp;#039; ..  millenium .. &amp;#039; minillik]][[Kateqoriya:e.ə. &amp;#039; .. millenium .. &amp;#039; minillikdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			end	&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;[[e.ə. &amp;#039; .. millenium .. &amp;#039; minillik|&amp;#039; .. abbrbc .. &amp;#039; &amp;#039; ..  millenium .. &amp;#039; minillik]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local millenium = math.floor( (time.year - 1) / 1000 ) + 1&lt;br /&gt;
        local infix = &amp;#039;  &amp;#039;;&lt;br /&gt;
        if (millenium == 2) then infix = &amp;#039; &amp;#039; end&lt;br /&gt;
		if ( moduleRoman ) then&lt;br /&gt;
			millenium = moduleRoman.toRomanNumber( millenium )&lt;br /&gt;
		end&lt;br /&gt;
		if ( categoryNamePrefix ) then&lt;br /&gt;
			if ( millenium == 2 ) then&lt;br /&gt;
				return &amp;#039;[[&amp;#039; .. millenium .. &amp;#039; minillik]][[Kateqoriya:&amp;#039; .. millenium .. &amp;#039; minillikdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			else&lt;br /&gt;
				return &amp;#039;[[&amp;#039; .. millenium .. &amp;#039; minillik]][[Kateqoriya:&amp;#039; .. millenium .. &amp;#039; minillikdə &amp;#039; .. categoryNamePrefix .. &amp;#039;]]&amp;#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;[[&amp;#039; .. millenium .. &amp;#039; minillik]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatDateImpl( value, options, microformatClass, categoryPrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
	if ( not value ) then error( &amp;#039;value not specified&amp;#039;); end&lt;br /&gt;
	if ( not options ) then error( &amp;#039;options not specified&amp;#039;); end&lt;br /&gt;
&lt;br /&gt;
	local timeISO8601 = string.gsub( string.gsub( tostring( value.time ), &amp;#039;-00%-&amp;#039;, &amp;#039;-01-&amp;#039; ), &amp;#039;-00T&amp;#039;, &amp;#039;-01T&amp;#039; )&lt;br /&gt;
	local unixtime = parseISO8601( timeISO8601 )&lt;br /&gt;
	&lt;br /&gt;
	if not unixtime then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local structure = os.date(&amp;quot;*t&amp;quot;, unixtime)&lt;br /&gt;
	local precision = tonumber( value.precision )&lt;br /&gt;
	&lt;br /&gt;
	if precision &amp;lt;= 6 then&lt;br /&gt;
		return formatMillenium(structure, categoryPrefix)&lt;br /&gt;
	end	&lt;br /&gt;
	if precision == 7 then&lt;br /&gt;
		return formatCentury(structure, categoryPrefix)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if precision == 8 then&lt;br /&gt;
		return formatDecade(structure, categoryPrefix)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if precision == 9 then&lt;br /&gt;
		local tCopy = deepcopy( structure )&lt;br /&gt;
		tCopy.day = nil&lt;br /&gt;
		tCopy.month = nil&lt;br /&gt;
		return moduleDates.formatWikiImpl(tCopy, tCopy, microformatClass, categoryPrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if precision == 10 then&lt;br /&gt;
		local tCopy = deepcopy( structure )&lt;br /&gt;
		tCopy.day = nil&lt;br /&gt;
		return moduleDates.formatWikiImpl(tCopy, tCopy, microformatClass, categoryPrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local calendarmodel = &amp;#039;gregorian&amp;#039;&lt;br /&gt;
	if (mw.ustring.find(value.calendarmodel, &amp;#039;Q1985786&amp;#039;, 1, true)) then&lt;br /&gt;
		calendarmodel = &amp;#039;julian&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (calendarmodel == &amp;#039;gregorian&amp;#039;) then&lt;br /&gt;
		return moduleDates.formatWikiImpl( structure, structure, microformatClass, categoryPrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
	else&lt;br /&gt;
		return p.formatAsJulian( unixtime, microformatClass, categoryPrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function formatApproximateDateClaim( context, options, statement, unknownDateCategory )&lt;br /&gt;
	if ( not context ) then error( &amp;#039;context not specified&amp;#039;); end&lt;br /&gt;
	if ( not options ) then error( &amp;#039;options not specified&amp;#039;); end&lt;br /&gt;
	if ( not options.entity ) then error( &amp;#039;options.entity is missing&amp;#039;); end&lt;br /&gt;
	if ( not statement ) then error( &amp;#039;statement not specified&amp;#039;); end&lt;br /&gt;
	if options.nocat then unknownDateCategory = &amp;quot;&amp;quot; end&lt;br /&gt;
	&lt;br /&gt;
	local qNotSoonerThan = getQualifierWithDataValue( statement, &amp;#039;P1319&amp;#039; )&lt;br /&gt;
	local qNotLaterThan = getQualifierWithDataValue( statement, &amp;#039;P1326&amp;#039; )&lt;br /&gt;
	if ( qNotSoonerThan or qNotLaterThan ) then&lt;br /&gt;
		local results = {}&lt;br /&gt;
		if ( qNotSoonerThan ) then&lt;br /&gt;
			local formattedDate = formatDateImpl( qNotSoonerThan.datavalue.value, {}, nil, nil, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
			local value = &amp;#039;ən&amp;amp;nbsp;tezi&amp;amp;nbsp;&amp;#039; .. context.wrapSnak( formattedDate, qNotSoonerThan.hash )&lt;br /&gt;
			table.insert( results, context.wrapQualifier( value, &amp;#039;P1319&amp;#039; ) )&lt;br /&gt;
		end&lt;br /&gt;
		if ( qNotLaterThan ) then&lt;br /&gt;
			local formattedDate = formatDateImpl( qNotLaterThan.datavalue.value, {}, nil, nil, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
			local value = &amp;#039;ən&amp;amp;nbsp;geci&amp;amp;nbsp;&amp;#039; .. context.wrapSnak( formattedDate, qNotLaterThan.hash )&lt;br /&gt;
			table.insert( results, context.wrapQualifier( value, &amp;#039;P1326&amp;#039; ) )&lt;br /&gt;
		end&lt;br /&gt;
		return mw.text.listToText( results, &amp;#039; və &amp;#039; , &amp;#039; və &amp;#039; ) .. unknownDateCategory .. context.formatRefs( options, statement )&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
	function p.formatDateOfBirthClaim( context, options, statement )&lt;br /&gt;
	local value = formatApproximateDateClaim( context, options, statement, dateCat.categoryUnknownBirthDate)&lt;br /&gt;
	if value then&lt;br /&gt;
		return value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    options[&amp;#039;conjunction&amp;#039;] = &amp;#039;&amp;amp;#32;və ya&amp;amp;#32;&amp;#039;&lt;br /&gt;
    options[&amp;#039;value-module&amp;#039;] = &amp;#039;Wikidata/date&amp;#039;&lt;br /&gt;
    options[&amp;#039;value-function&amp;#039;] = &amp;#039;formatBirthDate&amp;#039;&lt;br /&gt;
    options.i18n.somevalue = &amp;#039;\&amp;#039;\&amp;#039;bilinmir\&amp;#039;\&amp;#039;&amp;#039; .. dateCat.categoryUnknownBirthDate&lt;br /&gt;
	local result = context.formatStatementDefault( context, options, statement )&lt;br /&gt;
&lt;br /&gt;
	local bTable = { parseClaim( statement ) }&lt;br /&gt;
	local dTable = parseProperty ( context, options, &amp;#039;P570&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
	if ( bTable and not dTable ) then&lt;br /&gt;
		local ageExact = ageCurrent( bTable )&lt;br /&gt;
		if ( ageExact ) then&lt;br /&gt;
			if ( options.suppressAge == nil or options.suppressAge == &amp;#039;&amp;#039; ) then&lt;br /&gt;
				result = result .. &amp;#039; &amp;lt;span style=&amp;quot;white-space:nowrap; font-size:95%;&amp;quot;&amp;gt;(&amp;#039; .. ageExact .. &amp;#039;\194\160yaş)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
				if ( ageExact &amp;gt;= 100 ) then&lt;br /&gt;
					result = result .. dateCat.categoryCentenarians&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if ( not options.nocat ) then&lt;br /&gt;
				if ( ageExact &amp;gt;= 90 and ageExact &amp;lt; 100 ) then&lt;br /&gt;
					result = result .. dateCat.categoryBigCurrentAge&lt;br /&gt;
				elseif (ageExact &amp;gt;= 0) then&lt;br /&gt;
					result = result .. dateCat.categoryBiographiesOfLivingPersons&lt;br /&gt;
				else&lt;br /&gt;
					result = result .. dateCat.categoryNegativeAge&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local minAge, maxAge = ageRangeCurrent( bTable )&lt;br /&gt;
			if minAge and maxAge and (options.suppressAge == nil or options.suppressAge == &amp;#039;&amp;#039;) then&lt;br /&gt;
				if minAge == maxAge then&lt;br /&gt;
					result = result .. &amp;#039; &amp;lt;span style=&amp;quot;white-space:nowrap; font-size:95%;&amp;quot;&amp;gt;(&amp;#039; .. minAge .. &amp;#039;\194\160yaş)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					if ( not options.nocat ) then&lt;br /&gt;
						if ( minAge &amp;gt;= 90 and minAge &amp;lt; 100 ) then&lt;br /&gt;
							result = result .. dateCat.categoryBigCurrentAge&lt;br /&gt;
						elseif (minAge &amp;gt;= 0) then&lt;br /&gt;
							result = result .. dateCat.categoryBiographiesOfLivingPersons&lt;br /&gt;
						else&lt;br /&gt;
							result = result .. dateCat.categoryNegativeAge&lt;br /&gt;
						end&lt;br /&gt;
						if ( minAge &amp;gt;= 100 ) then&lt;br /&gt;
							result = result .. dateCat.categoryCentenarians&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					result = result .. &amp;#039; &amp;lt;span style=&amp;quot;white-space:nowrap; font-size:95%;&amp;quot;&amp;gt;(&amp;#039; .. minAge .. &amp;#039;–&amp;#039; .. maxAge .. &amp;#039;\194\160yaş)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					if ( not options.nocat ) then&lt;br /&gt;
						result = result .. dateCat.categoryBiographiesOfLivingPersons&lt;br /&gt;
						if ( minAge &amp;gt;= 90 and maxAge &amp;lt; 100 ) then&lt;br /&gt;
							result = result .. dateCat.categoryBigCurrentAge&lt;br /&gt;
						end&lt;br /&gt;
						if ( minAge &amp;gt;= 100 and maxAge &amp;gt;= 100 ) then&lt;br /&gt;
							result = result .. dateCat.categoryCentenarians&lt;br /&gt;
						end&lt;br /&gt;
						if ( maxAge &amp;lt; 0 ) then&lt;br /&gt;
							result = result .. dateCat.categoryNegativeAge&lt;br /&gt;
						end&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;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDateOfDeathClaim( context, options, statement )&lt;br /&gt;
	local value = formatApproximateDateClaim( context, options, statement, dateCat.categoryUnknownDeathDate )&lt;br /&gt;
	if value then&lt;br /&gt;
		return value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
    options[&amp;#039;conjunction&amp;#039;] = &amp;#039;&amp;amp;#32;və ya&amp;amp;#32;&amp;#039;;&lt;br /&gt;
    options[&amp;#039;value-module&amp;#039;] = &amp;#039;Wikidata/date&amp;#039;;&lt;br /&gt;
    options[&amp;#039;value-function&amp;#039;] = &amp;#039;formatDeathDate&amp;#039;;&lt;br /&gt;
    options.i18n.somevalue = &amp;#039;\&amp;#039;\&amp;#039;bilinmir\&amp;#039;\&amp;#039;&amp;#039; .. dateCat.categoryUnknownDeathDate&lt;br /&gt;
	local result = context.formatStatementDefault( context, options, statement )&lt;br /&gt;
&lt;br /&gt;
	local bTable = parseProperty ( context, options, &amp;#039;P569&amp;#039; )&lt;br /&gt;
	local dTable = { parseClaim( statement ) };&lt;br /&gt;
&lt;br /&gt;
	if ( bTable and dTable ) then&lt;br /&gt;
		local ageExact = age( bTable, dTable )&lt;br /&gt;
		if ( ageExact ) then&lt;br /&gt;
			if ( options.suppressAge == nil or options.suppressAge == &amp;#039;&amp;#039; ) then&lt;br /&gt;
				result = result .. &amp;#039; &amp;lt;span style=&amp;quot;white-space:nowrap; font-size:95%;&amp;quot;&amp;gt;(&amp;#039; .. ageExact .. &amp;#039;\194\160yaşında)&amp;lt;/span&amp;gt;&amp;#039; .. &amp;#039;[[Kateqoriya:&amp;#039; .. ageExact .. &amp;#039; yaşında vəfat edənlər]]&amp;#039;&lt;br /&gt;
				if ( ageExact &amp;gt;= 100 ) then&lt;br /&gt;
					result = result .. dateCat.categoryCentenarians&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if ( not options.nocat and ageExact &amp;lt; 0) then&lt;br /&gt;
				result = result .. dateCat.categoryNegativeAge&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			local minAge, maxAge = ageRange( bTable, dTable )&lt;br /&gt;
			if minAge and maxAge and (options.suppressAge == nil or options.suppressAge == &amp;#039;&amp;#039;) then&lt;br /&gt;
				if minAge == maxAge then&lt;br /&gt;
					result = result .. &amp;#039; &amp;lt;span style=&amp;quot;white-space:nowrap; font-size:95%;&amp;quot;&amp;gt;(&amp;#039; .. minAge .. &amp;#039;\194\160yaşında)&amp;lt;/span&amp;gt;&amp;#039; .. &amp;#039;[[Kateqoriya:&amp;#039; .. minAge .. &amp;#039; yaşında vəfat edənlər]]&amp;#039;&lt;br /&gt;
					if ( minAge &amp;gt;= 100 ) then&lt;br /&gt;
						result = result .. dateCat.categoryCentenarians&lt;br /&gt;
					end&lt;br /&gt;
					if ( not options.nocat and minAge &amp;lt; 0 ) then&lt;br /&gt;
						result = result .. dateCat.categoryNegativeAge&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					result = result .. &amp;#039; &amp;lt;span style=&amp;quot;white-space:nowrap; font-size:95%;&amp;quot;&amp;gt;(&amp;#039; .. minAge .. &amp;#039;–&amp;#039; .. maxAge .. &amp;#039;\194\160yaşında)&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
					if ( not options.nocat and minAge &amp;gt;= 100 and maxAge &amp;gt;= 100 ) then&lt;br /&gt;
						result = result .. dateCat.categoryCentenarians&lt;br /&gt;
					end&lt;br /&gt;
					if ( not options.nocat and maxAge &amp;lt; 0 ) then&lt;br /&gt;
						result = result .. dateCat.categoryNegativeAge&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		local unixAvailable, unixDateOfDeath = pcall(function()&lt;br /&gt;
			local r = os.time(dTable[1].structure)&lt;br /&gt;
			if ( r ~= os.time() ) then&lt;br /&gt;
				return r&lt;br /&gt;
			end&lt;br /&gt;
			error()&lt;br /&gt;
		end)&lt;br /&gt;
		if ( unixAvailable and os.time() - unixDateOfDeath &amp;lt; 31536000 and not options.nocat ) then&lt;br /&gt;
			result = result .. dateCat.categoryRecentlyDeceased&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatBirthDate( context, options, value )&lt;br /&gt;
	if ( not context ) then error( &amp;#039;context not specified&amp;#039;); end&lt;br /&gt;
	if ( not options ) then error( &amp;#039;options not specified&amp;#039;); end&lt;br /&gt;
	if ( not value ) then error( &amp;#039;value not specified&amp;#039;); end&lt;br /&gt;
	&lt;br /&gt;
	local microformatClass = nil&lt;br /&gt;
	if options.microformat ~= &amp;#039;-&amp;#039; then&lt;br /&gt;
		microformatClass = options.microformat or &amp;#039;bday&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if ( options.nocat ) then&lt;br /&gt;
		return formatDateImpl( value, options, microformatClass, nil, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
	else&lt;br /&gt;
		return formatDateImpl( value, options, microformatClass, &amp;#039;doğulanlar&amp;#039;, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDeathDate( context, options, value )&lt;br /&gt;
	if ( not context ) then error( &amp;#039;context not specified&amp;#039;); end&lt;br /&gt;
	if ( not options ) then error( &amp;#039;options not specified&amp;#039;); end&lt;br /&gt;
	if ( not value ) then error( &amp;#039;value not specified&amp;#039;); end&lt;br /&gt;
&lt;br /&gt;
	local microformatClass = nil&lt;br /&gt;
	if options.microformat ~= &amp;#039;-&amp;#039; then&lt;br /&gt;
		microformatClass = options.microformat or &amp;#039;dday&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	if ( options.nocat and options.nocat ~= &amp;#039;&amp;#039; ) then&lt;br /&gt;
		return formatDateImpl( value, options, microformatClass, nil, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
	else&lt;br /&gt;
		return formatDateImpl( value, options, microformatClass, &amp;#039;vəfat edənlər&amp;#039;, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDate( context, options, value )&lt;br /&gt;
	if ( not context ) then error( &amp;#039;context not specified&amp;#039;); end&lt;br /&gt;
	if ( not options ) then error( &amp;#039;options not specified&amp;#039;); end&lt;br /&gt;
	if ( not value ) then error( &amp;#039;value not specified&amp;#039;); end&lt;br /&gt;
&lt;br /&gt;
	local microformatClass = options.microformat or nil&lt;br /&gt;
	if ( options.nocat and options.nocat ~= &amp;#039;&amp;#039; ) then&lt;br /&gt;
		return formatDateImpl( value, options, microformatClass, nil, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
	else&lt;br /&gt;
		local categoryPrefix = options.categoryPrefix or nil&lt;br /&gt;
		return formatDateImpl( value, options, microformatClass, categoryPrefix, options.leftBracket, options.rightBracket, options.nolinks )&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.formatDateIntervalProperty( context, options )&lt;br /&gt;
	if ( not context ) then error( &amp;#039;context not specified&amp;#039; ); end&lt;br /&gt;
	if ( not options ) then error( &amp;#039;options not specified&amp;#039; ); end&lt;br /&gt;
	if ( not options.entity ) then error( &amp;#039;options.entity missing&amp;#039; ); end&lt;br /&gt;
&lt;br /&gt;
	local WDS = require( &amp;#039;Module:WikidataSelectors&amp;#039; )&lt;br /&gt;
	local fromProperty = options.property&lt;br /&gt;
	if options.from and options.from ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		fromProperty = options.from&lt;br /&gt;
	end&lt;br /&gt;
	local fromClaims = WDS.filter( options.entity.claims, fromProperty )&lt;br /&gt;
	local toClaims = WDS.filter( options.entity.claims, options.to )&lt;br /&gt;
	local withinClaims = WDS.filter( options.entity.claims, options.within )&lt;br /&gt;
&lt;br /&gt;
	if fromClaims == nil and toClaims == nil then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local formattedFromClaims = {}&lt;br /&gt;
	if fromClaims then&lt;br /&gt;
		for i, claim in ipairs( fromClaims ) do&lt;br /&gt;
			local formattedStatement = context.formatStatement( options, claim )&lt;br /&gt;
			if formattedStatement then&lt;br /&gt;
				formattedStatement = &amp;#039;&amp;lt;span class=&amp;quot;wikidata-claim&amp;quot; data-wikidata-property-id=&amp;quot;&amp;#039; .. string.upper( options.property ) .. &amp;#039;&amp;quot; data-wikidata-claim-id=&amp;quot;&amp;#039; .. claim.id .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. formattedStatement .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
				table.insert( formattedFromClaims, formattedStatement )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local formattedToClaims = {}&lt;br /&gt;
	local toOptions = deepcopy( options )&lt;br /&gt;
	toOptions.property = options.to&lt;br /&gt;
	toOptions.novalue = nowLabel&lt;br /&gt;
	if toClaims then&lt;br /&gt;
		for i, claim in ipairs( toClaims ) do&lt;br /&gt;
			local formattedStatement = context.formatStatement( toOptions, claim )&lt;br /&gt;
			if formattedStatement then&lt;br /&gt;
				formattedStatement = &amp;#039;&amp;lt;span class=&amp;quot;wikidata-claim&amp;quot; data-wikidata-property-id=&amp;quot;&amp;#039; .. string.upper( toOptions.property ) .. &amp;#039;&amp;quot; data-wikidata-claim-id=&amp;quot;&amp;#039; .. claim.id .. &amp;#039;&amp;quot;&amp;gt;&amp;#039; .. formattedStatement .. &amp;#039;&amp;lt;/span&amp;gt;&amp;#039;&lt;br /&gt;
				table.insert( formattedToClaims, formattedStatement )&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local out = &amp;#039;&amp;#039;&lt;br /&gt;
	local fromOut = mw.text.listToText( formattedFromClaims, options.separator, options.conjunction )&lt;br /&gt;
	local toOut = mw.text.listToText( formattedToClaims, options.separator, options.conjunction )&lt;br /&gt;
	&lt;br /&gt;
	if fromOut ~= &amp;#039;&amp;#039; or toOut ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if fromOut ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			out = fromOut&lt;br /&gt;
		else&lt;br /&gt;
			out = &amp;#039;?&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if toOut ~= &amp;#039;&amp;#039; then&lt;br /&gt;
			out = out .. &amp;#039;–&amp;#039; .. toOut&lt;br /&gt;
		else&lt;br /&gt;
			local withinClaims2 = nil&lt;br /&gt;
			if options.within then&lt;br /&gt;
				withinClaims2 = WDS.filter( options.entity.claims, options.within )&lt;br /&gt;
			end&lt;br /&gt;
			if withinClaims2 ~= nil then&lt;br /&gt;
				out = &amp;#039;&amp;#039; .. out&lt;br /&gt;
			else&lt;br /&gt;
				out = out .. &amp;#039;–&amp;#039; .. nowLabel&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if out ~= &amp;#039;&amp;#039; then&lt;br /&gt;
		if options.before then&lt;br /&gt;
			out = options.before .. out&lt;br /&gt;
		end&lt;br /&gt;
		if options.after then&lt;br /&gt;
			out = out .. options.after&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lowestBoundary = parseISO8601(&amp;#039;-900-02-20T00:00:00Z&amp;#039;)&lt;br /&gt;
local mainBoundary = parseISO8601(&amp;#039;1582-10-05T00:00:00Z&amp;#039;)&lt;br /&gt;
local lastBoundary = parseISO8601(&amp;#039;1926-01-31T00:00:00Z&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local boundaries = {&lt;br /&gt;
	{ lowestBoundary,                       -9 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;-700-02-29T00:00:00Z&amp;#039;), -8 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;-600-02-29T00:00:00Z&amp;#039;), -7 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;-500-02-29T00:00:00Z&amp;#039;), -6 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;-300-02-29T00:00:00Z&amp;#039;), -5 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;-200-02-29T00:00:00Z&amp;#039;), -4 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;-100-02-29T00:00:00Z&amp;#039;), -3 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0000-00-00T00:00:00Z&amp;#039;), -2 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0100-02-29T00:00:00Z&amp;#039;), -1 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0200-02-29T00:00:00Z&amp;#039;),  0 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0300-02-29T00:00:00Z&amp;#039;),  1 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0500-02-29T00:00:00Z&amp;#039;),  2 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0600-02-29T00:00:00Z&amp;#039;),  3 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0700-02-29T00:00:00Z&amp;#039;),  4 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;0900-02-29T00:00:00Z&amp;#039;),  5 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1000-02-29T00:00:00Z&amp;#039;),  6 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1100-02-29T00:00:00Z&amp;#039;),  7 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1300-02-29T00:00:00Z&amp;#039;),  8 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1400-02-29T00:00:00Z&amp;#039;),  9 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1500-02-29T00:00:00Z&amp;#039;), 10 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1700-02-29T00:00:00Z&amp;#039;), 11 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1800-02-29T00:00:00Z&amp;#039;), 12 },&lt;br /&gt;
	{ parseISO8601(&amp;#039;1900-02-29T00:00:00Z&amp;#039;), 13 },&lt;br /&gt;
	{ lastBoundary, &amp;#039;&amp;#039; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.formatAsJulian( julTime, infocardClass, categoryNamePrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
	if &amp;#039;table&amp;#039; == type( julTime ) then&lt;br /&gt;
		if julTime.args and julTime.args[1] then&lt;br /&gt;
			julTime = tonumber( julTime.args[1] )&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;unknown argument type: &amp;#039; .. type( julTime ) .. &amp;#039;: &amp;#039; .. table.tostring( julTime )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local t = os.date( &amp;quot;*t&amp;quot;, julTime )&lt;br /&gt;
	if ( julTime &amp;lt;= lowestBoundary ) then&lt;br /&gt;
		return &amp;quot;&amp;#039;&amp;#039;yanlış tarix (etibarsız dəqiqlik)&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if ( julTime &amp;gt;= lastBoundary ) then&lt;br /&gt;
		return &amp;quot;&amp;#039;&amp;#039;yanlış tarix (yuli təqvimi 1926-01-01 tarixindən sonra istifadə olunmur)&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for i=1,#boundaries,1 do&lt;br /&gt;
		local b1 = boundaries[i][1]&lt;br /&gt;
		local b2 = boundaries[i + 1][1]&lt;br /&gt;
		if ( b1 &amp;lt;= julTime and julTime &amp;lt; b2 ) then&lt;br /&gt;
			local b1s = os.date( &amp;quot;*t&amp;quot;, b1 )&lt;br /&gt;
			if ( b1s.year == t.year and b1s.month == t.month and b1s.day == t.day) then&lt;br /&gt;
				if ( julTime &amp;lt; mainBoundary ) then&lt;br /&gt;
					return moduleDates.formatWikiImpl( {year=t.year, month=2, day=29}, {year=t.year, month=2, day=29}, infocardClass, categoryNamePrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
				else&lt;br /&gt;
					return moduleDates.formatWikiImpl( {year=t.year, month=2, day=29}, t, infocardClass, categoryNamePrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				local gregTime = os.date( &amp;quot;*t&amp;quot;, julTime + boundaries[i][2] * 24 * 60 * 60 )&lt;br /&gt;
				if ( julTime &amp;lt; mainBoundary ) then&lt;br /&gt;
					return moduleDates.formatWikiImpl( t, t, infocardClass, categoryNamePrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
				else&lt;br /&gt;
					return moduleDates.formatWikiImpl( t, gregTime, infocardClass, categoryNamePrefix, leftBracket, rightBracket, nolinks )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if ( julTime &amp;gt;= lastBoundary ) then&lt;br /&gt;
		return &amp;quot;&amp;#039;&amp;#039;Modul:Wikidata/date daxilində xəta&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Toghrul R</name></author>
	</entry>
</feed>