Модуль:Infocards

dateOfBirth функци кхайкхаран масала

  • {{#invoke:Infocards|dateOfBirth|-382|−336}} → 382 в. э. хьалха({{padleft:-382|4|0}})
  • {{#invoke:Infocards|dateOfBirth|11.1|}} → 11 январь
  • {{#invoke:Infocards|dateOfBirth|24.12.3|15.01.69}} → 3 шеран 24 декабрь({{padleft:3|4|0}}-{{padleft:12|2|0}}-{{padleft:24|2|0}})
  • {{#invoke:Infocards|dateOfBirth|23.09.-63|19.08.14}} → 63 в. э. хьалха 23 сентябрь({{padleft:-63|4|0}}-{{padleft:9|2|0}}-{{padleft:23|2|0}})
  • {{#invoke:Infocards|dateOfBirth|42|9.6.42}} → 42({{padleft:42|4|0}})
  • {{#invoke:Infocards|dateOfBirth|870|13.8.900}} → 870({{padleft:870|4|0}})
  • {{#invoke:Infocards|dateOfBirth||22.01.984}} →
  • {{#invoke:Infocards|dateOfBirth|16.06.1066|кхелхина терахь хууш дац}} → 1066 шеран 16 июнь({{padleft:1066|4|0}}-{{padleft:6|2|0}}-{{padleft:16|2|0}})
  • {{#invoke:Infocards|dateOfBirth|8.2.1834 (27.1)|2.2.1907 (20.1)}} → 1834 шеран 27 январь (8 февраль)({{padleft:1834|4|0}}-{{padleft:2|2|0}}-{{padleft:8|2|0}})
  • {{#invoke:Infocards|dateOfBirth|29.06.1844 (17)|28.10.1883 (16)}} → 1844 шеран 17 (29) июнь({{padleft:1844|4|0}}-{{padleft:6|2|0}}-{{padleft:29|2|0}})
  • {{#invoke:Infocards|dateOfBirth|19.7.1893 (7)|}} → 1893 шеран 7 (19) июль({{padleft:1893|4|0}}-{{padleft:7|2|0}}-{{padleft:19|2|0}})
  • {{#invoke:Infocards|dateOfBirth|3.10.1895 (21.9)|28.12.1925}} → 1895 шеран 21 сентябрь (3 октябрь)({{padleft:1895|4|0}}-{{padleft:10|2|0}}-{{padleft:3|2|0}})
  • {{#invoke:Infocards|dateOfBirth|4.10.1916|8.11.2009}} → 1916 шеран 4 октябрь({{padleft:1916|4|0}}-{{padleft:10|2|0}}-{{padleft:4|2|0}})
  • {{#invoke:Infocards|dateOfBirth|09.06.1942|}} → 1942 шеран 9 июнь({{padleft:1942|4|0}}-{{padleft:6|2|0}}-{{padleft:9|2|0}}) (81 шо)
  • {{#invoke:Infocards|dateOfBirth|1955|}} → 1955({{padleft:1955|4|0}})
  • {{#invoke:Infocards|dateOfBirth|29.02.1984|}} → 1984 шеран 29 февраль({{padleft:1984|4|0}}-{{padleft:2|2|0}}-{{padleft:29|2|0}}) (40 шо)
  • {{#invoke:Infocards|dateOfBirth||}} →
  • {{#invoke:Infocards|dateOfBirth|4.1.1885 (23.12.1884)|17.5.1951}} → 1884 23 декабрь (1885 шеран 4 январь)({{padleft:1885|4|0}}-{{padleft:1|2|0}}-{{padleft:4|2|0}})
  • {{#invoke:Infocards|dateOfBirth|{{Адам/Вина терахь|24|12|3}}|{{Адам/Кхелхина терахь|15|01|69}}}} → 3 шеран 24 декабрехь(00031224)
  • {{#invoke:Infocards|dateOfBirth|[[5]] шо герг|24.01.41}} → 5 шо герг
  • {{#invoke:Infocards|dateOfBirth|[[5]] шо герг|{{Адам/Кхелхина терахь|24|01|41}}}} → 5 шо герг
  • {{#invoke:Infocards|dateOfBirth|[[868]]/[[872]]|[[15 сентябрь]]/[[15 ноябрь]] [[890]]}} → 868/872
  • {{#invoke:Infocards|dateOfBirth|{{Адам/Вина терахь|8|2|1834|27|1}}|{{Адам/Кхелхина терахь|2|2|1907|20|1}} (72 шо)}} → 1834 шеран 27 январехь (8 февралехь)(18340208)

dateOfDeath функци кхайкхаран масала

  • {{#invoke:Infocards|dateOfDeath|-382|−336}} → 336 в. э. хьалха({{padleft:-336|4|0}})
  • {{#invoke:Infocards|dateOfDeath|24.12.3|15.01.69}} → 69 шеран 15 январь({{padleft:69|4|0}}-{{padleft:1|2|0}}-{{padleft:15|2|0}}) (65 шо)
  • {{#invoke:Infocards|dateOfDeath|23.09.-63|19.08.14}} → 14 шеран 19 август({{padleft:14|4|0}}-{{padleft:8|2|0}}-{{padleft:19|2|0}}) (76 шо)
  • {{#invoke:Infocards|dateOfDeath|42|9.6.42}} → 42 шеран 9 июнь({{padleft:42|4|0}}-{{padleft:6|2|0}}-{{padleft:9|2|0}})
  • {{#invoke:Infocards|dateOfDeath|870|13.8.900}} → 900 шеран 13 август({{padleft:900|4|0}}-{{padleft:8|2|0}}-{{padleft:13|2|0}})
  • {{#invoke:Infocards|dateOfDeath||22.01.984}} → 984 шеран 22 январь({{padleft:984|4|0}}-{{padleft:1|2|0}}-{{padleft:22|2|0}})
  • {{#invoke:Infocards|dateOfDeath|16.06.1066|кхелхина терахь хууш дац}} → кхелхина терахь хууш дац
  • {{#invoke:Infocards|dateOfDeath|8.2.1834 (27.1)|2.2.1907 (20.1)}} → 1907 шеран 20 январь (2 февраль)({{padleft:1907|4|0}}-{{padleft:2|2|0}}-{{padleft:2|2|0}}) (72 шо)
  • {{#invoke:Infocards|dateOfDeath|29.06.1844 (17)|28.10.1883 (16)}} → 1883 шеран 16 (28) октябрь({{padleft:1883|4|0}}-{{padleft:10|2|0}}-{{padleft:28|2|0}}) (39 шо)
  • {{#invoke:Infocards|dateOfDeath|19.7.1893 (7)|}} → 1930 шеран 14 апрель({{padleft:1930|4|0}}-{{padleft:4|2|0}}-{{padleft:14|2|0}}) (36 шо)
  • {{#invoke:Infocards|dateOfDeath|3.10.1895 (21.9)|28.12.1925}} → 1925 шеран 28 декабрь({{padleft:1925|4|0}}-{{padleft:12|2|0}}-{{padleft:28|2|0}}) (30 шо)
  • {{#invoke:Infocards|dateOfDeath|4.10.1916|8.11.2009}} → 2009 шеран 8 ноябрь({{padleft:2009|4|0}}-{{padleft:11|2|0}}-{{padleft:8|2|0}}) (93 шо)
  • {{#invoke:Infocards|dateOfDeath|09.06.1942|}} →
  • {{#invoke:Infocards|dateOfDeath|1955|}} →
  • {{#invoke:Infocards|dateOfDeath|29.02.1984|}} →
  • {{#invoke:Infocards|dateOfDeath||}} →
  • {{#invoke:Infocards|dateOfDeath|{{Адам/Вина терахь|24|12|3}}|{{Адам/Кхелхина терахь|15|01|69}}}} → 69 шеран 15 январехь
  • {{#invoke:Infocards|dateOfDeath|[[5]] шо герг|24.01.41}} → 41 шеран 24 январь({{padleft:41|4|0}}-{{padleft:1|2|0}}-{{padleft:24|2|0}})
  • {{#invoke:Infocards|dateOfDeath|[[5]] шо герг|{{Адам/Кхелхина терахь|24|01|41}}}} → 41 шеран 24 январехь
  • {{#invoke:Infocards|dateOfDeath|[[868]]/[[872]]|[[15 сентябрь]]/[[15 ноябрь]] [[890]]}} → 15 сентябрь/15 ноябрь 890
  • {{#invoke:Infocards|dateOfDeath|{{Адам/Вина терахь|8|2|1834|27|1}}|{{Адам/Кхелхина терахь|2|2|1907|20|1}} (72 шо)}} → 1907 шеран 20 январехь (2 февралехь) (72 шо)

isDate функци кхайкхаран масала

  • {{#invoke:Infocards|isDate||TRUE|FALSE}} → FALSE
  • {{#invoke:Infocards|isDate|-382|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards|isDate|−336|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards|isDate|24.12.3|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards|isDate|19.7.1893 (7)|TRUE|FALSE}} → TRUE
  • {{#invoke:Infocards|isDate|19.7.67.18/93 (7)|TRUE|FALSE}} → FALSE
  • {{#invoke:Infocards|isDate|13 декабрь 2005|TRUE|FALSE}} → FALSE
  • {{#invoke:Infocards|isDate|кхелхина терахь хууш дац|TRUE|FALSE}} → FALSE
  • {{#invoke:Infocards|isDate|{{Адам/Вина терахь|24|12|3}}|TRUE|FALSE}} → FALSE

local infocards = {}local calculateAge = truelocal dateCat = require( 'Module:Infocards/dateCat' )local moduleDates = require( 'Module:Dates' )--[[Helper function that populates the argument list given that user may need to use a mix ofnamed and unnamed parameters.  This is relevant because named parameters are notidentical to unnamed parameters due to string trimming, and when dealing with stringswe sometimes want to either preserve or remove that whitespace depending on the application.]]function infocards._getParameters( frame_args, arg_list )local new_args = {}local index = 1local value for i,arg in ipairs( arg_list ) dovalue = frame_args[arg]if value == nil thenvalue = frame_args[index]index = index + 1endnew_args[arg] = valueend return new_argsend        function infocards.isBlank( someString )return someString == nil or mw.ustring.match(someString, '^%s*$') ~= nilendfunction 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) thenreturn telsereturn fendendfunction infocards.isDateImpl ( s )local converted = infocards.convertToDate ( s )return converted ~= nilendfunction infocards.dateOfBirth( frame )local new_args = infocards._getParameters( frame.args, {'dateOfBirth', 'dateOfDeath', 'suppressAge', 'nocat'} )local dateOfBirth = new_args['dateOfBirth'] or ''local dateOfDeath = new_args['dateOfDeath'] or ''local suppressAge = new_args['suppressAge'] or ''local nocat = new_args['nocat'] or mw.title.getCurrentTitle().nsTextreturn infocards.dateOfBirthImpl( dateOfBirth, dateOfDeath, suppressAge, nocat )endfunction infocards.dateOfBirthImpl( dateOfBirth, dateOfDeath, suppressAge, nocat )local appendToCategory = infocards.isBlank( nocat )if ( infocards.isBlank( dateOfBirth ) ) thenif ( appendToCategory ) thenreturn dateCat.categoryNoBirthDateelsereturn ''endendif ( mw.ustring.match( dateOfBirth, '^%s*хууш дац.%s*$' ) ~= nilor mw.ustring.match( dateOfBirth, '^%s*%?%s*$' ) ~= nil ) thenif ( appendToCategory ) thenreturn "''хууш дац''" .. dateCat.categoryUnknownBirthDateelsereturn "''хууш дац''"endendlocal appendAge = not (suppressAge ~= '' or not calculateAge) and infocards.isBlank( dateOfDeath )local parsedDate = infocards.convertToDate ( dateOfBirth )if ( parsedDate == nil ) then--[[ Temporary hack in order to enable export dates to wikidata ]]local bDateStart = '<span class="no-wikidata" data-wikidata-property-id="P569">'local bDateEnd = '</span>'if ( appendToCategory ) thenreturn bDateStart .. dateOfBirth .. bDateEnd .. dateCat.categoryManualWikificationelsereturn bDateStart .. dateOfBirth .. bDateEndendendlocal result = infocards.formatDateImpl ( parsedDate, 'bday', appendToCategory and 'Бинарш' or nil )if ( appendAge ) then-- TODO: месяцы и дни для (нескольких) новорождённых (см. новейшие [[Категория:Родившиеся в ГГГГ году]])local age = infocards.age ( parsedDate,  os.date("*t") )if ( age and age < 125) thenresult = result .. ' <span class="nowrap">(' .. age .. ' ' .. mw.language.new( 'ce' ):plural( age, 'шо','шо','шо') .. ')</span>'endif ( appendToCategory ) thenif (not age and parsedDate and parsedDate.year ) thenage = os.date('*t').year - parsedDate.year -- при неточной дате endif ( age ) then if ( age > 115 ) thenresult = result .. dateCat.categoryBigCurrentAgeelseif ( age >= 0 ) then result = result .. dateCat.categoryBiographiesOfLivingPersonselseresult = result .. dateCat.categoryNegativeAgeendendendendreturn resultendfunction 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().nsTextreturn infocards.dateOfDeathImpl( dateOfBirth, dateOfDeath, nocat )endfunction infocards.dateOfDeathImpl( dateOfBirth, dateOfDeath, nocat )if ( infocards.isBlank( dateOfDeath ) ) thenreturn ''endlocal appendToCategory = infocards.isBlank( nocat )if ( mw.ustring.match( dateOfDeath, '^%s*хууш дац.%s*$' ) ~= nilor mw.ustring.match( dateOfDeath, '^%s*%?%s*$' ) ~= nil ) thenif ( appendToCategory ) thenreturn "''хууш дац''" .. dateCat.categoryUnknownDeathDateelsereturn "''хууш дац''"endendlocal parsedDateOfBirth = infocards.convertToDate ( dateOfBirth )local parsedDateOfDeath = infocards.convertToDate ( dateOfDeath )if ( parsedDateOfDeath == nil ) then--[[ Temporary hack in order to enable export dates to wikidata ]]local dDateStart = '<span class="no-wikidata" data-wikidata-property-id="P570">'local dDateEnd = '</span>'if ( appendToCategory ) thenreturn dDateStart .. dateOfDeath .. dDateEnd .. dateCat.categoryManualWikificationelsereturn dDateStart .. dateOfDeath .. dDateEndendendlocal result = infocards.formatDateImpl ( parsedDateOfDeath, 'dday', appendToCategory and 'Белларш' or nil )if ( calculateAge ) thenlocal age = infocards.age ( parsedDateOfBirth, parsedDateOfDeath )if ( age and age > 0 ) thenresult = result .. ' <span class="nowrap">(' .. age .. ' ' .. mw.language.new( 'ce' ):plural( age, 'шо','шо','шо') .. ')</span>'end-- returns category to recently deceased personslocal unixAvailable, unixDateOfDeath = pcall(function()local r = os.time(parsedDateOfDeath)if ( r ~= os.time() ) thenreturn renderror()end)if (appendToCategory) thenif ( unixAvailable and os.time() - unixDateOfDeath < 31536000 ) thenresult = result .. dateCat.categoryRecentlyDeceasedelseif (age and age < 0) thenresult = result .. dateCat.categoryNegativeAgeendendendreturn resultendfunction infocards.age( parsedBirthDate, parsedFinishDate ) if ( parsedBirthDate == nil or parsedFinishDate == nil ) thenreturn nilendlocal 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 ) thenif ( dm > bm or ( dm == bm and dd >= bd ) ) thenreturn dy - byelsereturn dy - by - 1endelsereturn nilendendfunction infocards.formatDateImpl( parsedDate, infocardClass, categoryNamePrefix )local datePart = '<span class="nowrap">'--Temporary hack in order to enable export dates to wikidataif infocardClass == "bday" thendatePart = '<span class="no-wikidata" data-wikidata-property-id="P569">'elseif infocardClass == "dday" thendatePart = '<span class="no-wikidata" data-wikidata-property-id="P570">'endlocal t1 = { day = parsedDate.osday, month = parsedDate.osmonth, year = parsedDate.osyear }local t2 = { day = parsedDate.day, month = parsedDate.month, year = parsedDate.year }datePart = datePart .. moduleDates.formatWikiImpl( t1, t2, infocardClass, categoryNamePrefix )datePart = datePart .. '</span>'return datePartendfunction infocards.convertToDate( possibleDateString )possibleDateString = mw.ustring.gsub( possibleDateString, '−', '-')local simpleDate = mw.ustring.match(possibleDateString, '^%s*([%-%d%.]+)%s*$', 0)if ( simpleDate ) thenreturn infocards.convertToDateNewStylePart( simpleDate )endlocal complexDate1, complexDate2 = mw.ustring.match(possibleDateString, '^%s*([%-%d%.]+)%s*%(([%-%d%.]+)%)%s*$', 0)if ( complexDate1 and complexDate2) thenlocal table1 = infocards.convertToDateNewStylePart( complexDate1 )local table2 = infocards.convertToDateOldStylePart( complexDate2 )if ( table1 and table2 ) thenreturn {year = table1["year"], month = table1["month"], day = table1["day"], osyear = table2["year"], osmonth = table2["month"], osday = table2["day"]}elsereturn nilendendreturn nilendfunction infocards.convertToDateNewStylePart( possibleDateString )local ny = mw.ustring.match(possibleDateString, '^(%-?%d+)$', 0)if (ny ~= nil) thenreturn {year = tonumber(ny)}endreturn infocards.convertToDateCommonPart( possibleDateString )endfunction infocards.convertToDateOldStylePart( possibleDateString )local nd = mw.ustring.match(possibleDateString, '^(%-?%d+)$', 0)if (nd ~= nil) thenreturn {day = tonumber(nd)}endreturn infocards.convertToDateCommonPart( possibleDateString )endfunction infocards.convertToDateCommonPart( possibleDateString )local sDay, sMonth, sYearlocal day, month, yearsDay, sMonth, sYear = mw.ustring.match( possibleDateString, '^(%d?%d)%.(%d?%d)%.(%-?%d+)$', 0 )if sDay ~= nil and sMonth ~= nil and sYear ~= nil thenday = tonumber( sDay )month = tonumber( sMonth )year = tonumber( sYear )if day >= 1 and day <= 32 and month >= 1 and month <= 12 thenreturn { day = day, month = month, year = year }endendsDay, sMonth = mw.ustring.match( possibleDateString, '^(%d?%d)%.(%d?%d+)$', 0 )if sDay ~= nil and sMonth ~= nil thenday = tonumber( sDay )month = tonumber( sMonth )if day >= 1 and day <= 32 and month >= 1 and month <= 12 thenreturn { day = day, month = month }endendsMonth, sYear = mw.ustring.match( possibleDateString, '^(%d?%d)%.(%-?%d+)$', 0 )    if sMonth ~= nil and sYear ~= nil then    month = tonumber( sMonth )    year = tonumber( sYear )    if month >= 1 and month <= 12 then        return { month = month, year = year }        end    endreturn nilendreturn infocards