模組:Infobox animanga moretime

文档图示 模块文档[查看] [编辑] [历史] [清除缓存]

本模块用于处理作品多连载期时避免参数混乱使用,而实现参数归类处理,使用时直接作为连载时间的内容格输出,配备时请注意在模块调用配备以下参数:

  • start<n>
指定读取连载周期的开始参数名
  • end<n>
指定读取连载周期的结束参数名
  • head<n>
指定读取连载周期的标示名
    • <n>范围在1~10整数
  • noend
指定仍在连载时的替换内容

使用后,如按以下配置执行参数:

|{{Infobox_animanga/Item|播放期間|{{#invoke:Infobox_animanga_moretime|main
 |start1=播放开始
 |end1=播放结束
 |head1=播放期
 |noend=播放中
}}|nowrap=y}}

参数与内容生成为以下对应

     参数                                         生成样式(右边内容为生成部分)
    .......
|
|播放开始1=<AAAA>             |             |第一期:<AAAA> - <AAAA'>
|播放结束1=<AAAA'>            |             |<BBBB> - <BBBB'>
|播放开始2=<BBBB>   ---->  |播放期间|<CCCC> - 播放中
|播放结束2=<BBBB'>             |             |
|播放开始3=<CCCC>             |             |
|播放期1=第一期
    .......

local ia_more={}
ia_more.main=function(frame)
    local params=frame.args
    local args=frame:getParent().args
    
    local body=""
    local entry={} 
    
    local head_key={}
    local start_key={}
    local end_key={}
    local noend=params["noend"]
    
    for params_count=1,10 do
        t_head_key=params["head"..params_count]
        t_start_key=params["start"..params_count]
        t_end_key=params["end"..params_count]
        
        if (t_head_key~=nil)then
            table.insert(head_key,t_head_key)
        end
        
        if (t_start_key~=nil)then
            table.insert(start_key,t_start_key)
        end
        
        if (t_end_key~=nil)then
            table.insert(end_key,t_end_key)
        end
    end
    
    local i=1
    while true do--frame的args不是完全table实现,无法用#args查表长,只能死循环试探结束。
        local t_head,t_begin,t_end
        for k,v in ipairs(head_key)do
            t_head=args[v..i] or (t_head or nil)
        end
        for k,v in ipairs(start_key)do
            t_begin=args[v..i] or (t_begin or nil)
        end
        for k,v in ipairs(end_key)do
            t_end=args[v..i] or (t_end or nil)
        end
        if t_end == nil or t_end=='' then
            t_end=noend
        end
        --[[t_head=
        t_begin=((args['播放開始'..i] or args['放送開始'..i]) or args['first'..i])
        t_end=((((args['播放完結'..i] or args['播放結束'..i])or args['放送終了'..i])or args['last'..i])or "播放中")]]
 
        if (t_begin~=nil) then   
            t_item={
                    [1]=t_begin,
                    [2]=t_end,
                    [3]=t_head
                    }
            table.insert(entry,t_item)
            i=i+1
        else
            break
        end 
    end    
    
    for k,v in ipairs(entry) do
        head_v=v[3]
        start_v=v[1]
        end_v=v[2]
        
        if(head_v~=nil)then
            head_v=head_v..":"
        else
            head_v=""
        end
        
        body =body .. head_v ..start_v .. " - " .. end_v .. "<br/>"
    end   
 
    local out=body
 
    return out;
end 
 
return ia_more