wk == new WK(p_modules, p_env_1,... p_env_m, p_sandbox, p_annotation_1, p_annotation_n) p_sandbox is optional in case of annotation "@synchronous" (siehe below) init() bei jeder Benutzung eines Modules aufrufen oder nur bei der ersten oder diese dem Benutzer freistellen? $C$: Spezialmodul (z.B. CONSTANTS.js) zum Initialisieren von $C$ mixin: "Filter-Funktion" (optional) Handle cyclic data that is to be mixed in. (Idea: Dictionary that contains every object that has already been mixed in.) $wk$.property: "overridable" muss bei mixin beachtet werden CSS/XML-Loader arguments: Parser to support more sophisticated argument passig: function xy() { $wk$.argumentParser (arguments, , function(p_a, p_b, ...) { ... p_a .... p_b ... } ) } Synchronous loading of javascript files (via eval)?? WKcSignal ========= new WKcSignal(p_type) -> { type: p_type } WKcAsync ======== Test it more extensively! Use the WKcAsync-pool instead of the WKcAsync-queue in wk.js. (Replace "push" by "add") Especially: Currently the ordering of loading WaitUntilDocumentReady, WaitUntilDocumentComplete has an inpact on the duration: // The WaitUntilDocumentReady function is performed, as soon as // the document is in ready state. $wk$(["WaitUntilDocumentReady"], function($){ console.log("DOCUMENT READY: " + (new Date().getTime()-l_ms)); }); $wk$(["WaitUntilDocumentComplete"], function($){ console.log("DOCUMENT COMPLETE: " + (new Date().getTime()-l_ms)); }); // The WaitUntilDocumentReady function is performed, after the // WaitUntilDocumentComplete function has been performed, i.e. // when the docuument has been loaded completely. $wk$(["WaitUntilDocumentComplete"], function($){ console.log("DOCUMENT COMPLETE: " + (new Date().getTime()-l_ms)); }); $wk$(["WaitUntilDocumentReady"], function($){ console.log("DOCUMENT READY: " + (new Date().getTime()-l_ms)); }); WKcClass ======== fullName-> name, classFullName -> className where possible??? If there is no init method, call the (parameterless) init method of the superclass automatically??? WKcClassSimple ============== Part of wk.js For Classes such as WKcAsync, WKcEnum, WKcVector etc. WKcClassSimple should be defined. WKcClass ======== constants : {} staticConstants: {} Im Falle von Annotationen: Überflüssig? Ja! private: { ... } Nur dann realisieren, wenn dies ohne großen Overhead geht. isSinglton: true/false Annotations/Aspect Oriented Programming: "@prop": "@abc" === "@prop": {"@abc": true} === "@prop": [{"@abc": true}] "@prop": {"@abc": true, "@def": {}, ...} -- ohne Ordnung "@prop": ["@abc", {"@abcd": true}, ...] Attribute/Methoden/Klassen (Klassen-Annotation: "@"): "@prop": "@constant" // Property ist eine Konstante "@prop": "@signal" = { "@signal": $E$.DATA_CHANGED } "@prop": { "@signal": $E$.... } "@prop": { "@precondition": function(){ this. ...} } "@prop": { "@postcondition": function(){ this. ...} } "@prop": { "@invariant": function(){ this. ...} } "@prop": { "@filter": function() {} } Methoden/Attribute werden nur ausgeführt, wenn Filter true als Ergebnis liefert. Ansonsten wird nur die Filterfuntion ausgeführt. "@prop": "@observer" als Ersatz für "observers/staticObservers" ? Classes: "@": "@autoNew" "@": "@CheckConstraints": Enable checking all Conditions and Invariants Sandbox: "@checkConstraints": Enable checking all Conditions and Invariants "@synchronous"/"@asynchronous": zumindest für JSON-Dateien; (synchrones Laden von Javascript: mit eval?) => Sandbox kann entfallen, da Environment-Objekte gefüllt werden. WKcClass should be implemented a bit more modularly (half-baked): var l_struct = [[{}, {}, {}], [{}, {}, {}], [{}, {}, {}]], OBJECT = 0, PROTOTYPE = 1, CLASS = 2 // p_type PROP = 0, METH = 1, FILTER = 2; // p_kind add (p_type, p_kind, p_name, p_fct||[p_getter, [p_setter]]) addAnno(p_type, p_kind, p_name, p_anno ("@..."), p_fct) ETC === Package complressor (node.js)