Модуль:Team ID

Материал из Dota 2 Вики
Перейти к: навигация, поиск

Документация для Модуль:Team ID Перейти к коду ↴ [ править | очистить ]

Reality Rift icon.png
▶️ Planeshift.
Документацию для этого шаблона или модуля можно найти в Шаблон:Команда.
Вы можете быть перенаправлены на другой язык вики, если перевод недоступен.


Зависимости

local p = {}
local cargo = mw.ext.cargo
local caching = require('Модуль:Cache').auto
local fileExists = require('Модуль:FileExists')
local getArgs = require('Модуль:Arguments').getArgs
local tooltip = require('Модуль:Tooltip')._main
local yesno = require('Модуль:Yesno')

local specials = {
  ["tbd"] = { "TBD", "Будет решено" },
  ["tba"] = { "TBA", "Будет анонсировано" },
  ["grp. s."] = { "Груп. Э.", "Групповой этап (В/Н/П)" },
  ["grp.s."] = { "Груп. Э.", "Групповой этап (В/Н/П)" },
  ["grp"] = { "Груп. Э.", "Групповой этап (В/Н/П)" },
  ["league"] = { "League Play", "League Play (W/D/L)" },
  ["league play"] = { "League Play", "League Play (W/D/L)" },
}

function p.main( frame )
  local args = getArgs(frame, {
    wrappers = {
      'Шаблон:Team ID'
    }
  })
  return caching(p._main, args, 'teamid')
end

function p._main( args )
  assert( args and args[1], 'Не введено название команды' )
  -- Check if a special rule exists for this input.
  local special = specials[mw.ustring.lower(args[1])]
  if special then
    local values = special
    return tostring(tooltip( { values[1], values[2] } ))
  else
    local icon = 'Team icon Default.png'
    local name = args[1]
    
    -- Attempt to get the data through Cargo.
    -- _pageName matches are prioritized over matches in the names table.
    -- If multiple teams have the same name in their names table the first one is used.
    local cargo_info = cargo.query( 'professional_teams', 'icon, name', { where='_pageName="' .. args[1] .. '"', groupBy='_pageID' } )[1]
    if not cargo_info then
      cargo_info = cargo.query( 'professional_teams', 'icon, name', { where='names HOLDS "' .. args[1] .. '"', groupBy='_pageID' } )[1]
    end
    
    if cargo_info then
      if cargo_info['icon'] ~= '' or nil then icon = cargo_info['icon'] end
      if cargo_info['name'] ~= '' or nil then name = cargo_info['name'] end
    else
      if fileExists('File:Team icon ' .. args[1] .. '.png') then
        icon = 'Team icon ' .. args[1] .. '.png'
      end
    end

    local image = string.format('[[File:%s|%s|link=%s|class=noprint|%s]]', icon, (args[2] or '20x20px'), args[1], name)
    local link = string.format('[[%s|%s]]', args[1], name)

    if yesno(args.reverse) then
      return string.format('<span class="image-link">%s %s</span>', link, image)
    else
      return string.format('<span class="image-link">%s %s</span>', image, link)
    end
  end
end


return p