Модуль:Wikidata/link
Перейти к навигации
Перейти к поиску
Для документации этого модуля может быть создана страница Модуль:Wikidata/link/doc
p = {}; function p.fromTemplate( frame ) local args = frame.args; return p.generateLink( args[ 1 ], args[ 2 ], args[ 'title' ] ); end function p.fromModule( context, options, id ) return p.generateLink( options[ 'property' ], id, options[ 'title' ], context, options ); end function p.generateLink( propertyId, id, title, context, options ) propertyId = propertyId:upper() if p[ propertyId ] then return p[ propertyId ]( context, options, id ); end local pattern = p.findPattern( propertyId ) if pattern then local link = mw.ustring.gsub( pattern, '$1', id ); if not title or title == '' then title = id; end return '[' .. link .. ' ' .. title .. ']'; end return id end function p.P212( context, options, id ) if id:match("^[%s-0-9X]*$") or id:match("^%s*ISBN[%s-0-9X]*$") then return '[[Special:Booksources/' .. id .. '|' .. id .. ']]'; else local frame = mw.getCurrentFrame(); if id:match("<br") or id:match("\*") then return frame:expandTemplate{ title = 'Некорректный ISBN', args = { ['1']=id, noprefix='1', nolink='1' } }; else return frame:expandTemplate{ title = 'Некорректный ISBN', args = { ['1']=id, noprefix='1' } }; end end end function p.P267( context, options, id ) local frame = mw.getCurrentFrame(); return frame:expandTemplate{ title = 'АТХ', args = { id } }; end function p.P345( context, options, id ) local prefix = options and options.prefix local number = id if not string.match( id, '^%d' ) then prefix = string.sub( id, 1, 2 ) number = string.sub( id, 3 ) end local label = 'ID ' .. number if prefix == 'ch' then return '[[IMDbCharacter:' .. number .. '|' .. label .. ']]' end if prefix == 'co' then return '[[IMDbCompany:' .. number .. '|' .. label .. ']]' end if prefix == 'nm' then return '[[IMDbName:' .. number .. '|' .. label .. ']]' end if prefix == 'tt' then return '[[IMDbTitle:' .. number .. '|' .. label .. ']]' end return id; end function p.P884( context, options, id ) local frame = mw.getCurrentFrame(); local HydrologyBookTom = string.sub(id, 13, 14); local HydrologyBookVypusk = string.sub(id, 15, 15); if HydrologyBookTom == '99' then return '[http://verum.wiki/index.php?claster=gvr&q=' .. id .. ' ' .. id .. ']'; else local ref = frame:callParserFunction{ name = '#tag:ref', args = { '{{Книга:РПВ ГИ|' .. HydrologyBookTom .. '|' .. HydrologyBookVypusk .. '}}' } }; return '[http://verum.wiki/index.php?claster=gvr&q=' .. id .. ' ' .. id .. ']' .. ref; end end function p.P957( context, options, id ) return '[[Special:Booksources/' .. id .. '|' .. id .. ']]'; end function p.findPattern( property ) local entity = mw.wikibase.getEntity( property:upper() ); if entity then local statements = entity:getBestStatements( 'P1630' ); for _, statement in pairs( statements ) do if statement.mainsnak.snaktype == 'value' then return statement.mainsnak.datavalue.value; end end end return nil; end return p;