-
-
Notifications
You must be signed in to change notification settings - Fork 0
Feature: Namespacer
Namespaces are useful when you've to control or limit the scope of the variables & handlers. Beside that they are also widely used to organize code into logical groups and to prevent naming collisions that can occur especially when you are dealing w/ multiple scripts that utilizes same naming. This module additionally also features a lightweight yet safest way to simulate classes & their instances while having public & private members fully supported out of the box!
Namespace
& Class
both does support public & private member variables & functions. Private members are completely protected from being accessed via global scope unless the user "INTENTIONALLY" exposes it. Moreover Class
can be namespaced as well; i.e you can create classes inside namespace without conflicting the global or other namespaced classes while using same namings!
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"))()
--Note: Public & Private members can be appended later via cNamespace.public & cNamespace.private respectively.
local namespace: cNamespace = assetify.namespace:create(
string: type --Name of your namespace,
table: parent --(Optional) Any non class table that you wish to utilize for creating the namespace.
)
local bool: result = assetify.namespace:destroy(
string: type --Name of your namespace
)
local string: type = self:getType()
--Note: Public & Private members can be appended later via cClass.public & cClass.private respectively.
local class: cClass = assetify.class:create(
string: type, --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.
)
local bool: result = assetify.class:destroy(
class: instance
)
local bool: result = self:isInstance(
class <instance>: cInstance
)
local class <instance>: cInstance = self:createInstance()
local bool: result = cInstance:destroyInstance()