模块:GetCsv

来自维阿百科
1.38>牛腩面2022年7月7日 (四) 20:39的版本 (导入1个版本)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

给S佬写的模块,用来解析站内的csv表格

|data=csv表格 |row=第row+1行(第一行为标题,忽略之) |col=第col列


///////////////////////////////////////////////////////////////////////////////////////

demo

{{#invoke:GetCsv|Parse|data={{:Widget:CraftsList/data}}|row=3|col=12}}


/////////////////////////////////////////////////////////////////////////////////////


local p = {}

function p.Parse(frame)
	local args = (frame == mw.getCurrentFrame() and frame.args) or frame
	blocks=split(args.data,'\n')
	line=split(blocks[tonumber(args.row,10) + 1],',')
	return line[tonumber(args.col,10)]
end


function split(input, delimiter)
    input = tostring(input)
    delimiter = tostring(delimiter)
    if (delimiter=='') then return false end
    local pos,arr = 0, {}
    for st,sp in function() return string.find(input, delimiter, pos, true) end do
        table.insert(arr, string.sub(input, pos, st - 1))
        pos = sp + 1
    end
    table.insert(arr, string.sub(input, pos))
    return arr
end

return p