[squeak-dev] The Trunk: Collections-eem.460.mcz

Eliot Miranda eliot.miranda at gmail.com
Thu Sep 29 19:50:01 UTC 2011


Hi All,

   this quick hack (below) is perhaps wrong.  Perhaps we should simply
accept underscores in selectors period, and not query the preference.  If
so

Scanner prefAllowUnderscoreSelectors ifFalse:
[self class isBytes
ifTrue: [(self findSubstring: '~' in: self startingAt: 1 matchTable:
Tokenish) > 0 ifTrue: [^ -1]]
ifFalse: [2 to: self size do: [:i | (self at: i) tokenish ifFalse: [^
-1]]]].

should read

Scanner prefAllowUnderscoreSelectors ifFalse:
[2 to: self size do: [:i | ((self at: i) tokenish or: [(self at: i) == $_])
ifFalse: [^ -1]]].

Instead perhaps tokenish should be redefined to allow underscores?  I'd
appreciate input from those that have thought about this area carefully (I
have not).

On Thu, Sep 29, 2011 at 12:42 PM, <commits at source.squeak.org> wrote:

> Eliot Miranda uploaded a new version of Collections to project The Trunk:
> http://source.squeak.org/trunk/Collections-eem.460.mcz
>
> ==================== Summary ====================
>
> Name: Collections-eem.460
> Author: eem
> Time: 29 September 2011, 12:42:36.39 pm
> UUID: 0b90a58f-9354-4927-91f0-3432359541fe
> Ancestors: Collections-ul.459
>
> Fix String>numArgs for prefAllowUnderscoreSelectors regime.
>
> =============== Diff against Collections-ul.459 ===============
>
> Item was changed:
>  ----- Method: String>>numArgs (in category 'accessing') -----
>  numArgs
>        "Answer either the number of arguments that the receiver would take
> if considered a selector.  Answer -1 if it couldn't be a selector.  Note
> that currently this will answer -1 for anything begining with an uppercase
> letter even though the system will accept such symbols as selectors.  It is
> intended mostly for the assistance of spelling correction."
>
>        | firstChar numColons excess start ix |
>        self size = 0 ifTrue: [^ -1].
>        firstChar := self at: 1.
>        (firstChar isLetter or: [firstChar = $:]) ifTrue:
>                ["Fast reject if any chars are non-alphanumeric
>                NOTE: fast only for Byte things - Broken for Wide"
> +               Scanner prefAllowUnderscoreSelectors ifFalse:
> +                       [self class isBytes
> +                               ifTrue: [(self findSubstring: '~' in: self
> startingAt: 1 matchTable: Tokenish) > 0 ifTrue: [^ -1]]
> +                               ifFalse: [2 to: self size do: [:i | (self
> at: i) tokenish ifFalse: [^ -1]]]].
> -               self class isBytes
> -                       ifTrue: [(self findSubstring: '~' in: self
> startingAt: 1 matchTable: Tokenish) > 0 ifTrue: [^ -1]]
> -                       ifFalse: [2 to: self size do: [:i | (self at: i)
> tokenish ifFalse: [^ -1]]].
>                "Fast colon count"
>                numColons := 0.  start := 1.
>                [(ix := self indexOf: $: startingAt: start) > 0]
>                        whileTrue:
>                                [numColons := numColons + 1.
>                                start := ix + 1].
>                numColons = 0 ifTrue: [^ 0].
>                firstChar = $:
>                        ifTrue: [excess := 2 "Has an initial keyword, as
> #:if:then:else:"]
>                        ifFalse: [excess := 0].
>                self last = $:
>                        ifTrue: [^ numColons - excess]
>                        ifFalse: [^ numColons - excess - 1 "Has a final
> keywords as #nextPut::andCR"]].
>        firstChar isSpecial ifTrue:
>                [self size = 1 ifTrue: [^ 1].
>                2 to: self size do: [:i | (self at: i) isSpecial ifFalse: [^
> -1]].
>                ^ 1].
>        ^ -1.!
>
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20110929/d5d7d932/attachment.htm


More information about the Squeak-dev mailing list