On Mar 24, 2013, at 8:56 PM, jannik.laval <jannik.la...@gmail.com> wrote:

> Hi Pharoers,
> 
> I am porting Scratch and BYOB on Pharo 2.0. The name of the project is 
> Phratch.
> To begin, I took Scat (a port of Scratch on Pharo1.3) and modify it to make 
> it work on Pharo 2.0. For that I integrated FileSystem.
> Then, I took BYOB and port it in the project.

Excellent!

> I have some bugs, but the main features are working.
> The main issue is that it is slow. I will investigate that too.
> 
> The goal for me is to use it for teaching software engineering and robotics.
> I hope to use Phratch and Pharo 2.0 to create new features.
> 
> The project is on SmalltalkHub, and a google code page is available, mainly 
> for reporting issues: https://code.google.com/p/phratch/
> 
> To download Phratch, just run this code:
> 
> Gofer it
>    url: 'http://smalltalkhub.com/mc/JLaval/Phratch/main';
>    package: 'ConfigurationOfPhratch';
>    load.
> (Smalltalk at: #ConfigurationOfPhratch) loadBleedingEdge.

I loaded it using the pharo20 one click. 
But it does not work. Apparently got blocked in WeakSet something. 
Loading NScratch….

I reloaded. And it seems ok.

How do we open Scratch?

Stef

Esteban it got blocked in this method.

initialize: aString
        "We fill RPackageSet with a collection of matching RPackage. 
         Since this is accessed a lot of times, we optimized the code for speed 
on resolution, and now 
        we have what you see.  
        This code should be something like this: 
        
        packageName := aString.
        packages := RPackageOrganizer default packages 
                select: [ :each | each name = packageName or: [ each name 
beginsWith: packageName, '-' ] ]
        
        sadly, that's incredible slow, so, we changed. 
        BEWARE: Don't change this code without paying attention to speed. 
        "
        | size separatorIndex first |
        
        self initialize.
                
        packageName := aString asSymbol.
        size := packageName size.
        first := packageName at: 1.
        separatorIndex := size + 1.
        packages := RPackage organizer packages 
                select: [ :each | | eachSize |
                        eachSize := each name size.
                        (size == eachSize and: [ packageName == each name ]) 
                                or: [ 
                                        eachSize > size 
                                                and: [ 
                                                        (((each name at: 
separatorIndex) == $-)
                                                        and: [ (each name at: 
1) == first ])                                                    
                                                        and: [ (each name 
beginsWith: packageName) ] ] ] ]


Reply via email to