Yes you need it because when doing code generation you cannot always assume target class is present. Besides using RB you can confirm through the NautilusRefactoring which is useful for massive changes: | model | model := RBNamespace new. (model classNamed: #Model) compile: 'asString ^ String empty' classified: #(accessing). (ChangesBrowser changes: model changes changes) openWithSpec Cheers, Hernán 2014-07-17 13:55 GMT-03:00 Esteban Lorenzano <estebanlm@gmail.com>:
Hi,
you do not need the RBNamespace mediation, just do:
Model compile: âmethod ...â classified: âaccessingâ.
Esteban
On 17 Jul 2014, at 18:52, Mark Rizun <mrizun@gmail.com> wrote:
Thanks Hernan 17 лип. 2014 18:29, коÑиÑÑÑÐ²Ð°Ñ "Hernán Morales Durand" < hernan.morales@gmail.com> напиÑав:
No. Adding a method is not a refactoring. You should use RBAddMethodChange:
| model | model := RBNamespace new. (model classNamed: #Model) compile: 'asString ^ String empty' classified: #(accessing). model changes execute.
and the new method is recorded in the .changes file
Cheers,
Hernán
2014-07-17 11:08 GMT-03:00 Mark Rizun <mrizun@gmail.com>:
Thank you all. Problem is solved, I just used RBAddMethodRefactoring.
Mark
2014-07-17 16:07 GMT+02:00 Baptiste Quide <baptiste.quide@inria.fr>:
I think you have to add a "RGMethodDefinition" or a "CompiledMethod".
Obviously in a class methodDict the values are CompiledMethod.
Regards,
------------------------------
*De: *"Sebastian Tleye" <stleye@gmail.com> *Ã: *"Any question about pharo is welcome" <pharo-users@lists.pharo.org
*Envoyé: *Jeudi 17 Juillet 2014 16:03:52 *Objet: *Re: [Pharo-users] Adding method to class
I don't know what RBMethod is, but you can do
aClass compile: source.
For example:
Array compile: 'newMethod ^ 1'
I don't know if it answers your question.
Regards
2014-07-17 15:57 GMT+02:00 Mark Rizun <mrizun@gmail.com>:
P.S. obviously, my method is added to newMethods var, but it is not disblayed in my class.
2014-07-17 15:53 GMT+02:00 Mark Rizun <mrizun@gmail.com>:
Hi guys!
How can I add method (I have /RBMethod/) to a class in code? I'm asking because existing method /addMethod:/ in /RBAbstractClass/ isn't working. Here is a piece of my code:
/method:= RBMethod for: class source: ('^ ', newName asString) selector: newName asSymbol. class addMethod: getter./
Best Mark
-- View this message in context: http://forum.world.st/Adding-method-to-class-tp4768282.html Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.