La documentación para este módulo puede ser creada en Módulo:Estadísticas/doc

-- NB: Depends on {{Stats}} and {{Stats 2}}; use {{CharacterStats}} instead of invoking this module directly.
-- <nowiki>
local p = {}

local data = mw.loadData('Módulo:Estadísticas/data')
local ranks = {
    ['S+'] = '6',
    ['S' ] = '6',
    ['S-'] = '6',
    ['A+'] = '5',
    ['A' ] = '5',
    ['A-'] = '5',
    ['B+'] = '4',
    ['B' ] = '4',
    ['B-'] = '4',
    ['C+'] = '3',
    ['C' ] = '3',
    ['C-'] = '3',
    ['D+'] = '2',
    ['D' ] = '2',
    ['D-'] = '2',
    ['E+'] = '1',
    ['E' ] = '1',
    ['E-'] = '1',
    ['?' ] = '?'
}

function p.render(frame)
    -- NB: Ideally we'd use the frontier pattern (like `^%f[%u].*%a$`),
    --     but `mw.ustring` is missing the [backport](https://github.com/Wikia/app/pull/15769).
    local full_name = assert(mw.ustring.match(frame.args[1], '^%u.*%a$'))
    local stats = assert(data[full_name])
    assert(type(stats[1]) == 'boolean')

    local short_name = stats[1] and assert(mw.ustring.match(full_name, '^[^%s]+')) or full_name
    local fragments = {}

    if type(stats[2]) == 'table' then
        local length = 0
        for i, v in ipairs(stats[2]) do
            if i <= 5 then
                assert(mw.ustring.match(stats[2][i], '^[SABCDE?]$'))
            end
            length = length + 1
        end
        assert(length == 5)
        table.insert(fragments, {'Ultra Archive', '{{Estadísticas|personaje='       .. short_name         ..
                                                         '|poder='           .. ranks[stats[2][1]] ..
                                                         '|clasf.poder='      ..       stats[2][1]  ..
                                                         '|velocidad='           .. ranks[stats[2][2]] ..
                                                         '|clasf.velocidad='      ..       stats[2][2]  ..
                                                         '|técnica='       .. ranks[stats[2][3]] ..
                                                         '|clasf.técnica='       ..       stats[2][3]  ..
                                                         '|inteligencia='    .. ranks[stats[2][4]] ..
                                                         '|clasf.inteligencia='        ..       stats[2][4]  ..
                                                         '|cooperación=' .. ranks[stats[2][5]] ..
                                                         '|clasf.cooperación='       ..       stats[2][5]  .. '}}'})
    end

    if type(stats[3]) == 'table' then
        local length = 0
        for i, v in ipairs(stats[3]) do
            if i <= 5 then
                assert(mw.ustring.match(stats[3][i], '^[SABCDE][+-]?$') or stats[3][i] == '?')
            end
            length = length + 1
        end
        assert(length == 6)
        assert(mw.ustring.match(stats[3][6], '^%u.*%a$'))
        table.insert(fragments, {'Ultra Analysis', '{{Estadísticas 2|personaje='    .. short_name         ..
                                                            '|poder='        .. ranks[stats[3][1]] ..
                                                            '|clasf.poder='   ..       stats[3][1]  ..
                                                            '|velocidad='        .. ranks[stats[3][2]] ..
                                                            '|clasf.velocidad='   ..       stats[3][2]  ..
                                                            '|técnica='    .. ranks[stats[3][3]] ..
                                                            '|clasf.técnica='    ..       stats[3][3]  ..
                                                            '|inteligencia=' .. ranks[stats[3][4]] ..
                                                            '|clasf.inteligencia='     ..       stats[3][4]  ..
                                                            '|nombrebonus='    ..       stats[3][6]  ..
                                                            '|bonus='        .. ranks[stats[3][5]] ..
                                                            '|clasf.bonus='   ..       stats[3][5]  .. '}}'})
    end

    local wikitext
    if #fragments == 0 then
        return ''
    elseif #fragments == 1 then
        wikitext = fragments[1][2]
    else
        wikitext = '<center><tabber>\n'
        for i, v in ipairs(fragments) do
            wikitext = wikitext .. (i > 1 and '|-|\n' or '') .. v[1] .. '=' .. v[2] .. '\n'
        end
        wikitext = wikitext .. '</tabber></center>'
    end
    return frame:preprocess(wikitext)
end

return p
-- </nowiki>
El contenido de la comunidad está disponible bajo CC-BY-SA a menos que se indique lo contrario.