Перейти к содержимому страницы
Переключить меню
Переключить меню настроек
Переключить персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.
Сообщество «Повелителя Тайн»Telegram — новости, дунхуа, игры и мерчDiscord — обсуждение книг и теорий, вопросы по вики

Модуль:Sequence/Debug

Материал из проекта «Повелитель Тайн Вики»

Invocation Function

inspectSeqPostProcessContent

Print all contents of sequence data from Module:Sequence/seqPostProcess.

Parameters for #invoke
  1. Sequence Name

inspectSeqContent

Print all contents of sequence data from Module:Sequence/standard and Module:Sequence/non-standard.

Parameters for #invoke
  1. Sequence Name

inspectSeqPostProcessKeys

Print all keys pointing to the same sequence from Module:Sequence/seqPostProcess.

Parameters for #invoke
  1. Sequence Name

local inspect = require("Module:Inspect")

local helpers_wikitext = require("Module:Helpers/WikiText")
local helpers = require("Module:Helpers")

local p = {}

function printDataContent(item, t)
    return string.format(
        '<b>Data Content of %s</b><br/><pre>%s</pre>', 
        item,
        helpers_wikitext.sanitiseHtml(
            inspect(
                helpers.materialiseTable(t) 
            ) 
        )
    )
end

function p.inspectSeqPostProcessContent(frame)
    local seqs_post_process = mw.loadData("Module:Sequence/seqPostProcess")

    local arg1 = frame.args[1]
    local seq_data = seqs_post_process[arg1]
    return printDataContent(arg1, seq_data)
end

function p.inspectSeqContent(frame)
    local seqs_standard = mw.loadData("Module:Sequence/standard")
    local seqs_nonstandard = mw.loadData("Module:Sequence/non-standard")

    local arg1 = frame.args[1]
    local seq_data = seqs_standard[arg1] or seqs_nonstandard[arg1]
    return printDataContent(arg1, seq_data)
end

function p.inspectSeqPostProcessKeys(frame)
    local seqs_post_process = mw.loadData("Module:Sequence/seqPostProcess")
    
    local arg1 = frame.args[1]
    local seq_data = seqs_post_process[arg1]
    
    local result = ""
    
    local target_rank = tonumber(seq_data['seq_rank']) or -1
    local target_pathway = seq_data['pathway'] or "Unkown Pathway"
    
    if seq_data == nil then
        result = 'Unkown Pathway'
    else
        local result_keys = {}
        
        for key, item in pairs(seqs_post_process) do
            if target_rank == tonumber(item['seq_rank']) and target_pathway == item['pathway'] then
                table.insert(result_keys, key)
            end
        end
            
        if #result_keys == 0 then
            result = 'No resulting data'
        else
            result = table.concat(result_keys, ", ")
        end
    end
    
    return frame:preprocess(string.format("Keys that point to <b>{{Seq|%s}}</b> (Seq %d, [[%s]]): {{CodeFontN|%s}}", arg1, target_rank, target_pathway, result))
end

function p.inspectPathwayPostProcessContent(frame)
    local pathways_post_process = mw.loadData("Module:Sequence/pathwaysPostProcess")

    local arg1 = frame.args[1]
    local pathway_data = pathways_post_process[arg1]
    return printDataContent(arg1, pathway_data)
end

function p.inspectPathwayContent(frame)
    local pathways = mw.loadData("Module:Sequence/pathways")

    local arg1 = frame.args[1]
    local pathway_data = pathways[arg1]
    return printDataContent(arg1, pathway_data)
end

function p.inspectPathwayPostProcessKeys(frame)
    local pathways_post_process = mw.loadData("Module:Sequence/pathwaysPostProcess")

    local arg1 = frame.args[1]
    local pathway_data = pathways_post_process[arg1]
    
    local result = ""
    
    local target_name = pathway_data['name'] or "Unkown"
    
    if pathway_data == nil then
        result = 'Unkown Pathway'
    else
        local result_keys = {}
        
        for key, item in pairs(pathways_post_process) do
            if target_name == item['name'] then
                table.insert(result_keys, key)
            end
        end
            
        if #result_keys == 0 then
            result = 'No resulting data'
        else
            result = table.concat(result_keys, ", ")
        end
    end
    
    return frame:preprocess(string.format("Keys that point to <b>{{Pathway|%s}} Pathway</b>: {{CodeFontN|%s}}", target_name, result))
end

return p