From: Jordi 'I. M. <jmi...@or...> - 2000-10-31 09:13:24
|
What is trying to do is, given that the toString method of a function return its source code, is to add lines just after "function() {" and before the source, and then eval the new function. So the function passed as parameter is rewriten. This way we can have clean widget constructors and automatically add all the initializations code that make a widget a widget. If this code is to be changed we don't have to bother editing th widget sources because that inheriting code is added by the API and not hard-coded into each constructor. The idea is turn method to string, split into to strings: until { and after }, insert our code between them and eval everything. Robert Rainwater wrote: > I'm not quite sure I follow your DynAPI.makeWidget. Could you explain > that in a little more detail. I don't understand what makeWidget is > trying to do there. > > Robert > > -- > Email: <mailto:rra...@ya...> > PGP Key ID: 0x703D7F7C > > > I've been thinking about this for some tome now and our main problem here is > > having all our widgets to share the DynLayer functionalities without sharing any > > properties. We need some sort of initialization code such as: > > > > myWidget = function() { > > // Init code > > > > // Assign id > > this.id = ... > > > > // Widget stuff starts here > > > > } > > > > // Maybe not anymore > > myWidget.prototype > > > > > > However hard-coding it into all our widgets is a pain and when we need to change > > something then we have to edit all of your widgets and we force people to > > 'remember' whet has to be placed at the beggining of each constructor. I thing > > this can be solved by having this method (this is the idea, I haven't been able > > to code it) > > > > DynAPI.makeWidget = function(constructor) { > > var code = window[constructor].toString() > > // now we have the code > > var header = code.substring(0,code.indexOf("{")) > > var rest = code.substring(code.indexOf("{")) > > var newcode = header + have all the common init stuff in a String here + rest > > eval(constructor+" = "+newcode) > > > > // If needed attach prototying, assign variables, etc. > > } > > > > > > This way your widget code should be independent of the inheritance method > > adopted. This I presume, I haven't tested. Tell me what you think > > > > _______________________________________________ > Dynapi-Dev mailing list > Dyn...@li... > http://lists.sourceforge.net/mailman/listinfo/dynapi-dev |