Documentation

Writing Codes in BotanJs

Scoping

It is recommended to enclosed each class with (function(){ / CODES / })(); ( but NOT A MUST ) to ensure your variables and function would not collide with other predefined variables or other classes.

However, you can achive a higher compression ratio without enclosing. It is your choice to ensure the variable names would not collide each other ( such as adding prefixes ).

Namespaces

The Namespace MUST be defined for each beginning of the class via the predefined function __namespace. This tells the compiler to associate this file to the defined namespace.

Example

// Path/To/The/Namespace/MyExportedClassName.js
(function() {
	var ns = __namespace( "Path.To.The.Namespace" );

	// JSDoc is needed to prevent the closure compiler
	// compressing exported methods and properties
	/** @type {Path.To.Some.Other.Class} */
	var OtherClass = __import( "Path.To.Some.Other.Class" );

	// Enclosing also enables the private static scope
	var MyPrivateStaticVar = "Private static variable";

	var MyClass = function() { };
	MyClass.prototype.MyFunction = function() { };

	// This will export your class to Path.To.The.Namespace.MyExportedClassName
	ns[ NS_EXPORT ]( EX_CLASS, "MyExportedClassName", MyClass );
})();