Skip to content

Library: Namespace

ᴏᴠ ━ ᴀɴɪꜱᴀ edited this page Dec 5, 2024 · 12 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

@Objective: 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

@Objective: 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

@Objective: Retrieves class's name.
local string: name = self:getName()
  • assetify.class:create() - shared

@Objective: 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

@Objective: 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

@Objective: Verifies whether the table is an instance of the specified class.
local bool: result = self:isInstance(
   class <instance>: cInstance
)
  • assetify.class:createInstance() - shared

@Objective: Creates an instance of the specified class.
local class <instance>: cInstance = self:createInstance()
  • assetify.class:destroyInstance() - shared

@Objective: Destroys specified instance.
local bool: result = cInstance:destroyInstance()

Clone this wiki locally