>
>
>
> Pharo 4.0 as well. I made a mistake in my example :(, so I'm adding more
> test cases to check ;).
>
> | tree |
> RBParseTreeRewriter new
> replace: '``@object `oldSelector `{:node | node selector asString
> matchesRegex: ''.*oldSelector.*''}'
> with: '`{RBMessageNode receiver: ``@object selector: (`oldSelector
> copyReplaceAll: ''oldSelector'' with: ''newSelector'') asSymbol arguments:
> #()}';
> executeTree:
> (tree := RBParser
> parseMethod:
> 'DoIt ^ [:proxy |
> proxy at: #oldSelector.
> proxy preoldSelector.
> self preoldSelector oldSelectorPost.
> proxy preoldSelector: proxy.
> proxy oldSelectorAnotherMethod.
> proxy do: ''oldSelectorAndSomething''.
> "a comment with #oldSelector  "
> ]').
> tree newSource.
>
>

Thanks, that worked much better!

Here you have a much larger example/test:

| rewriter tree oldSeletor newSelector |
"closure method sourceCode"
tree := RBParser parseMethod: 'DoIt ^ [:proxy |
| oldSelector oldSelectorsuffix prefixoldSelector prefixoldSelectorSuffix |
oldSelector := 1.
oldSelectorsuffix := 1.
prefixoldSelector := 1.
prefixoldSelectorSuffix := 1.
proxy at: #oldSelector.
proxy at: #oldSelectorSuffix.
proxy at: #prefixoldSelector.
proxy at: #prefixoldSelectorSuffix.
proxy oldSelector.
proxy oldSelectorSuffix.
proxy prefixoldSelector.
proxy prefixoldSelectorSuffix.
proxy do: ''oldSelector''.
proxy do: ''oldSelectorSuffix''.
proxy do: ''prefixoldSelector''.
proxy do: ''prefixoldSelectorSuffix''.
"a comment with #oldSelector  "
"a comment with #oldSelectorSuffix  "
"a comment with #prefixoldSelector  "
"a comment with #prefixoldSelectorSuffix  "
]'.
oldSeletor := #oldSelector.
newSelector := #newSelector.

rewriter := RBParseTreeRewriter new
replace: '``@object `oldSelector `{:node | node selector asString
matchesRegex: ''.*oldSelector.*''}'
with: '`{RBMessageNode receiver: ``@object selector: (`oldSelector
copyReplaceAll: ''oldSelector'' with: ''newSelector'') asSymbol arguments:
#()}'.

rewriter executeTree: tree.
tree  newSource


I think I only miss the literal ones (for example  proxy at: #oldSelector
and the rest) which previously were catched by " RBParseTreeRewriter
replaceLiteral: oldSeletor with: newSelector. "

I guess I can apply a similar logic for with the regex. I will see if I can
came up with that. If you happen to know how ;););)

Yes, I will go to Smalltalks and I will give a talk. So I will ask him if
there are remaining questions!
BTW, later on today I will send you an screenshot to show you where you
helped me :)

Thanks!!!

-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to