Permalink
Fetching contributors…
Cannot retrieve contributors at this time
113 lines (70 sloc) 2.79 KB
REFACTORING
============
TODO
====
- rename `disableCaching` to `suppressCaching`
- (!) CSS loading (including grouped mode)
- improve versioning and authority support and test coverage
- Adapt grouped dependencies loading mode
- refactor to allow dependencies from classes with Joose.Proto/Managed level
implemented, needs test coverage
- allow circular dependencies, assuming the class declaration order is not significant..
DONE
====
- fix some failures with ScriptTag materialization under FF (still actual?)
- create an "All" bundle that will auto-configurate, depending from the environment (browser/nodejs)
this should remove many Web*, NodeJS* bundles during testing
- merge "non-joose" into "joose" and make a single resource class "code", representing JS code
- merge "exturl" and "inturl" into single "url" resource (resource locator?)
- call arbitrary function as dependency source (should return descriptors)
partially implemented
- implement common mechanism for collecting stringified dependencies and replacing them with real classes
- add standard resolving capabilities (still remains in test harness, as its very Test.Run specific)
- inlining dependencies should also be able to call function (analog of FutureClass)
- add Joose.I.FutureClass helper Joose.I.FutureClass = function (class) { return function () { return eval(class) } }
- Change loading of GMap engine to something else, more predictable and w/o errors
- fix double BEGIN invoking
- fix namespace managers executeIn to omit the args?
- be able to load the 'meta' class
- (?) class should depend from its 'my' class
- switch materialiaztion (handleDependencies) interface to async? (to execute a whole source file with several classes before fireing 'ready' listeners)
Module('Some.Module', {
VERSION : 0.01,
use : {
'Some.Another.Module' : 0.01,
'Yet.Another.Module' : 0.03
},
EXPORT : [ 'func1', 'func2' ],
EXPORT_OK : [ 'func3', 'func4' ],
EXPORT_TAGS : {
':ALL' : [ 'func1', 'func2', 'func3', 'func4' ],
':SPECIAL' : [ 'func3', 'func4' ]
},
body : function (our) {
//our == this == Some.Module here
our.func1 = function () {
}
our.func2 = function () {
}
// valid in Joose3
Class('Some.Module', {
methods : {
someMethod : function (p) {
return our.func1(p)
}
}
})
}})
for pure OOP module, which do not export anything its simplified to:
Class('Some.Module', {
VERSION : 0.01,
use : {
'Some.Another.Module' : 0.01,
'Yet.Another.Module' : 0.03
},
methods : {
someMethod : function (p) {
...
}
}
})