Модуль:Песочница/Vavilexxx/Autonumtab

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Документация


-- *************************************
-- Автоматическая нумерация таблицы
-- *************************************

-- Вызов через шаблон {{подст:#invoke:Autonumtab|Старт=38|{{ {{|таблица|}} }}}}
-- Старт = с какого числа начать по умолчанию 1)
-- Заменяет любое содержимое первой ячейки на номер строки
local p = {}
function p.AutoNumTab(frame)
    local NumStr = tonumber (frame.args['Старт'] or "1");
    local g = frame.args[1]
    g = g:gsub("^%s- -{{", "", 1)
    g = g:gsub("}}%s- -$", "", 1)
    -- pattern = "|%s*#%s*%s*|"
    pattern1 = "|-\n|.*||"
    pattern2 = "|-\n|.*|.*||"
    pattern3 = "|-\n|.*\n|" 
    pattern4 = "|-\n|.*|.*\n|"
    while string.find (g, pattern1) ~= nil do
        g = g:gsub(pattern1, "|-\n|"..NumStr.."||", 1)
        NumStr = NumStr + 1
    end
    while string.find (g, pattern2) ~= nil do
        g = g:gsub(pattern2, "|-\n|(.*)|"..NumStr.."||", 1)
        NumStr = NumStr + 1
    end
    while string.find (g, pattern3) ~= nil do
        g = g:gsub(pattern3, "|-\n|"..NumStr.."\n|", 1)
        NumStr = NumStr + 1
    end
    while string.find (g, pattern4) ~= nil do
        g = g:gsub(pattern4, "|-\n|(.*)|"..NumStr.."\n|", 1)
        NumStr = NumStr + 1
    end
    return g
end