# Namespace: CB_Modules

## CB_Modules

Static class that contains all the modules and the tools to manage them.

Source:
  - CrossBrowdy.js, line 157

### Members

#### <static, readonly> STATUSES :integer

  Enum which defines possible module statuses.

  ##### Type:

  - integer

  ##### Properties:

  Name | Type | Default | Description
  --- | --- | --- | ---
  `FAILED` | integer | -1 | The module has failed to load.
  `UNKNOWN` | integer | 0 | The module has an unkwnown status.
  `UNLOADED` | integer | 1 | The module is not loaded yet. Default status.
  `LOADING` | integer | 2 | The module is being loading.
  `LOADED` | integer | 3 | The module has loaded successfully (coudl be not ready yet).
  `READY` | integer | 4 | The module has loaded successfully and it is ready to be used.

  Source:
    - CrossBrowdy.js, line 166

#### <static> modules :Object

  Contains all the modules, one per property.

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `name_of_the_module` | CB_Modules.MODULE | Object that contains the module data. The property name must be the name of the module.

  Source:
    - CrossBrowdy.js, line 242

### Methods

#### <static> addNeededFiles(moduleName, neededFiles) → {boolean}

  Attaches files to a module.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `moduleName` | string | Name of the module which will contain the new files.
  `neededFiles` | CB_Modules.NEEDED_FILES | The "neededFiles" parameter for the module.

  Source:
    - CrossBrowdy.js, line 947

  ##### Returns:

  It will return true if succeeded or false otherwise.

  Type
    boolean

#### <static> addNeededModule(moduleNameParent, moduleName, neededFiles) → {boolean}

  Attaches one module to another one.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `moduleNameParent` | string | Name of the parent module where the new child module will be attached to.
  `moduleName` | string | Name of the new child module which will be attached to the given parent.
  `neededFiles` | CB_Modules.NEEDED_FILES | The "neededFiles" parameter for the new child module.

  Source:
    - CrossBrowdy.js, line 933

  ##### Returns:

  It will return true if succeeded or false otherwise.

  Type
    boolean

#### <static> editProperty(moduleName, property, value [, type] [, iterateArray]) → {boolean}

  Modifies a desired property of a given module.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `moduleName` | string |  |  | Name of the module which contains the property to modify.
  `property` | string |  |  | Name of the property to modify.
  `value` | * |  |  | Value desired for the property.
  `type` | 'array' | 'object' | 'scalar' | <optional> | 'scalar' | Type that the property uses. If it is "array", the given "value" will be attached at the end of the array (all in a new single index if the "iterateArray" parameter is set to false, or each value in a new index otherwise). If it is "object", the given "value" and the given "property" to modify will be treated as objects and the members of the "value" will be copied one by one (overwriting previous members in the case they existed). If it is "scalar" or any other, the given "property" value will be replaced with the given "value".
  `iterateArray` | boolean | <optional> | false | If is set to true and the given "type" is "array", the given "value" will be considered an array and will be iterated to copy each of its values to a new index in the destiny. Otherwise, if it is set to false and the given "type" is "array", the given "value" will be attached at the end of the array in a new single index.

  Source:
    - CrossBrowdy.js, line 872

  ##### Returns:

  It will return true if succeeded or false otherwise.

  Type
    boolean

#### <static> get(moduleName) → {CB_Modules.MODULE|null}

  Returns a `CB_Modules.MODULE` object for module management.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `moduleName` | string | Name of the desired module.

  Source:
    - CrossBrowdy.js, line 828

  ##### Returns:

  If found, it will return the `CB_Modules.MODULE` object desired. Otherwise, it will return null.

  Type
    CB_Modules.MODULE | null

#### <static> getProperty(moduleName, property) → {*|null}

  Gets the value of a desired module property (or returns null).

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `moduleName` | string | Name of the desired module.
  `property` | string | Name of the desired property.

  Source:
    - CrossBrowdy.js, line 846

  ##### Returns:

  If found, it will return the value of the desired module property. Otherwise, it will return null.

  Type
    * | null

#### <static> setStatus(moduleName, status) → {boolean}

  Sets a status for a given module.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `moduleName` | string | Name of the module.
  `status` | integer | The desired status. Must be a value that exists in the `CB_Modules.STATUSES` enum.

  Source:
    - CrossBrowdy.js, line 740

  ##### Returns:

  It will return true if succeeded or false otherwise.

  Type
    boolean

### Type Definitions

#### CALLBACK(scriptPath)

  Callback for the different events of a module.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `scriptPath` | string | The value for the "scriptPath" parameter used by `CB_init` when it was called.

  Source:
    - CrossBrowdy.js, line 219

#### MODULE

  Object that contains a module.

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `name` | string | Name of the module.
  `status` | CB_Modules.STATUSES | Module status.
  `onCall` | CB_Modules.CALLBACK | Callback for when the module is called to be loaded. Being "this" the `CB_Modules.MODULE` object itself.
  `onLoad` | CB_Modules.CALLBACK | Callback for when the module loads successfully. Being "this" the `CB_Modules.MODULE` object itself.
  `onReady` | CB_Modules.CALLBACK | Callback for when the module is totally ready. Being "this" the `CB_Modules.MODULE` object itself.
  `onFail` | CB_Modules.CALLBACK | Callback for when the module fails to load. Being "this" the `CB_Modules.MODULE` object itself. NOT IMPLEMENTED YET.
  `neededFiles` | CB_Modules.NEEDED_FILES | Object containing the needed files.
  `neededModules` | array | Array of `CB_Modules.NEEDED_MODULE` objects, containing the needed modules.
  `credits` | string | Credits of the module.

  Source:
    - CrossBrowdy.js, line 226

#### NEEDED_FILE

  Object that contains a needed file for a module.

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `load` | boolean | <optional> | false | Defines whether to load the file or not.
  `mandatory` | boolean | <optional> | false | Defines whether the file is mandatory. If the file is not mandatory, its module could be declared as loaded successfully before the file is loaded (and maybe never will).
  `absolutePath` | boolean | <optional> | false | Defines whether the path of the file is relative to the path of the main script or absolute.
  `loadChecker` | CB_Modules.neededFile_LOAD_CHECKER | <optional> |  | Callback that will be called when the file tries to be loaded and should return true if the file needs to be loaded.
  `id` | string | <optional> |  | Desired string to identify the file.
  `requires` | array | <optional> |  | Array of strings with the IDs of the files that must be loaded before loading this file. The file will not be loaded until the required files are loaded first.

  Source:
    - CrossBrowdy.js, line 191

#### NEEDED_FILES

  Object that contains the needed files for a module. Each property will represent a needed file.

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `path_to_the_file` | CB_Modules.NEEDED_FILE | Object that contains a needed file for a module. The property name must be either the path to the file or a variable containing it. Tto use a variable, the name of the property must start with "VALUEOF_" and continue with the name of the variable. In the case that the variable is an object, each property must be separated by a dot (".").

  Source:
    - CrossBrowdy.js, line 203

#### NEEDED_MODULE

  Object that contains a needed module for a parent module.

  ##### Type:

  - Object

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `name` | string | Name of the module.
  `neededFiles` | CB_Modules.NEEDED_FILES | Object containing the needed files.

  Source:
    - CrossBrowdy.js, line 211

#### neededFile_LOAD_CHECKER(filepath, neededFile) → {boolean}

  Callback that is called before loading a file and should return true if we want to load the file or false otherwise.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `filepath` | string | Filepath of the needed file (including the filename).
  `neededFile` | CB_Modules.NEEDED_FILE | Object that contains the needed file.

  Source:
    - CrossBrowdy.js, line 182

  ##### Returns:

  - Returns true if we want to load the file or false otherwise.
  Type
    boolean

#### Search results