Módulo:Directory
A documentação para este módulo pode ser criada em Módulo:Directory/doc
-- Author: @vitorsilverio
-- Author: @jaideraf
local p = {}
function p.makeDirectory ( frame )
local sum = 0
local directory = ''
for index, tagAndLenght in ipairs(
mw.text.split ( frame.args[1]:gsub( '%[%[SMW::...?%]%]', '' ), ',' , true )
) do
-- frame.args[1] captura o primeiro e único argumento da chamada
-- {{#invoke:Directory|makeDirectory|...}} que é o resultado das consultas
-- #ask da Predefinição:Directory. Ele retorna, portanto, valores como:
-- '0010007,0030009,0050017,0080041'.
-- É necessário remover as marcações invisíveis [[SMW::off]] e [[SMW::on]]
-- para que a conta abaixo seja efetuada com sucesso.
-- mw.text.split divide a string recebida, tendo como delimitadora,
-- literalmente (true), a vírgula, e armazena os dados em uma tabela:
-- { '0010007', '0030009', '0050017', '0080041' }
-- os valores capturados são passados para a variável 'tagAndLenght'.
directory = string.format( '%s%s%05d', directory, tagAndLenght, sum )
-- o diretório é montado concatenando as variáveis 'directory', 'tagAndLenght'
-- e 'sum'. '%s%s%05d' significa que 'directory' é uma string,
-- 'tagAndLenght' é uma string e 'sum' são 5 dígitos completados com 0)
sum = sum + tagAndLenght:sub( 4, 7 )
-- a cada iteração, os últimos 4 números de 'tagAndLenght' são somados e
-- armazenados na variável 'sum'.
end
return directory
-- retorna o diretório completo:
-- '001000700000003000900007005001700016008004100033'
end
return p