Skip to content

Library: Math

ᴏᴠ ━ ᴀɴɪꜱᴀ edited this page Dec 5, 2024 · 21 revisions

» Objective

This module provides a robust implementation of namespaces and classes in Lua, offering:

  • Controlled variable and handler scope management
  • Code organization into logical groups
  • Prevention of naming collisions
  • Support for public and private members
  • Lightweight class simulation with instance management

» Key Features

  • Namespace and class creation with scope control
  • Public and private member support
  • Nested class and namespace capabilities
  • Safe instance management

» Importing

Add the below code once in either of the shared .lua script of the resource you want to use within:

--Declare it globally only once
loadstring(exports.assetify_library:import("namespacer"))()

» APIs

  • assetify.namespace:create() - shared

Creates the specified namespace. ⚠️ Always ensure to localize the namespace instance to avoid being exposed to global scope.

--Note: Public & Private members can be appended later via cNamespace.public & cNamespace.private respectively.
local namespace: cNamespace = assetify.namespace:create(
   string: name --Name of your namespace,
   table: parent --Optional: Any non class table that you wish to utilize for creating the namespace.
)
  • assetify.namespace:destroy() - shared

Destroys an existing namespace. ⚠️ Destroying namespace will also destroy any further classes & their instances located within it.

local bool: result = assetify.namespace:destroy(
   string: name --Name of your namespace
)
  • assetify.class:getName() - shared

Retrieves class's name.

local string: name = self:getName()
  • assetify.class:create() - shared

Creates the specified class. ⚠️ Always ensure to localize the class instance to avoid being exposed to global scope.

--Note: Public & Private members can be appended later via cClass.public & cClass.private respectively.
local class: cClass = assetify.class:create(
   string: name, --Name of your class
   table: parent, --Optional: Any non class table that you wish to utilize for creating the class.
   string: namespace --Optional: Valid namespace that you prefer to scope the class within. If not specified the instance will be created within the global scope.
)
  • assetify.class:destroy() - shared

Destroys the specified class. ⚠️ Destroying class also destroys all of its belonging instances.

local bool: result = assetify.class:destroy(
   class: instance
)
  • assetify.class:isInstance() - shared

Verifies whether the table is an instance of the specified class.

local bool: result = self:isInstance(
   class <instance>: cInstance
)
  • assetify.class:createInstance() - shared

Creates an instance of the specified class.

local class <instance>: cInstance = self:createInstance()
  • assetify.class:destroyInstance() - shared

Destroys specified instance.

local bool: result = cInstance:destroyInstance()
Clone this wiki locally