Module:Sandbox/TiiJ7/StringBuilder explained

-------------------------------------------------------------- Quick module to help creating a concatenated string.-- To be used in other modules.---- By User:TiiJ7------------------------------------------------------------ local StringBuilder = StringBuilder.__index = StringBuilderlocal StringBuilderModes = -- Creates a new string builderfunction StringBuilder.new local sb = setmetatable(sb,StringBuilder) sb._buffer = sb._mode = 'convert' sb._separator = return sbend -- Sets the mode of the string builder, see docfunction StringBuilder:setMode(mode) if not mode then return self end if StringBuilderModes[mode] then self._mode = mode end return self -- Method chainingend -- Sets the separator with which the strings are concattedfunction StringBuilder:setSeparator(separator) if not separator then return self end separator = tostring(separator) if separator ~= nil then self._separator = separator end return self -- Method chainingend -- Appends a stringfunction StringBuilder:append(str) if str then self:_addString(str,self._buffer) end return self -- Method chainingend -- Appends multiple stringsfunction StringBuilder:appendAll(...) local argcount = select('#',...) if argcount then local b = self._buffer local f = self._addString for i=1,argcount do f(self,select(i,...),b) end end return self -- Method chainingend -- Clears the internal bufferfunction StringBuilder:clear local b = self._buffer for i=1,#b do b[i] = nil end return self -- Method chainingend -- Returns the result as a stringfunction StringBuilder:toString local b = self._buffer if #b

0 then return end return table.concat(b,self._separator)end -- Adds a single stringfunction StringBuilder:_addString(str,t) if type(str) ~= 'string' and type(str) ~= 'number' then local m = self._mode if m

'convert' then str = tostring(str) if not str then return end elseif m