Módulo:Testes/Arthurfragoso/lista por pageviews

Origem: Wikipédia, a enciclopédia livre.
local p = {}
local mes = {'janeiro','fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'}

function p.ano_mes(ano, n_do_mes)
  -- meses anteriores à Setembro de 2010 estão com a primeira letra do mês maiúscula
  if ano <= 2009 or (ano == 2010 and n_do_mes <= 9) then
    return mes[n_do_mes]:gsub("^%l", mes[n_do_mes].upper) .. ' de ' .. ano
  else
    return mes[n_do_mes] .. ' de ' .. ano
  end
end

function p.linha_do_ano(titulo, ano)
  local col = {}
  local quant_no_ano = 0
  -- primeira coluna indicando o ano
  local primeira_coluna = '! scope=row |[[:categoria:'.. titulo ..' '.. ano ..'|'.. ano ..']]'

  --cria coluna para cada um dos 12 meses
  for m=1,12,1 do
    titulo_mes_ano = titulo .. p.ano_mes(ano, m)
    quant_de_artigos_mes = mw.site.stats.pagesInCategory( titulo_mes_ano, 'pages' )
    quant_no_ano = quant_no_ano + quant_de_artigos_mes
    most_views_link = 'https://tools.wmflabs.org/massviews/?platform=all-access&agent=user&source=category&target=https%3A%2F%2Fpt.wikipedia.org%2Fwiki%2FCategoria%3A'.. string.gsub (titulo_mes_ano, ' ', '_') ..'&range=latest-20&subjectpage=0&subcategories=0&sort=views&direction=1&view=list'
    table.insert(col, 'data-sort-value="'.. quant_de_artigos_mes ..'"|[[:categoria:'.. titulo_mes_ano ..'|'.. quant_de_artigos_mes ..']]'.. (quant_de_artigos_mes > 0 and ' ['.. most_views_link ..' v]' or ''))
  end

  -- adiciona o total à ultima coluna
  table.insert(col, quant_no_ano)

  --concatena coluna à uma unica linha e retorna
  return primeira_coluna .. '\n|' .. table.concat(col, '||')

end

-- cria conteúdo de tabela (sem cabeçalho)
function p.tab(frame)
  local titulo = frame.args[1]
  local ano_de = frame.args[2]
  local ano_ate = frame.args[3]
  local line = {}

  --cria linhas para cada ano
  for ano=ano_de,ano_ate,1 do
    table.insert(line, p.linha_do_ano(titulo, ano))
  end

  --concatena linhas em uma única tabela
  return table.concat(line, "\n|-\n")
end

-- somatoria de todos anos
function p.soma_todos_anos(frame)
  local titulo = frame.args[1]
  local ano_de = frame.args[2]
  local ano_ate = frame.args[3]

  local somatoria = 0

  for ano=ano_de,ano_ate,1 do
    for m=1,12,1 do
      titulo_mes_ano = titulo .. p.ano_mes(ano, m)
      somatoria = somatoria + mw.site.stats.pagesInCategory( titulo_mes_ano, 'pages' )
    end
  end
  return somatoria

end

return p