wikidata/Number

Tämän moduulin ohjeistuksen voi tehdä sivulle Moduuli:Wikidata/number/ohje

local p = {}  function p.formatColorIndex( context, options ) if ( not context ) then error( 'context not specified' ); end; if ( not options ) then error( 'options not specified' ); end;  if ( options.property ) then  -- Пролучаем все claims независимо от ранга claims = context.selectClaims( options, options.property .. '[rank:normal,rank:preferred]' ); end if ( claims ) then return context.formatPropertyDefault( context, options ) end -- Вычисляем B-V либо U-B из P1215 b = context.selectClaims( options, 'P1215[P1227:Q6746395][rank:normal,rank:preferred]' ) if ( not b ) then return end if string.find( options.property, 'Q17773035' ) then m1 = context.selectClaims( options, 'P1215[P1227:Q15977921][rank:normal,rank:preferred]' ) m2 = b if ( not m1 ) then return end else m1 = b m2 = context.selectClaims( options, 'P1215[P1227:Q4892529][rank:normal,rank:preferred]' ) if ( not m2 ) then return end end for _, claim1 in ipairs(m1) do for _, claim2 in ipairs(m2) do newClaim = { mainsnak = { snaktype = 'value', datavalue = { type = 'quantity',  value = { unit = '1', amount = claim1.mainsnak.datavalue.value.amount -  claim2.mainsnak.datavalue.value.amount }}}} return context.formatStatementDefault( context, options, newClaim ) end end end  function p.formatPropertyWithMostRecentClaimAndIndicator( context, options ) if ( not context ) then error( 'context not specified' ); end; if ( not options ) then error( 'options not specified' ); end; if ( not options.entity ) then error( 'options.entity missing' ); end;  local claims; if options.property then  -- Пролучаем все claims независимо от ранга claims = context.selectClaims( options, options.property .. '[rank:normal,rank:preferred]' ); end if claims == nil then return '' end  -- Ищем claim с максимальным значением P585 и форматируем его в out local maxTimestamp = 0; local mostRecentClaim; for i, claim in ipairs(claims) do if (claim.qualifiers and claim.qualifiers.P585) then -- обрабатываем только claims с указанным P585 local timestamp = context.parseTimeFromSnak( claim.qualifiers.P585[1] ); if (timestamp ~= nil and maxTimestamp < timestamp) then maxTimestamp = timestamp; mostRecentClaim = claim end end end if (not mostRecentClaim) then -- нет ни одного claim с указанным P585 return context.formatPropertyDefault( context, options ) end  local out = context.formatStatement( options, mostRecentClaim ) if out ~= '' then -- Ищем claim со значением P585 сразу после максимального и запоминаем его в secondMostRecentValue local secondMostRecentTimestamp = 0; local secondMostRecentValue = 0; for i, claim in ipairs(claims) do if (claim.qualifiers and claim.qualifiers.P585) then -- обрабатываем только claims с указанным P585 local timestamp = context.parseTimeFromSnak( claim.qualifiers.P585[1] ) if (timestamp ~= nil and secondMostRecentTimestamp < timestamp and maxTimestamp > timestamp) then secondMostRecentTimestamp = timestamp secondMostRecentValue = tonumber( claim.mainsnak.datavalue.value.amount ) end end end if (secondMostRecentValue ~= 0) then -- если предыдущее значение нашлось if (secondMostRecentValue < tonumber( mostRecentClaim.mainsnak.datavalue.value.amount )) then out = '' .. out else out = '' .. out end end if options.before then out = options.before .. out end if options.after then out = out .. options.after end end  return out end  function p.formatQuantityWithDateClaim( context, options, statement ) local snak = context.formatSnak( options, statement.mainsnak ) if not snak then return '' end      --Date     if ( statement.qualifiers and statement.qualifiers.P585 ) then         snak = snak .. ' (' .. context.formatSnak( options, statement.qualifiers.P585[1] ) .. ')'     end  --References if ( options.references ) then     snak = snak .. context.formatRefs( options, statement );     end      return snak end  function p.formatDMS( context, options, value ) if not value.amount then return value end local prefix = "+" if tonumber( value.amount ) < 0 then prefix = "−" end return p.formatAngle ( math.abs( tonumber( value.amount ) ),  string.len( value.amount ) - string.find( value.amount, '.', 1, true ) - 5, prefix .. "%s° %02d′ %s″") end   function p.formatRA( context, options, value ) if not value.amount then return value end return p.formatAngle (tonumber( value.amount ) / 15,  string.len( value.amount ) - string.find( value.amount, '.', 1, true ) - 4, "%sч %02dм %sс") end  function p.formatAngle ( angle, sig, format ) local d, angle = math.modf( angle ) local m, angle = math.modf( angle * 60 ) local mult = 10 ^ sig; local s = math.floor( angle * 60 * mult + 0.5 ) / mult; local lang = mw.language.getContentLanguage(); return string.format( format, d, m, lang:formatNum( s ) ) end  return p 

Tags:

🔥 Trending searches on Wiki Karjalan:

14. tuhukuuduPäiväzenkukkuGvatemala22. sulakuudu30. pakkaskuuduAla-VieksjärviAleksanderi Suuri747I. K. InhaPäiväzensistiemuKongon Demokruatilline TazavalduSerbiiMonako1830Ven'aPedru IPohjanmeriGakugsa1946Kirjutussistiemu19051918Wikipedii27. sulakuuduSuomen kieli19719. heinykuuduPolitiekkuMoskovuEgeinmeriAlfred HitchcockJegiptu1963SuomiMongouliiTaivan'LaivuŠintolaižusKirjalližusKarjal14. sulakuudu25. pakkaskuuduKoiruSierra LeoneItualiiPohjas-AmerikkuKitaiGvinea-BisauBuddhalaižus1725Niilu4. sulakuudu1722DessoiluNikolai JaakkolaCharles Chaplin1994Immanuel KantMjanmar20131616KuudamTiedokoneh12. oraskuudu1865Aleksandr Lukič Volkov22. tuhukuuduOtto KuusinenAvstrii🡆 More