Saltar para o conteúdo

Módulo:Unidades/doc

Origem: Wikipédia, a enciclopédia livre.


Descrição[editar código-fonte]

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.

Uso[editar código-fonte]

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 código-fonte]