Module:Redirect: Difference between revisions

324 bytes removed ,  11 years ago
consistent parsing of passed page name, output when passed bracket, and interpretation of redirect
(rm extra space)
(consistent parsing of passed page name, output when passed bracket, and interpretation of redirect)
Line 9: Line 9:


function p.main(frame)
function p.main(frame)
  args=frame.args
    local args, pargs = frame.args, (frame:getParent() or {}).args or {}
  parent=frame.getParent(frame)
    local rname, bracket = args[1] or pargs[1], args.bracket or pargs.bracket
  if parent then pargs = parent.args else pargs={} end
   
  local rname=args[1] or pargs[1] or ""
    if not rname or not mw.ustring.match(rname, "%S") then return "" end
  local bracket=args.bracket or pargs.bracket
    bracket = bracket and "[[%s]]" or "%s"
  local bb = "";local be= "" -- store brackets if restoring to an output if bracket option is set
    rname = mw.ustring.match(rname,"%[%[(.+)%]%]") or rname
  if rname then
   
      if mw.ustring.gsub(rname,"%s","") == "" then return "" end
    local rpage, err = mw.title.new(rname)
      if bracket then
   
          local strip=mw.ustring.match(rname,"%[%[(.+)%]%]")
    -- avoid expensive operation when nothing to do
          if strip then rname=strip;bb="[[";be="]]" end
    if not rpage then
      end
        err = "File not found (mw.title.new failed)"
      else return ""
    elseif rpage.id == 0 then
  end
        err = "File not found (id=0):"
  local rpage=mw.title.new(rname)
    elseif not rpage.isRedirect then
  local err=""
        return mw.ustring.format(bracket, rname) -- not a redirect so use passed page name (for some general-purpose template use)
  if rpage then -- avoid possibly expensive FileExists if we don't have anything
    else
      if rpage.id ~= 0 then
        local redirect = mw.ustring.match( rpage:getContent() or "", "^#[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt]%s*%[%[(.-)%]%]" )
      --  if rpage.fileExists then
       
            if rpage.isRedirect then
        if redirect then
              return (bb.. tostring(mw.ustring.match(tostring(rpage.getContent(rpage)),"[Rr][Ee][Dd][Ii][Rr][Ee][Cc][Tt].-%[%[(.-)%]%]")..be) or [=[<span style="text-color:red;">[[Module:redirect]] error: failed to understand - [[]=] .. rname .. [=[]]</span]=])
             return mw.ustring.format(bracket, redirect)
             else return rname -- not a redirect so leave the original text (for some general-purpose template use)
        end
            end
       
      --  else err="File does not exist: "
        err = "failed to understand"
      --  end
    end
      else err="File not found (id=0):"
   
      end
    return '<span style="text-color:red;">[[Module:redirect]] error: ' .. err .. ' - [[' .. rname .. ']]</span>'
  else err="File not found (mw.title.new failed)"
  end
  return [=[<span style="text-color:red;">[[Module:redirect]] error: ]=] .. err .. [=[ - [[]=] .. rname .. [=[]]</span>]=]
end
end


return p
return p
Anonymous user