Module:Json parameter test: Difference between revisions

From Visual Data Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
function p.generateClassLists(frame)
function p.generateClassLists(frame)
     -- JSON-Daten in einem Lua-String
     -- JSON-Daten in einem Lua-String
     -- local jsonData = frame.args.jsonData
     local jsonData1 = frame:callParserFunction('#visualdataquery:[[unique title::+]]', { '?articleid', schema = 'Data classes', format = 'json-raw' })
   
    -- {{#visualdataquery:[[unique title::+]]
--  |?articleid
--  |schema = Data classes
--  |format = json-raw
-- }}


  local jsonData = frame:callParserFunction( '#visualdataquery:[[unique title::+]]', { '?articleid', schema = 'Data classes', format = 'json-raw' } )
local jsonData = mw.text.killMarkers(jsonData1)
   
  local jsonData2 = mw.text.killMarkers(jsonData)
   
    -- local jsonData = ' [{"pagetitle":"Classes/Gender","data":{"unique title":"Classes/Gender","title":"Gender","class names":["female","male","diverse"]}},{"pagetitle":"Classes/Age","data":{"unique title":"Classes/Age","title":"Age","class names":["0 - 14","15 - 29","30 - 44","45 - 59","60 +"]}},{"pagetitle":"Classes/Districts","data":{"unique title":"Classes/Districts","title":"Districts","class names":["District 1","District 2","District 3","District 4"]}},{"pagetitle":"Classes/Test classes","data":{"unique title":"Entry:Classes/Test classes","title":"Test classes","class names":["Class 1","Class 2"]}},{"pagetitle":"Classes/Test sub-classes","data":{"unique title":"Entry:Classes/Test sub-classes","title":"Test sub-classes","class names":["Sub-class 1","Sub-class 2"]}},{"pagetitle":"Classes/Test sub-sub classes 1","data":{"unique title":"Entry:Classes/Test sub-sub classes_1","title":"Test sub-sub classes","class names":["Sub-sub class 1","Sub-sub class 2"]}},{"pagetitle":"Classes/School districts","data":{"unique title":"Entry:Classes/School districts","title":"School districts","class names":["School district 1","School district 2","School district 3"]}},{"pagetitle":"Classes/Schools","data":{"unique title":"Entry:Classes/Schools","title":"Schools","class names":["School 1","School 2","School 3","School 4"]}},{"pagetitle":"Classes/School classes","data":{"unique title":"Entry:Classes/School classes","title":"School classes","class names":["Class 1","Class 2","Class 3","Class 4","Class 5","Class 6","Class 7","Class 8","Class 9","Class 10"]}}] '


     -- Debugging: Gib die empfangenen JSON-Daten aus
     -- Debug: Gib die empfangenen JSON-Daten aus
     -- return "Received JSON Data: " .. tostring(jsonData)
    local debugInfo = "Received JSON Data: " .. tostring(jsonData) .. "\n"
      
 
-- JSON-Daten in Lua-Tabelle umwandeln
     -- Überprüfe, ob jsonData gültig ist
     local json = mw.text.jsonDecode(jsonData2)
    if not jsonData or jsonData == '' then
        return "Keine JSON-Daten empfangen."
    end
 
    -- Entferne führende und nachfolgende Leerzeichen
    jsonData = mw.text.trim(jsonData)
 
    -- Debug: Gib die getrimmten JSON-Daten aus
    debugInfo = debugInfo .. "Trimmed JSON Data: " .. tostring(jsonData) .. "\n"
 
     -- Debug: Gib die Länge der JSON-Daten aus
    debugInfo = debugInfo .. "Length of JSON Data: " .. tostring(#jsonData) .. "\n"
 
    -- Ersetze nicht druckbare Zeichen durch sichtbare Platzhalter
    local jsonDataVisible = jsonData:gsub("%c", function(c) return string.format("\\x%02X", string.byte(c)) end)
 
    -- Debug: Gib die sichtbaren JSON-Daten aus
    debugInfo = debugInfo .. "Visible JSON Data: " .. jsonDataVisible .. "\n"
 
    -- Überprüfe auf bekannte Platzhalter und entferne diese
    jsonData = jsonData:gsub("\127'\"`UNIQ%-%-.-%-%-QINU`\"'\127", "")
 
    -- JSON-Daten in Lua-Tabelle umwandeln
     local success, json = pcall(mw.text.jsonDecode, jsonData)
    if not success then
        return debugInfo .. "Fehler beim Dekodieren der JSON-Daten: " .. tostring(json)
    end
 
    debugInfo = debugInfo .. "Decoded JSON Data: " .. mw.dumpObject(json) .. "\n"


     local result = {}
     local result = {}
Line 32: Line 50:
     end
     end


     return table.concat(result, "\n\n")
     return debugInfo .. table.concat(result, "\n\n")
end
end


return p
return p

Revision as of 08:10, 27 May 2024

Documentation for this module may be created at Module:Json parameter test/doc

local p = {}

function p.generateClassLists(frame)
    -- JSON-Daten in einem Lua-String
    local jsonData1 = frame:callParserFunction('#visualdataquery:[[unique title::+]]', { '?articleid', schema = 'Data classes', format = 'json-raw' })

 local jsonData = mw.text.killMarkers(jsonData1)

    -- Debug: Gib die empfangenen JSON-Daten aus
    local debugInfo = "Received JSON Data: " .. tostring(jsonData) .. "\n"

    -- Überprüfe, ob jsonData gültig ist
    if not jsonData or jsonData == '' then
        return "Keine JSON-Daten empfangen."
    end

    -- Entferne führende und nachfolgende Leerzeichen
    jsonData = mw.text.trim(jsonData)

    -- Debug: Gib die getrimmten JSON-Daten aus
    debugInfo = debugInfo .. "Trimmed JSON Data: " .. tostring(jsonData) .. "\n"

    -- Debug: Gib die Länge der JSON-Daten aus
    debugInfo = debugInfo .. "Length of JSON Data: " .. tostring(#jsonData) .. "\n"

    -- Ersetze nicht druckbare Zeichen durch sichtbare Platzhalter
    local jsonDataVisible = jsonData:gsub("%c", function(c) return string.format("\\x%02X", string.byte(c)) end)

    -- Debug: Gib die sichtbaren JSON-Daten aus
    debugInfo = debugInfo .. "Visible JSON Data: " .. jsonDataVisible .. "\n"

    -- Überprüfe auf bekannte Platzhalter und entferne diese
    jsonData = jsonData:gsub("\127'\"`UNIQ%-%-.-%-%-QINU`\"'\127", "")

    -- JSON-Daten in Lua-Tabelle umwandeln
    local success, json = pcall(mw.text.jsonDecode, jsonData)
    if not success then
        return debugInfo .. "Fehler beim Dekodieren der JSON-Daten: " .. tostring(json)
    end

    debugInfo = debugInfo .. "Decoded JSON Data: " .. mw.dumpObject(json) .. "\n"

    local result = {}

    for _, item in ipairs(json) do
        local title = item.data.title
        local classNames = item.data["class names"]
        table.insert(result, "== " .. title .. " ==")
        table.insert(result, "* " .. table.concat(classNames, "\n* "))
    end

    return debugInfo .. table.concat(result, "\n\n")
end

return p