Skip to content

Library: Namespace

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

» Overview

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 globally once in either of the shared .lua script of the resource you want to use within:

loadstring(exports.assetify_library:import("namespace"))()

» 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()