Butun axtardiqlarinizi tapmaq ucun buraya: DAXIL OLUN
  Mp4 Mp3 Axtar Yukle
  Video Axtar Yukle
  Shekil Axtar Yukle
  Informasiya Melumat Axtar
  Hazir Inshalar Toplusu
  AZERI CHAT + Tanishliq
  1-11 Sinif Derslikler Yukle
  Saglamliq Tibbi Melumat
  Whatsapp Plus Yukle(Yeni)

  • Ana səhifə
  • Təsadüfi
  • Yaxınlıqdakılar
  • Daxil ol
  • Nizamlamalar
İndi ianə et Əgər Vikipediya sizin üçün faydalıdırsa, bu gün ianə edin.

Modul:Infocards/qaralama

  • Modul
  • Müzakirə
  • Mənbəyə bax
< Modul:Infocards
Sənədləşdirmə
[bax | | tarixçə | yenilə]
Diqqət! Bu modul ən azı 2000 səhifədə istifadə olunur.
Modulda hər hansı dəyişiklik etdikdə Vikimedia Fondunun serverlərində əhəmiyyətli yüklənmə yarana bilər. Lütfən, dəyişikliklərinizin adekvatlığına və düzgünlüyünə əmin olun, onları əvvəlcə istifadəçi alt səhifələrinizdə sınaqdan keçirin. İcra etməyi düşündüyünüz dəyişiklikləri, zəhmət olmasa, öncə müzakirə səhifəsində məsləhətləşin.

dateOfBirth funksiyası nümunələri

  • {{#invoke:Infocards/qaralama|dateOfBirth|-382|−336}} → e.ə. 382(-382)
  • {{#invoke:Infocards/qaralama|dateOfBirth|11.1|}} → 11 yanvar
  • {{#invoke:Infocards/qaralama|dateOfBirth|24.12.3|15.01.69}} → 24 dekabr 3(0003-12-24)
  • {{#invoke:Infocards/qaralama|dateOfBirth|23.09.-63|19.08.14}} → 23 sentyabr e.ə. 63(-063-09-23)
  • {{#invoke:Infocards/qaralama|dateOfBirth|42|9.6.42}} → 42(0042)
  • {{#invoke:Infocards/qaralama|dateOfBirth|870|13.8.900}} → 870(0870)
  • {{#invoke:Infocards/qaralama|dateOfBirth||22.01.984}} →
  • {{#invoke:Infocards/qaralama|dateOfBirth|16.06.1066|vəfat tarixi bilinmir}} → 16 iyun 1066(1066-06-16)
  • {{#invoke:Infocards/qaralama|dateOfBirth|8.2.1834 (27.1)|2.2.1907 (20.1)}} → 27 yanvar (8 fevral) 1834(1834-02-08)
  • {{#invoke:Infocards/qaralama|dateOfBirth|29.06.1844 (17)|28.10.1883 (16)}} → 17 (29) iyun 1844(1844-06-29)
  • {{#invoke:Infocards/qaralama|dateOfBirth|19.7.1893 (7)|}} → 7 (19) iyul 1893(1893-07-19)
  • {{#invoke:Infocards/qaralama|dateOfBirth|3.10.1895 (21.9)|28.12.1925}} → 21 sentyabr (3 oktyabr) 1895(1895-10-03)
  • {{#invoke:Infocards/qaralama|dateOfBirth|4.10.1916|8.11.2009}} → 4 oktyabr 1916(1916-10-04)
  • {{#invoke:Infocards/qaralama|dateOfBirth|09.06.1942|}} → 9 iyun 1942(1942-06-09) (82 yaş)
  • {{#invoke:Infocards/qaralama|dateOfBirth|1955|}} → 1955(1955)
  • {{#invoke:Infocards/qaralama|dateOfBirth|4.1955|}} → aprel 1955(1955-04)
  • {{#invoke:Infocards/qaralama|dateOfBirth|6.8|}} → 6 avqust
  • {{#invoke:Infocards/qaralama|dateOfBirth|29.02.1984|}} → 29 fevral 1984(1984-02-29) (41 yaş)
  • {{#invoke:Infocards/qaralama|dateOfBirth||}} →
  • {{#invoke:Infocards/qaralama|dateOfBirth|4.1.1885 (23.12.1884)|17.5.1951}} → 23 dekabr 1884 (4 yanvar 1885)(1885-01-04)

dateOfDeath funksiyası nümunələri

  • {{#invoke:Infocards/qaralama|dateOfDeath|-382|−336}} → e.ə. 336(-336)
  • {{#invoke:Infocards/qaralama|dateOfDeath|24.12.3|15.01.69}} → 15 yanvar 69(0069-01-15) (65 yaşında)
  • {{#invoke:Infocards/qaralama|dateOfDeath|23.09.-63|19.08.14}} → 19 avqust 14(0014-08-19) (76 yaşında)
  • {{#invoke:Infocards/qaralama|dateOfDeath|42|9.6.42}} → 9 iyun 42(0042-06-09)
  • {{#invoke:Infocards/qaralama|dateOfDeath|870|13.8.900}} → 13 avqust 900(0900-08-13)
  • {{#invoke:Infocards/qaralama|dateOfDeath||22.01.984}} → 22 yanvar 984(0984-01-22)
  • {{#invoke:Infocards/qaralama|dateOfDeath|16.06.1066|vəfat tarixi bilinmir}} → vəfat tarixi bilinmir
  • {{#invoke:Infocards/qaralama|dateOfDeath|8.2.1834 (27.1)|2.2.1907 (20.1)}} → 20 yanvar (2 fevral) 1907(1907-02-02) (72 yaşında)
  • {{#invoke:Infocards/qaralama|dateOfDeath|29.06.1844 (17)|28.10.1883 (16)}} → 16 (28) oktyabr 1883(1883-10-28) (39 yaşında)
  • {{#invoke:Infocards/qaralama|dateOfDeath|19.7.1893 (7)|}} → 14 aprel 1930(1930-04-14) (36 yaşında)
  • {{#invoke:Infocards/qaralama|dateOfDeath|3.10.1895 (21.9)|28.12.1925}} → 28 dekabr 1925(1925-12-28) (30 yaşında)
  • {{#invoke:Infocards/qaralama|dateOfDeath|4.10.1916|8.11.2009}} → 8 noyabr 2009(2009-11-08) (93 yaşında)
  • {{#invoke:Infocards/qaralama|dateOfDeath|09.06.1942|}} →
  • {{#invoke:Infocards/qaralama|dateOfDeath|1955|}} →
  • {{#invoke:Infocards/qaralama|dateOfDeath|29.02.1984|}} →
  • {{#invoke:Infocards/qaralama|dateOfDeath||}} →

isDate funksiyası nümunələri

  • {{#invoke:Infocards/qaralama|isDate||TRUE|FALSE}} → FALSE
  • {{#invoke:Infocards/qaralama|isDate|-382|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards/qaralama|isDate|−336|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards/qaralama|isDate|24.12.3|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards/qaralama|isDate|19.7.1893 (7)|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards/qaralama|isDate|19.7.67.18/93 (7)|TRUE|FALSE}} → FALSE
  • {{#invoke:Infocards/qaralama|isDate|13 декабря 2005|TRUE|FALSE}} → FALSE
  • {{#invoke:Infocards/qaralama|isDate|vəfat tarixi bilinmir|TRUE|FALSE}} → FALSE

Səhifə xətalarının olmaması üçün bu şablon üzərində təcrübələri öz şəxsi səhifənizdə aparmağınız məsləhət görülür.

local infocards = {};
local calculateAge = true;
local Ordinal = require 'Module:Ordinal'

function infocards._getParameters( frame_args, arg_list )
    local new_args = {};
    local index = 1;
    local value;
 
    for i,arg in ipairs( arg_list ) do
        value = frame_args[arg]
        if value == nil then
            value = frame_args[index];
            index = index + 1;
        end
        new_args[arg] = value;
    end
 
    return new_args;
end        

function infocards.isBlank( someString )
    return someString == nil or mw.ustring.match(someString, '^%s*$') ~= nil;
end

function infocards.isDate ( frame )
    local new_args = infocards._getParameters( frame.args, {'s', 't', 'f'} );
    local s = new_args['s'] or '';
    local t = new_args['t'] or '';
    local f = new_args['f'] or '';

    local result = infocards.isDateImpl ( s )
    if (result) then
        return t
    else
        return f
    end
end

function infocards.isDateImpl ( s )
    local converted = infocards.convertToDate ( s );
    return converted ~= nil
end

function infocards.dateOfBirth( frame )
    local new_args = infocards._getParameters( frame.args, {'dateOfBirth', 'dateOfDeath', 'nocat'} );
    local dateOfBirth = new_args['dateOfBirth'] or '';
    local dateOfDeath = new_args['dateOfDeath'] or '';
    local nocat = new_args['nocat'] or mw.title.getCurrentTitle().nsText;

    return infocards.dateOfBirthImpl( dateOfBirth, dateOfDeath, nocat );
end

function infocards.dateOfBirthImpl( dateOfBirth, dateOfDeath, nocat )

    local appendToCategory = infocards.isBlank( nocat );

    if ( infocards.isBlank( dateOfBirth ) ) then
        if ( appendToCategory ) then
            return '[[Kateqoriya:Doğum tarixi bilinməyənlər]]'
        else
            return ''
        end
    end

    if ( mw.ustring.match( dateOfBirth, '^%s*bilinmir.%s*$' ) ~= nil
            or mw.ustring.match( dateOfBirth, '^%s*%?%s*$' ) ~= nil ) then
        if ( appendToCategory ) then
            return "''bilinmir''[[Kateqoriya:Doğum tarixi bilinməyənlər]]"
        else
            return "''bilinmir''"
        end
    end

    local appendAge = calculateAge and infocards.isBlank( dateOfDeath );

    local parsedDate = infocards.convertToDate ( dateOfBirth )
    if ( parsedDate == nil ) then
		local bDateStart = '<span class="no-wikidata" data-wikidata-property-id="P569">'
		local bDateEnd = '</span>'

        if ( appendToCategory ) then
            return bDateStart .. dateOfBirth .. bDateEnd .. ''
        else
            return bDateStart .. dateOfBirth .. bDateEnd
        end
    end

    local result = infocards.formatDateImpl ( parsedDate, 'bday', appendToCategory and 'doğulanlar' or nil )

    if ( appendAge ) then
        local age = infocards.age ( parsedDate,  os.date("*t") )
        if ( age and age > 0 and age < 125) then
            result = result .. ' <span class="nowrap">(' .. age .. ' ' .. mw.language.new( 'az' ):plural( age,  'yaş') .. ')</span>'
        end
        
		if ( appendToCategory ) then
			if ( age and age > 100 ) then
				result = result .. '[[Kateqoriya:Yaşayan uzunömürlülər]]'
			elseif ( age or ( parsedDate and parsedDate.year and os.date('*t').year - parsedDate.year <= 100 ) ) then
				result = result .. '[[Kateqoriya:Yaşayan insanlar]]'
			end
		end
    end

    return result
end

function infocards.dateOfDeath( frame )
    local new_args = infocards._getParameters( frame.args, {'dateOfBirth', 'dateOfDeath', 'nocat'} );
    local dateOfBirth = new_args['dateOfBirth'] or '';
    local dateOfDeath = new_args['dateOfDeath'] or '';
    local nocat = new_args['nocat'] or mw.title.getCurrentTitle().nsText;

    return infocards.dateOfDeathImpl( dateOfBirth, dateOfDeath, nocat );
end

function infocards.dateOfDeathImpl( dateOfBirth, dateOfDeath, nocat )
    if ( infocards.isBlank( dateOfDeath ) ) then
        return ''
    end

    local appendToCategory = infocards.isBlank( nocat );

    if ( mw.ustring.match( dateOfDeath, '^%s*bilinmir%s*$' ) ~= nil
            or mw.ustring.match( dateOfDeath, '^%s*%?%s*$' ) ~= nil ) then
        if ( appendToCategory ) then
            return "''bilinmir''[[Kateqoriya:Vəfat tarixi bilinməyənlər]]"
        else
            return "''bilinmir''"
        end
    end

    local parsedDateOfBirth = infocards.convertToDate ( dateOfBirth )
    local parsedDateOfDeath = infocards.convertToDate ( dateOfDeath )

    if ( parsedDateOfDeath == nil ) then
		local dDateStart = '<span class="no-wikidata" data-wikidata-property-id="P570">'
		local dDateEnd = '</span>'

        if ( appendToCategory ) then
            return dDateStart .. dateOfDeath .. dDateEnd .. ''
        else
            return dDateStart .. dateOfDeath .. dDateEnd
        end
    end

    local result = infocards.formatDateImpl ( parsedDateOfDeath, 'dday', appendToCategory and 'vəfat edənlər' or nil )

	if ( calculateAge ) then
		local age = infocards.age ( parsedDateOfBirth, parsedDateOfDeath )
		if ( age and age > 0 ) then
			result = result .. ' <span class="nowrap">(' .. age .. ' ' .. mw.language.new( 'az' ):plural( age, 'yaşında') .. ')</span>'
		end
		
		local unixAvailable, unixDateOfDeath = pcall(function()
			local r = os.time(parsedDateOfDeath)
			if ( r ~= os.time() ) then
				return r
			end
			error()
		end)
		if ( unixAvailable and os.time() - unixDateOfDeath < 31536000 and appendToCategory ) then
			result = result .. '[[Kateqoriya:Son bir ildə vəfat etmiş şəxslər]]'
		end
	end

    return result
end

function infocards.age( parsedBirthDate, parsedFinishDate ) 
    if ( parsedBirthDate == nil or parsedFinishDate == nil ) then
        return nil
    end

    local bd = parsedBirthDate["day"]
    local bm = parsedBirthDate["month"]
    local by = parsedBirthDate["year"]

    local dd = parsedFinishDate["day"];
    local dm = parsedFinishDate["month"];
    local dy = parsedFinishDate["year"];

    if ( bd and bm and by and dd and dm and dy ) then
        if ( dm > bm or ( dm == bm and dd >= bd ) ) then
            return dy - by
        else
            return dy - by - 1
        end
    else
        return nil
    end
end

local nominativeMonthes =  {'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun',
    'iyul', 'avqust', "sentyabr", "oktyabr", "noyabr", "dekabr"}
    
local genitivusMonthes =  {'yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun',
    'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'}

local genitivusMonthes2 =  {'yanvarda', 'fevralda', 'martda', 'apreldə', 'mayda', 'iyunda',
    'iyulda', 'avqustda', 'sentyabrda', 'oktyabrda', 'noyabrda', 'dekabrda'} 

function infocards.nominativeYear( year )
    if ( year >= 0 ) then
        return '[[' .. year .. '|' .. year .. ']]'
    else
        return '[[e.ə. ' .. ( 0 - year ) .. ' |e.ə. ' .. ( 0 - year ) .. ']]'
    end
end

function infocards.formatDateImpl( parsedDate, infocardClass, categoryNamePrefix, brts)
    local nd = parsedDate["day"];
    local nm = parsedDate["month"];
    local ny = parsedDate["year"];
    local od = parsedDate["osday"];
    local om = parsedDate["osmonth"];
    local oy = parsedDate["osyear"];
    
	local bracket1 = "(";
	local bracket2 = ")";
	if ( brts == 1 ) then
		bracket1 = "&#91;"
		bracket2 = "&#93;"
	end    

	local JulianComment = function(s)
		return tostring(mw.html.create("abbr")
			:attr("title","yuli təqvimi ilə")
			:wikitext(s)
			:done())
	end

	
    local template =
        (nd ~= nil and "1" or "") .. (nm ~= nil and "2" or "") .. (ny ~= nil and "3" or "") ..
        (od ~= nil and "4" or "") .. (om ~= nil and "5" or "") .. (oy ~= nil and "6" or "")
 
    local datePart = '<span class="nowrap">'
    if (infocardClass == "bday") then
    	datePart = '<span class="no-wikidata" data-wikidata-property-id="P569">'
    elseif (infocardClass == "dday") then
    	datePart = '<span class="no-wikidata" data-wikidata-property-id="P570">'
    end
    if (template == "12") then
        datePart = datePart .. string.format( "[[%d %s]]",
        								nd, genitivusMonthes[nm] )
    elseif (template == "23") then
        datePart = datePart .. string.format( "[[%s]] %s",
        								nominativeMonthes[nm], infocards.nominativeYear( ny ) )
    elseif (template == "3") then
        datePart = datePart .. infocards.nominativeYear( ny )
    elseif (template == "123") then
        datePart = datePart .. string.format( "[[%d %s]] %s",
                                        nd, genitivusMonthes[nm], infocards.nominativeYear( ny ) )
    elseif (template == "124") then
        datePart = datePart .. JulianComment(string.format( "%d", od )
							).. string.format( " [[%d %s|" .. bracket1 .. "%d" .. bracket2 .. " %s]]",
                                        nd, genitivusMonthes[nm], nd, genitivusMonthes[nm] )
    elseif (template == "1234") then
        datePart = datePart .. JulianComment(string.format( "%d", od )
							).. string.format( " [[%d %s|" .. bracket1 .. "%d" .. bracket2 .. " %s]] %s",
                                        nd, genitivusMonthes[nm], nd, genitivusMonthes[nm], infocards.nominativeYear( ny ) )
    elseif (template == "1245") then
        datePart = datePart .. JulianComment(string.format( "%d %s", od, genitivusMonthes[om] )
							).. string.format(" " .. bracket1 .. "[[%d %s]]" .. bracket2 .. "", nd, infocards.nominativeYear( ny ) )										
    elseif (template == "12345") then
        datePart = datePart .. JulianComment(string.format( "%d %s", od, genitivusMonthes[om] )
							).. string.format(" " .. bracket1 .. "[[%d %s]]" .. bracket2 .. " %s", nd, genitivusMonthes[nm], infocards.nominativeYear( ny ) )
    elseif (template == "123456") then
        datePart = datePart .. JulianComment(string.format( "%d %s %d", od, genitivusMonthes[om], oy ))
							.. '</span> <span class="nowrap">'
							.. string.format(" " .. bracket1 .. "[[%d %s]] %s" .. bracket2 , nd, genitivusMonthes[nm], infocards.nominativeYear( ny ) )
    else
        datePart = datePart .. 'format yanlışdır'
    end
    datePart = datePart .. '</span>'
 
    local infocardTemplate =
        (nd ~= nil and "1" or "") .. (nm ~= nil and "2" or "") .. (ny ~= nil and "3" or "")
 
	if infocardClass then
	    if (infocardTemplate == "123") then
	        datePart = datePart .. string.format('<span style="display:none">(<span class="%s">%04d-%02d-%02d</span>)</span>', infocardClass , ny , nm , nd )
	    elseif (infocardTemplate == "23") then
	        datePart = datePart .. string.format('<span style="display:none">(<span class="%s">%04d-%02d</span>)</span>', infocardClass , ny , nm )
	    elseif (infocardTemplate == "3") then
	        datePart = datePart .. string.format('<span style="display:none;">(<span class="%s">%04d</span>)</span>', infocardClass , ny )
	    end
	end
 
    if categoryNamePrefix then
        if ( nd ~= nil and nm ~= nil) then
            datePart = datePart .. '[[Kateqoriya:' .. nd .. ' ' .. genitivusMonthes2[nm] .. ' ' .. categoryNamePrefix .. ']]'
        end
        if ( ny ~= nil) then
            datePart = datePart .. '[[Kateqoriya:' .. inYear( ny ) .. ' ildə ' .. categoryNamePrefix .. ']]'
        end
    end
 
    return datePart
end

function infocards.convertToDate( possibleDateString )

    possibleDateString = mw.ustring.gsub( possibleDateString, '−', '-')

    local simpleDate = mw.ustring.match(possibleDateString, '^%s*([%-%d%.]+)%s*$', 0)
    if ( simpleDate ) then
        return infocards.convertToDateNewStylePart( simpleDate );
    end

    local complexDate1, complexDate2 = mw.ustring.match(possibleDateString, '^%s*([%-%d%.]+)%s*%(([%-%d%.]+)%)%s*$', 0)
    if ( complexDate1 and complexDate2) then
        local table1 = infocards.convertToDateNewStylePart( complexDate1 );
        local table2 = infocards.convertToDateOldStylePart( complexDate2 );
        if ( table1 and table2 ) then
            return {
                    year = table1["year"], month = table1["month"], day = table1["day"], 
                    osyear = table2["year"], osmonth = table2["month"], osday = table2["day"]
                }
        else
            return nil
        end
    end

    return nil
end

function infocards.convertToDateNewStylePart( possibleDateString )

    local ny = mw.ustring.match(possibleDateString, '^(%-?%d+)$', 0)
    if (ny ~= nil) then
        return {year = tonumber(ny)}
    end

    return infocards.convertToDateCommonPart( possibleDateString )
end

function infocards.convertToDateOldStylePart( possibleDateString )

    local nd = mw.ustring.match(possibleDateString, '^(%-?%d+)$', 0)
    if (nd ~= nil) then
        return {day = tonumber(nd)}
    end

    return infocards.convertToDateCommonPart( possibleDateString )
end


function infocards.convertToDateCommonPart( possibleDateString )

    local nd, nm
        = mw.ustring.match(possibleDateString, '^(%d?%d)%.(%d?%d)$', 0)
    if (nd ~= nil and nm ~= nil) then
        return {day = tonumber(nd), month = tonumber(nm)}
    end
    
    local nm, ny
        = mw.ustring.match(possibleDateString, '^(%d?%d)%.(%-?%d+)$', 0)
    if (nm ~= nil and ny ~= nil) then
    	local nmn = tonumber(nm)
    	local nyn = tonumber(ny)
    	if (nmn > 0 and nmn < 13) then
        	return {month = nmn, year = nyn}
        end
    end
    
    local nd, nm, ny
        = mw.ustring.match(possibleDateString, '^(%d?%d)%.(%d?%d)%.(%-?%d+)$', 0)
    if (nd ~= nil and nm ~= nil and ny ~= nil) then
    	local ndn = tonumber(nd)
    	local nmn = tonumber(nm)
    	local nyn = tonumber(ny)
    	if (ndn > 0 and ndn < 33 and nmn > 0 and nmn < 13) then
        	return {day = ndn, month = nmn, year = nyn}
        end
    end

    return nil
end

return infocards
Mənbə — "https://az.wikipedia.org/w/index.php?title=Modul:Infocards/qaralama&oldid=6135987"
Informasiya Melumat Axtar