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