冰与火之歌中文维基
Advertisement

此模块的文档可以在Module:Date/doc创建

local p = {}

local function link(year)
  local res = ""
  if year == "?" then
    return "?"
  else
    year = tonumber(year)
  end
  if year < 0 then
    year = -year
    res = "[[征服前纪事#征服前" .. year .. "年|" .. year .. "BC]]"
  elseif year <= 1 then
    res = "[[伊耿历纪事#伊耿历元年|" .. year .. "AC]]"
  else 
    res = "[[伊耿历纪事#伊耿历" .. year .. "年|" .. year .. "AC]]"
  end
  return res
end

local function smartLink(year)
  local res = ""
  if year == "?" then
    return "?"
  else
    year = tonumber(year)
  end
  if year < 0 then
    year = -year
    if mw.title.makeTitle("",year.."BC").id==0 then
      res = "[[征服前纪事#征服前" .. year .. "年|" .. year .. "BC]]"
    else
      res = "[["..year.."BC]]"
    end
  elseif year <= 1 then
    if mw.title.makeTitle("",year.."AC").id==0 then
      res = "[[伊耿历纪事#伊耿历元年|" .. year .. "AC]]"
    else
      res = "[["..year.."AC]]"
    end
  else 
    if mw.title.makeTitle("",year.."AC").id==0 then
      res = "[[伊耿历纪事#伊耿历" .. year .. "年|" .. year .. "AC]]"
    else
      res = "[["..year.."AC]]"
    end  
  end
  return res
end

function p.date(frame)
  local res, res2 = ""
  local ok = false
  local one = frame.args[1]
  local two = frame.args[2]
  if one == "" and two == "" then
    res = "[[伊耿历纪事|?AC]]"
    return res
  end
  if one ~= "" then
    ok, res = pcall(smartLink, one)
    if not ok then
      res = link(one)
    end 
  else
    res = "?"
  end
  if two ~= "" then
    ok, res2 = pcall(smartLink, two)
    if not ok then
        res2 = link(two)
    end
    res = res .. " - " .. res2
  end
  return res
end

return p
Advertisement