hi all.
I'm currently writing an article about the crawling the aculo.us
codes, especially about effects.js.
I wonder why the following codes of Effect.Base needs a dynamic
evaluation.
function codeForEvent(options,eventName){
return (
(options[eventName+'Internal'] ? 'this.options.'+eventName
+'Internal(this);' : '') +
(options[eventName] ? 'this.options.'+eventName+'(this);' : '')
);
}
eval('this.render = function(pos){ '+
'if (this.state=="idle"){this.state="running";'+
codeForEvent(this.options,'beforeSetup')+
(this.setup ? 'this.setup();':'')+
codeForEvent(this.options,'afterSetup')+
'};if (this.state=="running"){'+
'pos=this.options.transition(pos)*'+this.fromToDelta
+'+'+this.options.from+';'+
'this.position=pos;'+
codeForEvent(this.options,'beforeUpdate')+
(this.update ? 'this.update(pos);':'')+
codeForEvent(this.options,'afterUpdate')+
'}}');
Why it can't be replaced to the followings? I saw that unit and
functinal tests are the all-green.
this.render = function(pos){
if (this.state=="idle"){
this.state="running";
this.event('beforeSetup');
if (this.setup) this.setup();
this.event('afterSetup');
};
if (this.state=="running"){
pos=this.options.transition(pos)* this.fromToDelta +
this.options.from;
this.position=pos;
this.event('beforeUpdate');
if (this.update) this.update(pos);
this.event('afterUpdate');
}
};
The codeForEvent and eval was firstly introduced at rev 6236.
http://dev.rubyonrails.org/changeset/6236/spinoffs/scriptaculous/src/effects.js
Its log message is "Various effects engine optimizations", but it is
not clear why this eval was used.
Any help will be appreciated.
Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---