[Seaside] some comments on the seaside port for dolphin

Martin Rubi mrubi at fibertel.com.ar
Wed Jun 14 19:06:02 UTC 2006


Hello everybody.
First of all, my apologies if some of the comments were reported already.
This week I started to play a little with the Seaside port for Dolphin, and a few comments came to mind:

1) When the current Seaside.pac is loaded, it creates a circular dependency between Seaside and Dolphin, making it impossible to save modifications or unload almost every package in the image. This is because the package loose methods are no loaded as such. I've made 2 small modifications to the class DolphinPackageExporter to (hopefully) solve this: 

---
DolphinPackageExporter>>fileOut
 self fileOutPackageInformation.
 self fileOutClassNames.
 self fileOutLooseMethodsNames. "added by me"
 self fileOutPrerequisites.
 super fileOut
---
DolphinPackageExporter>>fileOutLooseMethodsNames

 stream cr; cr; nextPutAll: 'package methodNames'.

 self sortedMethods 
  select: [:ref | ref category first = $*]
  thenDo: [:ref |
   stream 
    cr; 
    nextPutAll: 'add: ', 
       ref classSymbol printString, 
       ' -> ', 
       ref methodSymbol printString, 
       ';'].

 stream cr; nextPutAll: 'yourself.'.
---

2) I have also added the method
---
DolphinPackageExporter>>fileOutInitializerForClass: aClass
    "do nothing"
---

because the initialization was happening twice. This, however, does not happen in the current Seaside.pac available from the web, so maybe my Squeak image is a mess.

3) The package Seaside-Dolphin.pac contains the method
---
Symbol>>isUnary
^self argumentCount = 1
---
I think it should say
---
Symbol>>isUnary
^self argumentCount = 0
---

I saw a manifestation of this possible error when I tried to use scriptaculous in Dolphin.

4) While using scriptaculous, I detected what could be a possible semantic difference in the class MessageSend. For instance, in the method

SUAjax>>on: aSelector of: anObject
    self
      callback:
           (MessageSend
            receiver: anObject
            selector: aSelector)

aMessageSend is created, and then it's evaluated with 1 argument. However, Dolphin seems to need the MessageSend to be created with (at least) one argument in order to be correctly evaluated later, so I changed it to 

SUAjax>>on: aSelector of: anObject
    self
      callback:
           (MessageSend
            receiver: anObject
            selector: aSelector
            argument: nil)

This was only a problem for scriptaculous, I didn't see an error in Seaside due to this, but it seems to be something to be aware of.

5) Finally, I exported scriptaculous using the DolphinPackageExporter, and with minor (and trivial) fixes could make the examples work. I added a class 

ScriptaculousVWInfo subclass: #ScriptaculousDolphinInfo
 instanceVariableNames: ''
 classVariableNames: ''
 poolDictionaries: ''
 category: 'Scriptaculous-Platform'

which is pretty much c&p from SeasideDolphinInfo, beeing the #packageName the only modification I made. Although it worked, I guess my c&p is not the best approach, and perhaps there are details to be considered when writting such a class.

Well, that's all. Seaside and Scriptaculous looks like a lot of fun, by the way.

best regards
martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20060614/a6dae9dd/attachment.htm


More information about the Seaside mailing list