Module:StringBuilder

From Melvor Idle

StringBuilder Module Documentation

The `StringBuilder` module provides functionality to efficiently build and manipulate strings in Lua.

Constructor

StringBuilder.new()

Creates a new `StringBuilder` object.

  • Returns: `StringBuilder` object.

Methods

StringBuilder:append(...)

Appends strings or values to the `StringBuilder` buffer.

  • Parameters:
 * `...`: One or more values to append to the buffer.

StringBuilder:appendLine(...)

Appends strings or values followed by a newline (`\n`) to the `StringBuilder` buffer.

  • Parameters:
 * `...`: One or more values to append to the buffer.

StringBuilder:clear()

Clears the contents of the `StringBuilder` buffer.

  • Usage: Call this method to reset the `StringBuilder` buffer to an empty state.

StringBuilder:toString()

Converts the `StringBuilder` buffer into a concatenated string.

  • Returns: Concatenated string representation of the `StringBuilder` buffer.

Example Usage

To use the `StringBuilder` module in your Lua scripts, follow these examples:

local StringBuilder = require("StringBuilder")

-- Create a new StringBuilder object
local sb = StringBuilder.new()

-- Append strings and values to the StringBuilder buffer
sb:append("Hello, ")
  :append("world!")
sb:append(123)

-- Append a new line and more content
sb:appendLine("This is a new line.")

-- Convert StringBuilder buffer to a string
local result = sb:toString()

-- Output the result
print(result)  -- Output: "Hello, world!123\nThis is a new line."

local StringBuilder = {}
StringBuilder.__index = StringBuilder

-- Constructor
function StringBuilder.new()
    local self = setmetatable({}, StringBuilder)
    self.buffer = {}
    return self
end

-- Append method
function StringBuilder:append(value)
	if value then
    	table.insert(self.buffer, tostring(value))
	end
	
	return self
end

function StringBuilder:appendLine(value)
	if value then
		table.insert(self.buffer, tostring(value))
	end

	table.insert(self.buffer, "\n")
	return self
end

-- Clear method
function StringBuilder:clear()
    self.buffer = {}
end

-- ToString method
function StringBuilder:toString(separatorChar)
    return table.concat(self.buffer, separatorChar or '')
end

function StringBuilder:__tostring()
    return self:toString()
end

return StringBuilder