Descrição

editar

Este módulo tem uma tabela de dados de unidades de medida, cada unidade tem os dados de nome, plural, grandeza física, símbolo da unidade, nome do artigo na Wikipédia e a relação matemática entre a unidade e a unidade de mesma grandeza no Sistema Internacional de Unidades (SI). A tabela contém os diferentes nomes das unidades, incluindo os Qid dessas unidades no Wikidata.

Este módulo é uma tabela de dados para ser usado com mw.loadData('Módulo:Unidades'), isso faz com que o módulo seja carregado somente uma vez mesmo que for chamado por vários módulos na página.

Devido ao uso do mw.loadData este módulo não pode conter funções, e portanto só pode ser usado dentro de outros módulos. Para carregar os dados de uma unidade em um outro módulo use o código abaixo:

unidades = mw.loadData('Módulo:Unidades')
u = type(unidades[nome]) == 'string' and unidades[unidades[nome]] or unidades[nome]

Veja um exemplo do uso deste módulo em uma função para converter unidades:

converter = function(num1, nome1, nome2, link)
    -- num1 é o número, nome1 a unidade, nome2 a unidade a ser convertida
    -- e link deve ser true para colocar ligação na unidade
    if not (num1 and nome1 and nome2) then
        return  -- um dos três primeiros argumentos não foi passado
    end
    local unidades = mw.loadData('Módulo:Unidades')
    local u1 = type(unidades[nome1]) == 'string' and unidades[unidades[nome1]] or unidades[nome1]
    local u2 = type(unidades[nome2]) == 'string' and unidades[unidades[nome2]] or unidades[nome2]
    if not u1 or not u2 or u1['grandeza'] ~= u2['grandeza'] then
        return  -- uma das unidades não foi encontrada ou está tentando converter grandezas diferentes
    end
    local num2 = num1 * u1['si'] / u2['si']  -- convertendo
    num2 = (math.floor(num2 * 100) / 100)  -- deixando 2 campos decimais
    num2 = string.gsub(num2, '%.', ',')  -- trocando ponto por vírgula
    local unidade = u2['unidade'] or n ~= 1 and u2['plural'] or u2['nome']
    if link and u2['artigo'] then
        return num2 .. ' [[' .. u['artigo'] .. '|' .. unidade .. ']]'
    elseif unidade then
        return num2 ..  ' ' .. unidade
    else
        return  -- unidade não possui os dados de unidade e nome
    end
end

Cada módulo pode usar uma função diferente, dependendo de como pretende exibir a conversão, quantas casas decimais ou algarismos significativos pretende usar, se quer exibir o simbolo da unidade ou o nome por extenso, etc.

Ver também

editar