[Cuis-dev] Bug or feature? #asInteger behaviour

Juan Vuletich juan at jvuletich.org
Wed Jan 6 07:13:34 PST 2021


Done. Also updated required packages in Cuis-Smalltalk github organization.

Folks, if your code fails, please change senders.

Thanks,

On 1/6/2021 11:48 AM, Hernan Wilkinson via Cuis-dev wrote:
> I think that renaming it to #findPositiveInteger is a good idea. Let's 
> go that way.
>
> Cheers!
> Hernan.
>
> On Wed, Jan 6, 2021 at 10:27 AM Juan Vuletich <juan at jvuletich.org 
> <mailto:juan at jvuletich.org>> wrote:
>
>     On 1/6/2021 9:44 AM, Hernan Wilkinson via Cuis-dev wrote:
>>     Definitely a bug.
>
>     I think whoever wrote that method was thinking #asPositiveInteger,
>     which might have been a better name. Besides, I think that
>     something like #findPositiveInteger would have been much better.
>
>>     Attached is a change set that fixes it with tests to verify the
>>     behavior of String>>asInteger
>>     I think we should think the behavior a little bit through... for
>>     example '---1' signals an error but '+++1' does not, or '.1'
>>     returns 1 but '0.1' returns 0...
>>      I thinks this are rare cases and the solution is not what we
>>     would expect.
>>
>>     Cheers!
>>     Hernan.
>
>     What about the below? It gives what I think are the correct
>     answers for '--1', '- 1', '---1' and '-+1'. To me, the correct
>     answer is "seach for the first well formed integer number,
>     ignoring all the rest'. It breaks your test, though.
>
>     Anyway, looking at what the comment says, I'm more convinced that
>     we'd leave as it was, but rename it as #findPositiveInteger.
>
>     asInteger
>         "Answer the Integer created by interpreting the receiver as
>     the string representation of an integer.  Answer nil if no digits,
>     else find the first digit and then all consecutive digits after that"
>
>         | startPosition tail endPosition answer |
>         startPosition _ self findFirst: [:ch | ch isDigit].
>         startPosition = 0 ifTrue: [^ nil].
>         tail _ self copyFrom: startPosition to: self size.
>         endPosition _ tail findFirst: [:ch | ch isDigit not].
>         endPosition _ endPosition = 0
>             ifFalse: [endPosition-1]
>             ifTrue: [tail size].
>         answer _ Number readFrom: (tail copyFrom: 1 to: endPosition)
>     readStream.
>         (startPosition > 1 and: [ (self at: startPosition-1) = $- ])
>             ifTrue: [ answer _ answer negated].
>         ^answer
>
>     "
>     '1796exportFixes-tkMX' asInteger
>     '1848recentLogFile-sw'  asInteger
>     'donald' asInteger
>     'abc234def567' asInteger
>     '-1' asInteger
>     '--1' asInteger
>     '---1' asInteger
>     "
>
>
>>     On Wed, Jan 6, 2021 at 6:27 AM Philip Bernhart via Cuis-dev
>>     <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
>>
>>         Hi,
>>
>>         I just noticed that #asInteger has an unexpected behaviour.
>>         That I thought is worth pointing out. Depending on what
>>         someone could interpret as an integer (all unsigned numbers or
>>         including negative numbers).
>>
>>         I found out while looking at some Pharo code that:
>>
>>         '-1' asInteger => -1 (in Pharo)
>>         '-1' asInteger => 1 (in Cuis)
>>
>>         'Mötör-45heäd' asInteger => -45 (in Pharo)
>>         'Mötör-45heäd' asInteger => 45 (in Cuis)
>>
>>         So the sign is lost.
>>
>>         Was this intentional? Bug or feature?
>>
>>
>>         Thanks,
>>         Philip
>>         -- 
>>         -- 
>>         Cuis-dev mailing list
>>         Cuis-dev at lists.cuis.st <mailto:Cuis-dev at lists.cuis.st>
>>         https://lists.cuis.st/mailman/listinfo/cuis-dev
>>
>>
>>
>>     -- 
>>     *Hernán Wilkinson
>>     Agile Software Development, Teaching & Coaching*
>>     *Phone: +54-011*-4893-2057
>>     *Twitter: @HernanWilkinson*
>>     *site: http://www.10Pines.com <http://www.10pines.com/>*
>>     Address: Alem 896, Floor 6, Buenos Aires, Argentina
>
>     Thanks,
>
>     -- 
>     Juan Vuletich
>     www.cuis-smalltalk.org  <http://www.cuis-smalltalk.org>
>     https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
>     https://github.com/jvuletich
>     https://www.linkedin.com/in/juan-vuletich-75611b3
>     @JuanVuletich
>
>
>
> -- 
> *Hernán Wilkinson
> Agile Software Development, Teaching & Coaching*
> *Phone: +54-011*-4893-2057
> *Twitter: @HernanWilkinson*
> *site: http://www.10Pines.com <http://www.10pines.com/>*
> Address: Alem 896, Floor 6, Buenos Aires, Argentina


-- 
Juan Vuletich
www.cuis-smalltalk.org
https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev
https://github.com/jvuletich
https://www.linkedin.com/in/juan-vuletich-75611b3
@JuanVuletich

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20210106/915e8cf9/attachment-0001.htm>


More information about the Cuis-dev mailing list