Module:Busca

m ={}

function m.formatar(frame) local texto = mw.title.new(frame.args[1]):getContent local pattern = frame.args[2] pattern = string.gsub(pattern, '\\n', '\n') local format = frame.args[3] local limite = frame.args['limite'] and tonumber(frame.args['limite']) or nil texto = mw.ustring.gsub(texto, pattern, function (...)     local r      for i,v in ipairs(arg) do        if v ~=  then          r = string.gsub(r or format, '%%'..i, frame.args['se'..i] or arg[i])        else          r = string.gsub(r or format, '%%'..i, frame.args['não'..i] or )        end      end      return '<' .. r .. '>'    end, limite) texto = string.gsub(string.gsub(texto, '>.-^?<', ''), '.-<(.-)>.*', '%1') return texto end

function m.contar(frame) local texto = mw.title.new(frame.args[1]):getContent local pattern = frame.args[2] pattern = string.gsub(pattern, '\\n', '\n') local gen = mw.ustring.gmatch(texto, pattern) local count = 0 for i in gen do   count = count + 1 end return count end

function m.testar(frame) local texto = mw.title.new(frame.args[1]):getContent local pattern = frame.args[2] pattern = string.gsub(pattern, '\\n', '\n') if frame.args['início'] then local init = mw.ustring.find(texto, frame.args['início']) if not init then return frame.args['não'] or 'Não' end end if mw.ustring.find(texto, pattern, init or 1) then return frame.args['sim'] or 'Sim' else return frame.args['não'] or 'Não' end end

return m