Probably because I am not using dots except at the end of blocks which I think is wrong.
This is a sample of what I had earlier:

currentCharacter = CHARACTERTABULATION  ifTrue: [anythingElseBoolean:= false

                AfterDOCTYPENameState value: currentCharacter ].

There should be a dot after false right ? Once I add the dot I get a complain.

 

From: pharo-users-bounces@lists.gforge.inria.fr [mailto:pharo-users-bounces@lists.gforge.inria.fr] On Behalf Of Esteban Lorenzano
Sent: Saturday, March 23, 2013 3:09 PM
To: A friendly place where any question about pharo is welcome
Subject: Re: [Pharo-users] Method Calling Inside Nested Blocks

 

if it is a method, it needs the receiver, in this case "self" (remember, any call in smalltalk is: receiver+message).

If for some weird reason you did not need it before (like some chained call effect), that was just by chance... you just were lucky before :)

 

Esteban

 

On Mar 23, 2013, at 1:58 PM, "Mohammad Al Houssami (Alumni)" <mha53@mail.aub.edu> wrote:



So the method declaration should be self afterDOCTYPEPublicKeywordState: currentCharacter. ?

 

But I have been doing the same for quite some time and I wasn’t getting any complains. This is the first time and the only thing that changed is that I have two blocks in this case. As I said earlier if I move the method call outside the block it works with no complains J

 

I'll change the names of all my methods to camel case. Thanks for that

 

 

From: pharo-users-bounces@lists.gforge.inria.fr [mailto:pharo-users-bounces@lists.gforge.inria.fr] On Behalf Of Esteban Lorenzano
Sent: Saturday, March 23, 2013 2:52 PM
To: A friendly place where any question about pharo is welcome
Subject: Re: [Pharo-users] Method Calling Inside Nested Blocks

 

 

On Mar 23, 2013, at 12:31 PM, "Mohammad Al Houssami (Alumni)" <mha53@mail.aub.edu> wrote:




Hello everyone

 

I was trying to save my method which has the below piece of code

 

anythingElseBoolean = false ifFalse: [

                doctypeString := reader next: 6

                doctypeString asLowercase =  'public'     ifTrue: [

                                AfterDOCTYPEPublicKeywordState value: currentCharacter

                                ]

 

I get a complain that the AfterDOCTYPEPublicKeywordState is unknown even though I have a method with this name. 

 

AfterDOCTYPEPublicKeywordState is a METHOD????

then, you are missing some points:

 

1) it does not conforms conventions (it should start with lowercase)

2) you need a self call

 

so, it would be like this:

 

self afterDOCTYPEPublicKeywordState value: currentCharacter. 

 

but that is also wrong from a design point of view (anti demeters law). So, you better create a (perhaps private) method who does the assignment. And then you have something like this:

 

self afterDOCTYPEPublicKeywordState: currentCharacter.

 

Esteban




If I move the method call outside outside the ifTrue block to the ifFalse block it doesn’t complain.

Is the problem because of nested blocks ? If that’s the case then what would be a good work around ?



 

Thanks

Mohammad