跳转到内容

Module:Arguments:修订间差异

修正错误
增加功能
第86行: 第86行:
end
end


function p.merge(obj)
  if type(obj)~="table" then return obj end
  if obj["type"]=="list" then
    local res={}
    for i, v in ipairs(obj) do
      if i~="type" then
        if v["type"]=="arg" then
          if v[2] then
            --mw.log(v[2],v[1])
            res[p.merge(v[2])]=p.merge(v[1])
          else
            --mw.log(v[1])
            table.insert(res, p.merge(v[1]))
          end
        else
          --mw.log(v)
          table.insert(res, p.merge(v))
        end
      end
    end
    return res
  elseif obj["type"]=="template" then
    return frame:expandTemplate{title=p.merge(obj[1]), args=p.merge(obj[2])}
  elseif obj["type"]=="value" then
    local res={}
    for i, v in ipairs(obj) do
      if i~="type" then
        table.insert(res, p.merge(v))
      end
    end
    return table.concat(res)
  else
    return obj
  end
end


-- 语法:
-- 语法:
第95行: 第131行:
-- name ::= value
-- name ::= value


p.parse=function(frame)
p.execute=function(frame)
  local argstr=frame.args[1]
  if not argstr then return end
 
  local r=p.merge(p.parse_args(argstr, 1))
  local nr={}
  for i, v in pairs(r) do
    if type(i)=="number" then
      if i>1 then
        table.insert(nr, v)
        --mw.log(v)
      end
    else
      nr[i]=v
      --mw.log(i,v)
    end
  end
  return frame:expandTemplate{title=r[1], args=nr}
end
 
p.serialize=function(frame)
  local argstr=frame.args[1]
  if not argstr then return end
 
  local r=p.merge(p.parse_args(argstr, 1))
  local nr={}
  for i, v in ipairs(r) do
    table.insert(nr, v)
  end
  for i, v in pairs(r) do
    if type(i)~="number" then
      table.insert(nr, i .. "=" .. v)
    end
  end
  return mw.text.nowiki("{{" .. table.concat(nr, "|") .. "}}")
end
 
p.fullserialize=function(frame)
   local argstr=frame.args[1]
   local argstr=frame.args[1]
   if not argstr then return end
   if not argstr then return end
第122行: 第195行:
       return res
       return res
     elseif obj["type"]=="template" then
     elseif obj["type"]=="template" then
       --return merge(obj[1]) .. "|" .. table.concat(merge(obj[2]), "|")
       return mw.text.nowiki("{{" .. merge(obj[1]) .. "|" .. table.concat(merge(obj[2]), "|") .. "}}")
      return frame:expandTemplate{title=merge(obj[1]), args=merge(obj[2])}
     elseif obj["type"]=="value" then
     elseif obj["type"]=="value" then
       local res={}
       local res={}
第137行: 第209行:
   end
   end


  --mw.log(table.concat(merge(p.parse_args(argstr, 1)), "|"))
   local r=merge(p.parse_args(argstr, 1))
   local r=merge(p.parse_args(argstr, 1))
   local nr={}
   local nr={}
  for i, v in ipairs(r) do
    table.insert(nr, v)
  end
   for i, v in pairs(r) do
   for i, v in pairs(r) do
     if type(i)=="number" then
     if type(i)~="number" then
       if i>1 then
       table.insert(nr, i .. "=" .. v)
        table.insert(nr, v)
        --mw.log(v)
      end
    else
      nr[i]=v
      --mw.log(i,v)
     end
     end
   end
   end
   return frame:expandTemplate{title=r[1], args=nr}
   return mw.text.nowiki("{{" .. table.concat(nr, "|") .. "}}")
end
end


return p
return p
我们为您提供服务需要使用Cookie。使用我们的服务即表示您同意我们使用Cookie。