[squeak-dev] Reusable browsers was Re: About HyperCard

Bob Arning arning315 at comcast.net
Fri Mar 1 21:09:25 UTC 2013


You could just add another tweak:

findSelector
     "Dan's code for hunting down selectors with keyword parts; while 
this doesn't give a true parse, in most cases it does what we want, in 
where it doesn't, we're none the worse for it."
     | sel possibleParens |
     sel := self withBlanksTrimmed.
     (sel includes: $:) ifTrue:
         [sel := sel copyReplaceAll: ':' with: ': '.    "for the style 
(aa max:bb) with no space"
         sel := sel copyReplaceAll: '[:' with: '[ :'.    "for the style 
([:a) with no space" "<<<<<<<======="
         possibleParens := sel findTokens: Character separators.
         sel := self class streamContents:
             [:s | | level |
              level := 0.
             possibleParens do:
                 [:token | | n |
                 (level = 0 and: [token endsWith: ':'])
                     ifTrue: [s nextPutAll: token]
                     ifFalse: [(n := token occurrencesOf: $( ) > 0 
ifTrue: [level := level + n].
                             (n := token occurrencesOf: $[ ) > 0 ifTrue: 
[level := level + n].
                             (n := token occurrencesOf: $] ) > 0 ifTrue: 
[level := level - n].
                             (n := token occurrencesOf: $) ) > 0 ifTrue: 
[level := level - n]]]]].

     sel isEmpty ifTrue: [^ nil].
     sel isOctetString ifTrue: [sel := sel asOctetString].
     Symbol hasInterned: sel ifTrue:
         [:aSymbol | ^ aSymbol].
     ^ nil

On 3/1/13 3:31 PM, Bert Freudenberg wrote:
> On 2013-03-01, at 21:18, Chris Muller <asqueaker at gmail.com> wrote:
>
>>>>> That bit? The selecting of a bunch of text around a keyword message?
>>>>> That impressed me no end. It _rocks_.
>>>> Oh I know, and I think Dan Ingalls is the one who originally
>>>> implemented it over a decade ago!
>>> It's great indeed. Would be even more awesome if someone could make it ignore block arguments ...
>> The selection spanning block args is not the problem, its when it
>> spans a keyword selector symbol.
> Try this:
>
> 	self do: [:i | ] separatedBy: []
>
> If you remove the ":i" it works.
>
> - Bert -
>
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130301/6d0398e6/attachment.htm


More information about the Squeak-dev mailing list