模块:OutputBuffer

来自决策链云智库
Zeroclanzhang讨论 | 贡献2024年1月21日 (日) 23:00的版本 (创建页面,内容为“return function() local buffer = {} return function(sep) local b = buffer buffer = {} return table.concat(b, sep) end, function(text) buffer[#buffer + 1] = text end, function(...) buffer[#buffer + 1] = string.format(...) end end”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

This module provides an easy and efficient way to generate lengthy strings.

Usage

First, load the module.

local newBuffer = require('Module:OutputBuffer')

Then, create the buffer and the functions that act on it.

local getBuffer, print, printf = newBuffer()

getBuffer

local text = getBuffer(sep)

Returns the contents of the buffer, with an optional separator string sep.

print

print(s)

Adds the string s to the buffer.

printf

printf(s, ...)

Adds the string s to the buffer. The string is formatted with any subsequent arguments, following the rules used for string.format.

Example

local newBuffer = require('Module:OutputBuffer')
local p = {}

function p.main()
	local getBuffer, print, printf = newBuffer()
	print('Welcome to the English Wikipedia.')
	printf('There are currently %d articles on this site.', mw.site.stats.articles)
	return getBuffer(' ')
end

return p

-- Assuming this module's name is "TestModule", and that mw.site.stats.articles returns 4500000,
-- {{#invoke:TestModule|main}} would output:
-- "Welcome to the English Wikipedia. There are currently 4500000 articles on this site."

return function()
	local buffer = {}
	return function(sep)
		local b = buffer
		buffer = {}
		return table.concat(b, sep)
	end,
	function(text)
		buffer[#buffer + 1] = text
	end,
	function(...)
		buffer[#buffer + 1] = string.format(...)
	end
end