Модуль:Wikidata/Wikipedia

Материал из Викитеки — свободной библиотеки
Перейти к навигации Перейти к поиску

Для документации этого модуля может быть создана страница Модуль:Wikidata/Wikipedia/Документация

local p = {};
local wd = require('Модуль:WD');
--[[
function p.getSisterProjectLink( projectInterwikiLettter, projectName )
  -- По умолчанию старается достать ссылку на русском, иначе - на родном (P103)
  local entity = mw.wikibase.getEntityObject()
  if entity == nil or entity.sitelinks == nil then
    return ''
  end;
  local sitelink = entity.sitelinks['ru' .. projectName]
  if sitelink ~= nil then
    return projectInterwikiLettter .. ':' .. sitelink.title
  end;
  if entity.claims then
    local propValues = entity.claims['P103']
    if propValues ~= nil then
      local codes = mw.loadData('Module:Wikidata:Dictionary/P424');
      for i, propClaim in pairs(propValues) do
        if propClaim.mainsnak and propClaim.mainsnak.datavalue and propClaim.mainsnak.datavalue.value and propClaim.mainsnak.datavalue.value["numeric-id"] then
          local languageWikidataId = 'Q' .. propClaim.mainsnak.datavalue.value["numeric-id"];
          local codesById = codes[languageWikidataId];
          if ( codesById ) then
            for j, code in pairs( codesById ) do
              sitelink = entity.sitelinks[code .. projectName];
              if sitelink ~= nil then
                return projectInterwikiLettter .. ':' .. code .. ':' .. sitelink.title;
              end;
            end;
          end;
        end;
      end;
    end;
  end;
  return '';
end;
]]

-- 
function p.get_sitelink_for_human(entity, s_suffix)
  return wd.get_multilingual_sitelink(entity, s_suffix, {'P1412', 'P103'});
end;
 
function p.getWikisourceLink()
  return p.get_sitelink_for_human(mw.wikibase.getEntityObject(), 'wikisource');
--  return p.getSisterProjectLink( 's', 'wikisource' );
end;
 
function p.getWikiquoteLink()
  return p.get_sitelink_for_human(mw.wikibase.getEntityObject(), 'wikiquote');
--  return p.getSisterProjectLink( 'q', 'wikiquote' );
end;
 
function p.getWikipediaLink()
  return p.get_sitelink_for_human(mw.wikibase.getEntityObject(), 'wiki');
--  return p.getSisterProjectLink( 'w', 'wiki' );
end;

function p.getWikinewsLink()
  return p.get_sitelink_for_human(mw.wikibase.getEntityObject(), 'wikinews');
--  return p.getSisterProjectLink( 'n', 'wikinews' );
end;

function p.getWikispeciesLink()
  local e = mw.wikibase.getEntityObject();
  if e ~= nil then
    local sitelink = wd.get_sitelink(e, "specieswiki");
    if sitelink ~= nil then
      return 'species:' .. sitelink.title;
    end;
  end;
  return nil;
end;

return p;