Author: Zeta Ret
Zeta Ret XeltoSS
Requires: protoss.all.js
Version: 1.7.0
Date: 2017 - Today
required*
Interfaces: IXeltoSS
scriptContainer HTMLElement
default null, container to append new script tags
scriptContainerAppendMethod String
default 'appendChild', method name to call at scriptContainer
protossPrefix String
default 'protoss__', prefix in package
xeltossPrefix String
default 'xeltoss__', prefix in package
xeltossMethodSuffix String
default 'X', x scoped method suffix after transpile (add '_x' in function definition to preserve scope, lookup Function.prototype.xcoped)
statisAsStatic Boolean
default false, methods added using 'statis' will be converted to static of the class
embedMaps Object
default {}, used in 'addEmbedMap' and 'toCls', matches object supername and key in order to build custom body properties defined externally
augmentKeyMap Object
default {}, used in 'augmentKey' and 'argumentKeyMatch', identify alternative keys based on augmenting object supername
noKeyIdentificationChain Object
default {}, used in 'argumentKeyMatch' and 'identifyKeyChain' to identify missing key values, misconfiguration might result 'void'
toppack Object
default null, top package you should set 'window' in most cases, used everywhere inside code to obtain classes by supername
scopeMap Object
default {}, scope cache map used in external or proxy builders (usually will refer to it through XeltoSS this object as shared memory mechanism)
preserveScope Boolean
default false, protected methods using '_p' will generate scoped method and replace original (lookup Function.prototype.xcoped)
fractalizedScope Boolean
default false, used in external and proxy AST/instruction builders to successfully identify stacks of scope (usually achieved by defining functions inside each other and referring to scope outside its own), this concept is not implemented in the majority of source code parsers but in Virtual Machines
obscureTimers Boolean
default false, remove setInterval and setTimeout during hybridization process
setInterval Function
default null, reference to original setInterval function
setTimeout Function
default null, reference to original setTimeout function
tokens Object
default null, map of string tokens
keywords Object
default null, map of string keywords
operators Object
default null, map of string operators
autoget Boolean
default true, allow automatic conversion of marked methods as getters
autoGetPrefix String
default 'get_', method name prefix mark
autoset Boolean
default true, allow automatic conversion of marked methods as setters
autoSetPrefix String
default 'set_', method name prefix mark
methodJoin String
default '', used string in joining method array
bodyJoin String
default '', used string in joining body logic array
overextendHandler Function
default null, define custom extraction of body properties
classHandler Function
default null, define custom construction of class output string
tossIgnore Boolean
default false, disable ProtoSS transfer of prototypes, method maps and method transfer
deflatInterfaces Boolean
default true, used in assembly process if deflat allowed
deflatAbstracts Boolean
default true, used in assembly process if deflat allowed
deflatConstructs Boolean
default true, used in assembly process if deflat allowed
deflatInheritance Boolean
default true, used in assembly process if deflat allowed
deflatStruct Object
default {}, used through 'deflatCls'
objectStringify Function
default null, custom stringification of objects, lookup JSON.stringify
arrayStringify Function
default null, custom stringification of arrays, lookup JSON.stringify
methodTransfer Boolean
default false, inherited methods will not be added to class definition, can be transfered from super prototype
autoConstructor Boolean
default true, constructor method key must be equal to class name to initiate default constructor policy, lookup 'constructorKeys'
constructorKeys Array
default ['construct', '_construct', '_constructor'], add constructor body to class body
mergeConstructors Boolean
default true, allow all constructors including inherited to be merged in class constructor
inverseMergeConstructors Boolean
default false, use reversed order of super constructors
replicaConstructors Boolean
default false, allow merge of the same super constructor in diamond inheritance
constructorMap Object
default {}, inherited cache of constructors, used in 'mergeConstructors' process
autoDestructor Boolean
default true, allow XeltoSS to auto destroy upon xeltoss hybridization
destructorKeys Array
default ['destruct', '_destruct', '_destructor'], invoke destructor upon end of xeltoss hybridization
allowSetters Boolean
default true, extract and verify defined setters into new class
allowGetters Boolean
default true, extract and verify defined getters into new class
allowAsync Boolean
default false, extract and verify defined async methods into new class
AsyncFunction Function
default null, AsyncFunction Primitive definition
allowGenerator Boolean
default false, extract and verify defined generator methods into new class
GeneratorFunction Function
default null, GeneratorFunction Primitive definition
ASTConstructor Function
default null, Abstract Syntax Tree Primitive definition, lookup 'xeltoss/ASTConstructor.js'
bodyAssembler Function
default null, invoke upon every body property addition during class construction process
methodAssembler Function
default null, invoke upon every method addition during class construction process
argsLookup Function
default null, used in 'getConstructorArgs'
aststruct Object
default null, defined in 'buildASTObject' after calling 'buildInstructions'
proxyASTBuilder Function
default null, used in 'buildASTObject' as external Abstract Syntax Tree Object builder (usually Virtual Machine or source code parser)
proxyInstructions Function
default null, used in 'buildInstructions'
deflat Function
default null, extract any additional information regarding instance according to deflat properties
chmod Number
default 0, used in 'buildInstructions' (usually defines mode of character reading throughout source code)
XeltoSS() : void
return void
initTokens() : XeltoSS
constructs 'tokens' object
return XeltoSS, self
initKeywords() : XeltoSS
constructs 'keywords' object
return XeltoSS, self
initOperators() : XeltoSS
constructs 'operator' object
return XeltoSS, self
initAsync() : XeltoSS
constructs 'AsyncFunction' and allows async
return XeltoSS, self
initGenerator() : XeltoSS
constructs 'GeneratorFunction' and allows generator
return XeltoSS, self
updateTimers(Boolean obscure) : XeltoSS
- obscure - Boolean, if true will remove setInterval/setTimeout otherwise will revert
return XeltoSS, self
hashString(String str) : String
- str* - String, bitshifted version will be generated
return String, hash version of input str
decomposeFunction(Function f) : Array
- f* - Function, any function
return Array, 0-name:String, 1-arguments keyname:Array, 2-function body:String, 3-hash of f body:String, 4-function header:String
deflatCls(Object obj, Object maps, Boolean interfaces, Boolean abstracts, Boolean constructs, Boolean inheritance) : XeltoSS
- obj* - Object, object in reconstruction, instance of ProtoSS constructor or custom format
- maps - Object, extracted polymorphic maps from 'obj'
- interfaces - Boolean, modify interfaces
- abstracts - Boolean, modify abstract classes
- constructs - Boolean, modify constructors
- inheritance - Boolean, modify hierarchy and its constructors
return XeltoSS, self
if (o.deflat) {
o.deflat.call(o, obj, maps, interfaces, abstracts, constructs, inheritance);
}
getConstructorArgs(Function clsconstructor, Object obj, String key, Object data) : String
- clsconstructor* - Function, corresponding constructor in 'obj' key-value
- obj* - Object, host object
- key* - String, key on host object
- data - Object, additional data for 'argsLookup', usually polymorphic maps
return String, arguments string representation ready for function construction
if (o.argsLookup) {
return o.argsLookup.call(o, clsconstructor, obj, key, data);
}
buildInstructions(String fbody, Function cls) : Array
- fbody* - String, class source in string format
- cls* - Function, function reference to fbody string
return Array, code instructions representing source
var fbl = fbody.length, ch = o.chmod, instr = [];
if (fbl > 0 && o.proxyInstructions) {
return o.proxyInstructions.call(o, fbody, cls, ch, instr);
}
return instr;
buildASTObject(Function cls) : Object
- cls* - Function, uses 'proxyASTBuilder' or 'new' instance as default behaviour in JS VM and 'buildInstructions' aststruct extraction
return Object, default is cls instance as it is generated by JS VM
if (!o.proxyASTBuilder) {
var ast = new cls();
o.aststruct = o.buildInstructions(cls.toString(), cls);
return ast;
}
return o.proxyASTBuilder.call(o, cls);
identifyKeyChain(Object obj, Function identifyKeyHandler) : XeltoSS
- obj* - Object, host object, obtains supername string
- identifyKeyHandler* - Function, function nkic(obj,k,d,s) mapped by supername
return XeltoSS, self
addEmbedMap(Object obj, Object keyHandlerMap) : XeltoSS
- obj* - Object, host object, obtains supername string
- keyHandlerMap* - Object, key-function object map, 'em[sname][k](obj,k,decomp,sname)', functions can be generated with 'argumentKeyMatch'
return XeltoSS, self
augmentKey(Object obj, Object akeyMap) : XeltoSS
- obj* - Object, host object, obtains supername string
- akeyMap* - Object, key-array object map, must be generated 'augmentKeyMap[sname][key]=[]' using lower case keys, used in 'argumentKeyMatch'
return XeltoSS, self
argumentKeyMatch(Number orshift, Object defval, Function formatter) : Function
- orshift - Number, configure argument index shift upon matching it with 'augmentKeyMap' by supername 's'
- defval - Object, default value, return using 'valToString' and special keyword implementations (self, this, byte, word, void), lookup 'noKeyIdentificationChain'
- formatter - Function, format upon return 'formatter(kv,fkv,defval,obj,k,d,s)'
return Function, function(obj,k,d,s) used in 'addEmbedMap'
valToString(Object val) : String
- val* - Object, uses standard methods of convertion, objects and arrays may be converted using 'objectStringufy' and 'arrayStringify'
return String, parsed val into String, acceptable by VM as a property, i.e. class constructor property
findMethodInMaps(Object obj, String key, Function method, Array maps) : Object
- obj* - Object, obtains maps by map key
- key* - String, method key
- method* - Function, method reference
- maps* - Array, map keys in supers order
return Object, super method map owner of the method
toCls(Object obj, String clsname, String clssuper, Boolean deflat, Object polymaps, Object reservedwordsmap, Boolean emptify) : String
- obj* - Object, ProtoSS instance or ASTObject used to construct class string
- clsname - String, JS Class name or cls name
- clssuper - String, JS Super class name (extends property) or none
- deflat - Boolean, will call external deflatter to finalize property and method extraction during reconstruction phase
- polymaps - Object, initial polymorphic references
- reservedwordsmap - Object, default key names
- emptify - Boolean, empty Object/Array or null values in properties
return String, class representation in String format
ClsFactoryFromStringCls(String clss) : Function
- clss* - String, class representation in String format, will be wrapped in Function return body
return Function, factory/generator of XeltoSS class, a call is required to return class reference
toClsFactory(Object obj, String clsname, String clssuper, Boolean deflat, Object polymaps, Object reservedwordsmap, Boolean emptify) : Function
- obj* - Object,
- clsname - String, JS Class name or cls name
- clssuper - String, JS Super class name (extends property) or none
- deflat - Boolean, will call external deflatter to finalize property and method extraction during reconstruction phase
- polymaps - Object, initial polymorphic references
- reservedwordsmap - Object, default key names
- emptify - Boolean, empty Object/Array or null values in properties
return Function, factory/generator of XeltoSS class, a call is required to return class reference
toClsBlobScript(String clss, String prefix, String suffix) : HTMLElement
- clss* - String, script body converted to blob file with url
- prefix - String, surround prefix of script body
- suffix - String, surround suffix of script body
return HTMLElement, script tag with blob url to js file
toClsScript(String clss, String prefix, String suffix) : HTMLElement
- clss* - String, script body imported in tag directly
- prefix - String, surround prefix of script body
- suffix - String, surround suffix of script body
return HTMLElement, script tag with js body
reconstruct(Function cls, String clsname, String clssuper, Boolean deflat, Object polymaps, Object reservedwordsmap, Boolean emptify, Boolean useclsfactory) : Function
- cls* - Function, ProtoSS class, exchange in package default to XeltoSS
- clsname - String, JS Class name or cls name
- clssuper - String, JS Super class name (extends property) or none
- deflat - Boolean, will call external deflatter to finalize property and method extraction during reconstruction phase
- polymaps - Object, initial polymorphic references
- reservedwordsmap - Object, default key names
- emptify - Boolean, empty Object/Array or null values in properties
- useclsfactory - Boolean, use 'toClsFactory' instead of 'toClsScript'
return Function, XeltoSS class
autodestroy(Object obj) : Boolean
- obj - Object, if 'autoDestructor' will try 'destructorKeys' on obj to call destructor method
return Boolean, true=successful destroy
hybrid(Function escls, Function protcls, Object obj, Boolean swap, Object polymaps) : XeltoSS
- escls* - Function, JS Class, any class can be converted to XeltoSS Hybrid
- protcls* - Function, ProtoSS Class, any class can be converted to prototype class of the XeltoSS Hybrid
- obj* - Object, ProtoSS or JS Class instance, extracts super hierarchy
- swap - Boolean, exchange in package to XeltoSS Hybrid (JS+ProtoSS class)
- polymaps - Object, polymorphic references as usually constructed by 'toCls'
return XeltoSS, self
xeltoss(Function cls, String clsname, String clssuper, Boolean deflat, Object polymaps, Object reservedwordsmap, Boolean emptify, Boolean useclsfactory) : Function
- cls* - Function, ProtoSS class, exchange in package default to XeltoSS
- clsname - String, JS Class name or cls name
- clssuper - String, JS Super class name (extends property) or none
- deflat - Boolean, will call external deflatter to finalize property and method extraction during reconstruction phase
- polymaps - Object, initial polymorphic references
- reservedwordsmap - Object, default key names
- emptify - Boolean, empty Object/Array or null values in properties
- useclsfactory - Boolean, use 'toClsFactory' instead of 'toClsScript'
return Function, XeltoSS class
protoss(Function cls) : Function
- cls* - Function, XeltoSS class, exchange in package default to ProtoSS
return Function, ProtoSS class
_constructor() : void
return void, creates static instance
_destructor() : void
return void, cleans static instance
__InitXeltoSSPrototypes Boolean
default false, flag state of InitXeltoSSPrototypes
InitXeltoSSPrototypes(Boolean override) : XeltoSS
static method of XeltoSS Object
- override - Boolean, mark XeltoSS Prototype for overriding, will reinstall prototypes in effect
return XeltoSS, self XeltoSS class
superx(function_arguments|Array args, Array|Boolean cargs, String name) : Object
Object Prototype
- args* - function_arguments|Array, function arguments object if supported, or manually created Array [] with assigned 'callee' reference to the function class object
- cargs* - Array|Boolean, Array used to call 'apply' of the super constructor function, Boolean true will use arguments as call arguments (cargs=args)
- name - String, used to define the name of the constructor in the prototype, default __constructor
return Object, constructor function result or 'undefined' for duplicated super constructor (or no constructor)
getSuperx(Function fn, String name) : Array
Object Prototype
- fn - Function, if null will use this
- name - String, if null will use __constructor
return Array, of super constructor function or functions in XeltoSS mode (if super is aggregate will use __constructor_list)
ix(Function sfn, Function fn, String name) : Boolean
Object Prototype
- sfn* - Function, super XeltoSS function to check against
- fn - Function, if null will use this, to obtain all supers
- name - String, if null will use __constructor
return Boolean, true - if it exists in the inheritance tree or equals this constructor in XeltoSS mode, otherwise false
xcoped(Object scope) : Function
Function Prototype
- scope* - Object, usually 'this' in classes or original function owner
return Function, new function wrapper calling original using scope