全站通知:
            
            
        
模块:Array
                  
                  
                  刷
                  
                     
                               
                               历
                            
                  
                    
                      
                        
                        编
                      
                    
                
            
            
            
            
            
            跳到导航
            跳到搜索
            
            
                
            
            
            
            
        
    local p = {}
local function stringToArray(str, separator, mapper)
	local arr = {}
	local i = 1
	for v in mw.text.gsplit(str, separator) do
		arr[i] = mapper(v)
		i = i + 1
	end
	return arr
end
local function tableToArray(tbl, offset, mapper)
	local arr = {}
	for k, v in pairs(tbl) do
		if type(k) == 'number' and k > offset then
			arr[k - offset] = mapper(v)
		end
	end
	return arr
end
function p.main()
	local args = require('Module:ProcessArgs').merge()
	return p.array(args)
end
function p.array(args)
	local wrapTag = args.wrap or ''
	local wrapTemplate = args.template or ''
	local delimiter = args.delimiter or args.d
	local formatString = args.format
	local finalDelimiter = args.finaldelimiter or args.fd
	local frame = mw.getCurrentFrame()
	local mapper = type(args.mapper) == 'function'
		and args.mapper
		or function (v)
			if wrapTemplate ~= '' then
				v = require( 'Module:' .. wrapTemplate ).call{ v }
			end
			if wrapTag ~= '' then
				if wrapTag == 'nowiki' then
					v = mw.text.nowiki(mw.text.unstripNoWiki(v))
				else
					v = frame:extensionTag(wrapTag, v)
				end
			end
			if formatString then
				v = formatString:format(v, v)
			end
			return v
		end
	local arr
	if args.mode == 'single' then
		arr = stringToArray(args[1], args.sep or ',', mapper)
	else
		arr = tableToArray(args, tonumber(args.offset) or 0, mapper)
	end
	if arr[1] == nil then
		return ''
	end
	if delimiter == 'pretty' then
		return mw.text.listToText(arr, nil, finalDelimiter ~= '' and finalDelimiter or nil)
	elseif finalDelimiter then
		return mw.text.listToText(arr, delimiter, finalDelimiter)
	elseif delimiter == 'newline' or delimiter == 'br' then
		return table.concat(arr, '<br>')
	elseif delimiter == 'list' or delimiter == 'list-newline'
		or delimiter == 'bullet' or delimiter == '*' then
			local listLevel = args['list-level'] or '**'
			return table.concat(arr, '\n' .. listLevel)
	else
		return table.concat(arr, delimiter)
	end
end
return p
                
                    沪公网安备 31011002002714 号