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