Mudanças entre as edições de "Módulo:MapaJson"

De Wiki Gla
Ir para navegação Ir para pesquisar
Linha 1: Linha 1:
-- Módulo:JSONLoader
-- Carrega JSON de uma página e retorna URL encoded corretamente
local p = {}
local p = {}


function p.loadAndEncode(frame)
function p.getDados(frame)
    local pageName = frame.args[1] or ''
     -- Carrega o conteúdo da página JSON
   
     local titulo = "Mapa:Blackmarket"
    if pageName == '' then
     local conteudo = mw.title.new(titulo):getContent()
        return ''
    end
   
     -- Buscar o conteúdo da página
     local title = mw.title.new(pageName)
    if not title or not title.exists then
        return ''
    end
   
    local jsonContent = title:getContent() or ''
   
    -- Remover espaços extras e quebras de linha
    jsonContent = jsonContent:gsub("\n", "")
    jsonContent = jsonContent:gsub("\r", "")
    jsonContent = jsonContent:gsub("\t", " ")
    jsonContent = jsonContent:gsub(" +", " ")
   
    -- Codificar para URL corretamente (RFC 3986)
    -- Usar função personalizada para evitar conversão de espaços para _
    local encoded = mw.uri.encode(jsonContent, 'PATH')
   
    return encoded
end
 
-- Versão alternativa que codifica tudo (recomendado)
function p.loadAndEncodeFull(frame)
    local pageName = frame.args[1] or ''
   
    if pageName == '' then
        return ''
    end
   
     local title = mw.title.new(pageName)
    if not title or not title.exists then
        return ''
    end
   
    local jsonContent = title:getContent() or ''
   
    -- Remover espaços extras e quebras de linha
    jsonContent = jsonContent:gsub("\n", "")
    jsonContent = jsonContent:gsub("\r", "")
    jsonContent = jsonContent:gsub("\t", " ")
    jsonContent = jsonContent:gsub("  +", " ")
   
    -- Codificar tudo (espaços viram %20, não _)
    local encoded = mw.uri.encode(jsonContent, 'COMPONENT')
   
    return encoded
end
 
-- Função que retorna o JSON limpo sem codificação (para debug)
function p.loadRaw(frame)
    local pageName = frame.args[1] or ''
   
    if pageName == '' then
        return ''
    end
   
    local title = mw.title.new(pageName)
    if not title or not title.exists then
        return ''
    end
   
    local jsonContent = title:getContent() or ''
      
      
     -- Apenas remover espaços extras
     -- Transforma o texto JSON em uma tabela Lua
     jsonContent = jsonContent:gsub("\n", "")
     local dados = mw.text.jsonDecode(conteudo)
    jsonContent = jsonContent:gsub("\r", "")
    jsonContent = jsonContent:gsub("\t", " ")
    jsonContent = jsonContent:gsub("  +", " ")
      
      
     return jsonContent
    -- Exemplo: Pegar um valor específico chamado 'item'
    -- Você adapta isso conforme a estrutura do seu JSON
     return dados
end
end


return p
return p

Edição das 14h16min de 11 de abril de 2026

A documentação para este módulo pode ser criada em Módulo:MapaJson/doc

local p = {}

function p.getDados(frame)
    -- Carrega o conteúdo da página JSON
    local titulo = "Mapa:Blackmarket"
    local conteudo = mw.title.new(titulo):getContent()
    
    -- Transforma o texto JSON em uma tabela Lua
    local dados = mw.text.jsonDecode(conteudo)
    
    -- Exemplo: Pegar um valor específico chamado 'item'
    -- Você adapta isso conforme a estrutura do seu JSON
    return dados
end

return p