Hi Eliot. The recursive mode is per pattern variable. It can be done globally of course in a way you suggested. But I do not see much value from this.
Do you have an example where we don't want the non recursive search? ср, 4 февр. 2026 г., 01:16 Eliot Miranda <[email protected]>: > Hi Denis, > > could you support single & double ticks/non-recursive & recursive > modes by providing eg shallowBpattern and bpattern? > > > Also why bpattern and not bPattern or rewritePattern? > _,,,^..^,,,_ (phone) > > On Feb 3, 2026, at 10:41 AM, Denis Kudriashov <[email protected]> > wrote: > > > Hi Richard. > > I checked the code and the double backticks are for the recursion mode. It > forces the search to dive into the current matching node to find more cases > inside it. > For example: > > (instVar isNil ifTrue: [ 'inside recursion' ]) isNil ifTrue: [ 'outer > node' ] > > The syntax with single backtick will not find the internal "instVar isNil" > expression. > > In BPatterns the recursion mode is enabled by default for the pattern > variables. So the default mode covers the maximum scope for a search. > Currently you can't not disable the #recurseInto flag as there is not > suitable accessor for this. But if it would be there the pattern would like: > > [ anyVar isNil ifTrue: anyBlock ] bpattern with: [ anyVar ] -> [:pattern | > pattern recurseInto: false ] > > > Anyway I adjusted my blog accordingly. Thanks for the attention. > > вт, 3 февр. 2026 г. в 10:47, Richard O'Keefe <[email protected]>: > >> Thank you. One of the reasons given for introducing BPatterns is a >> subtle difference between >> single backticks and double backticks, which is mentioned but not >> explained in the BPatterns >> blog entry. The help screen you directed me to does not explain that. >> >> Is there any documentation which is *complete* and *proofread*? >> >> On Tue, 3 Feb 2026 at 23:16, Denis Kudriashov <[email protected]> >> wrote: >> >>> Yes. There is nice help presenter in the Pharo: >>> >>> StRewriterHelpBrowserPresenter new open >>> >>> >>> <Screenshot 2026-02-03 at 10.15.45.png> >>> >>> >>> >>> вт, 3 февр. 2026 г. в 01:36, Richard O'Keefe <[email protected]>: >>> >>>> Is the "classic" rewriting syntax documented anywhere? >>>> >>>> On Mon, 2 Feb 2026 at 22:52, Denis Kudriashov via Pharo-users < >>>> [email protected]> wrote: >>>> >>>>> Hi all. >>>>> >>>>> This is the release of *BPatterns* project, one of my old ideas on >>>>> how to make the rewrite engine usable for scripting. >>>>> >>>>> As a quick reminder, here is an example of the classic rewrite-engine >>>>> matching syntax: >>>>> >>>>> *``@receiver isNil ifTrue: ``@nilBlock* >>>>> >>>>> >>>>> In practice, patterns like this usually live inside string >>>>> literals—hidden away in lint rules, deprecations, or refactorings. >>>>> To use them for *manual* code search or rewriting, you typically need >>>>> a dedicated tool. >>>>> >>>>> Now compare that with the same pattern expressed as a *BPattern*: >>>>> >>>>> *[ any isNil ifTrue: anyBlock ] bpattern* >>>>> >>>>> No special syntax. >>>>> No magical tools. >>>>> Just pure Smalltalk. >>>>> >>>>> You write a block. >>>>> You send #bpattern. >>>>> You’re done. >>>>> >>>>> Every editor understands it. >>>>> Every tool respects it. >>>>> >>>>> Want to see where this pattern appears? >>>>> >>>>> * [ any isNil ifTrue: anyBlock ] bpattern browseUsers* >>>>> >>>>> >>>>> <Screenshot 2026-01-31 at 12.16.19.png> >>>>> >>>>> >>>>> Want to rewrite all of them? >>>>> >>>>> *[[ any isNil ifTrue: anyBlock ] -> [ any ifNil: anyBlock ]] brewrite >>>>> preview* >>>>> >>>>> >>>>> <Screenshot 2026-01-31 at 12.17.57.png> >>>>> >>>>> Because *BPatterns are real Smalltalk code*, all development tools >>>>> work out of the box: >>>>> syntax highlighting, completion, navigation, refactorings. >>>>> >>>>> This is the rewrite engine treated as a *first-class citizen*. >>>>> >>>>> Not strings. >>>>> Not tooling sidecars. >>>>> Not just for advanced users. >>>>> >>>>> *A rewrite engine you can actually use.* >>>>> * A rewrite engine at your fingertips.* >>>>> More details are in the blog post: >>>>> >>>>> - >>>>> >>>>> https://dionisiydk.blogspot.com/2026/02/bpatterns-rewrite-engine-with-smalltalk.html >>>>> >>>>> And follow the project on GitHub: >>>>> >>>>> - https://github.com/dionisiydk/BPatterns >>>>> >>>>> >>>>> - >>>>> >>>>>
