Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/TiiJ7/StringBuilder
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
------------------------------------------------------------ -- Quick module to help creating a concatenated string. -- To be used in other modules. -- -- By User:TiiJ7 ------------------------------------------------------------ local StringBuilder = {} StringBuilder.__index = StringBuilder local StringBuilderModes = { convert = true, ignore = true, error = true } -- Creates a new string builder function StringBuilder.new() local sb = {} setmetatable(sb,StringBuilder) sb._buffer = {} sb._mode = 'convert' sb._separator = '' return sb end -- Sets the mode of the string builder, see doc function StringBuilder:setMode(mode) if not mode then return self end if StringBuilderModes[mode] then self._mode = mode end return self -- Method chaining end -- Sets the separator with which the strings are concatted function StringBuilder:setSeparator(separator) if not separator then return self end separator = tostring(separator) if separator ~= nil then self._separator = separator end return self -- Method chaining end -- Appends a string function StringBuilder:append(str) if str then self:_addString(str,self._buffer) end return self -- Method chaining end -- Appends multiple strings function 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 chaining end -- Clears the internal buffer function StringBuilder:clear() local b = self._buffer for i=1,#b do b[i] = nil end return self -- Method chaining end -- Returns the result as a string function StringBuilder:toString() local b = self._buffer if #b == 0 then return '' end return table.concat(b,self._separator) end -- Adds a single string function 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 == 'error' then error( 'ERROR: Trying to append object of type "' .. type(str) .. '"' ) else return end end t[#t+1] = str end -- Meta tostring function function StringBuilder:__tostring() return self:toString() end -- Some function aliases... StringBuilder.a = StringBuilder.append StringBuilder.aa = StringBuilder.appendAll StringBuilder.c = StringBuilder.clear StringBuilder.m = StringBuilder.setMode StringBuilder.s = StringBuilder.setSeparator return StringBuilder
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Sandbox/TiiJ7/StringBuilder/doc
(
edit
)