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 .. id .. ; else local frame = mw.getCurrentFrame; if id:match("<br") or id:match("\*") then return frame:expandTemplate{ title = 'Yanlış ISBN', args = { ['1']=id, noprefix='1', nolink='1' } }; else return frame:expandTemplate{ title = 'Yanlış 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 .. label .. end if prefix 'co' then return .. label .. end if prefix 'nm' then return .. label .. end if prefix 'tt' then return .. 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 '.. id .. ' ' .. id .. ; else local ref = frame:callParserFunction{ name = '#tag:ref', args = { } }; return '.. id .. ' ' .. id .. .. ref; end end function p.P957( context, options, id ) return .. 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;