[Cuis] Wrapper for file access in different Smalltalk dialects

Juan Vuletich juan at jvuletich.org
Thu Aug 20 09:01:40 CDT 2015


Hi Masashi,

> Hi all,
>
> Sorry for the late reply. I've missed the mail...
>
> As I recall, I have deliberately selected not using Exceptions mainly
> for portability.
>
> Actually there are various non-existent-file exceptions -
> FileDoesNotExist (Squeak), FileDoesNotExistException (Pharo),
> OSErrorHolder nonexistentSignal (VW).
>
> Originally old FileMan did not have exception wrappers, but it has
> now. So I think it is a good time to introduce exception-aware APIs.
>
> How about adding tryReadStream series?
>
> [ readStream := 'foo.txt' asFileEntry tryReadStream ] on:
> FmFileIOAccessor fileDoesNotExistException do: [:ex | ].
>
> readStream := 'foo.txt' asFileEntry tryReadStreamIfError: [:ex | ].
>
> Best regards,

Thanks for your support.

I guess I would prefer #readStream for the basic, raising exceptions 
api, and maybe #readStreamNoFail or #readStreamOrEmpty or such for the 
"exception eating api" . In any case it is your call, I understand there 
is back compatibility to care about, and I'll be happy with your choice.

Cheers,
Juan Vuletich

> 2015-07-27 23:58 GMT+09:00 Juan Vuletich<juan at jvuletich.org>:
>> Hi Masashi,
>>
>> Recently we found that in FileMan, if we do
>>
>> 'inexistentFile' asFileEntry readStream
>>
>> we get an empty readStream.
>>
>> I think it is better to throw the #fileDoesNotExistException , as
>> FileDirectory did, and let the user handle the exception appropriately. But
>> I would not want to break compatibility with FileMan, as the main purpose of
>> FileMan is to give compatibility amongst dialects.
>>
>> Are there good reasons to avoid the exception? Should we add another method,
>> besides #readStream when we want a readStream strictly on existing file
>> contents?
>>
>> Thanks,
>> Juan Vuletich
>>
>>
>>
>> On 6/14/2015 8:38 AM, Masashi UMEZAWA wrote:
>>> Hello Juan,
>>>
>>> Thank you for the patches and more tests! I'll adapt those updates for
>>> other FileMan ports.
>>>
>>> Best regards,
>>>
>>> 2015-06-07 12:42 GMT+09:00 Juan Vuletich<juan at jvuletich.org>:
>>>> Hi Masashi,
>>>>
>>>> I was trying FileMan tests today and I saw they create some folders in my
>>>> drive. The names looked a bit strange, so I took a closer look and found
>>>> a
>>>> couple of bugs. At least on Windows, #testRecursiveDelete instead of
>>>> creating
>>>>         subDir/aaa/bbb/ccc/ddd/eee/fff/ggg/test1
>>>> it created
>>>>          subDir/bbb/ccc/eee/ggg/test!
>>>>
>>>> So I wrote a few more tests on the issues I saw, and teaked the code to
>>>> make
>>>> them pass. The result is attached, and I think is useful for all ports of
>>>> FileMan.
>>>>
>>>> Thanks,
>>>> Juan Vuletich
>>>>
>>>> On 5/26/2015 11:34 PM, Masashi UMEZAWA wrote:
>>>>> Hi all,
>>>>>
>>>>> I think it is nice if FileMan is on the core package repository.
>>>>>
>>>>> FileMan for Cuis (and Squeak) has minimum dependencies to the existing
>>>>> FileDirectory and DirectoryEntry. FileMan selectively uses a few
>>>>> methods of them.
>>>>>
>>>>> So we can gradually adopt FileMan interfaces and trim the
>>>>> FileDirectory and DirectoryEntry's non-intuitive methods.
>>>>>
>>>>> Another way of cleaning-up the file-related classes is to port
>>>>> FileSystems to Cuis.
>>>>> But since Cuis is a lightweight Smalltalk dialect, FileSystems might
>>>>> be an overkill.
>>>>>
>>>>> Best regards,
>>>>>
>>>>> 2015-05-19 9:42 GMT+09:00 Juan Vuletich<juan at jvuletich.org>:
>>>>>> Hi Folks,
>>>>>>
>>>>>> I apologize for talking before taking even a quick look, but anyway,
>>>>>> We'd
>>>>>> take a good look at this. And seriously consider replacing files stuff
>>>>>> in
>>>>>> Cuis base. Or at least adopting it as a core package in our repo.
>>>>>>
>>>>>> Thoughts?
>>>>>>
>>>>>> Masashi-san: opinions?
>>>>>>
>>>>>> Thanks,
>>>>>> Juan Vuletich
>>>>>>
>>>>>>
>>>>>> On 5/17/2015 12:07 PM, H. Hirzel wrote:
>>>>>>> Below are the comments from the FileMan package.
>>>>>>>
>>>>>>> Question: How do you compare the FileMan package to the FileSystem
>>>>>>> package in Pharo?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> https://github.com/mumez/Cuis-Smalltalk-FileMan/blob/master/FileMan-Core.pck.st#L45
>>>>>>> I represent a single file entry (including directory).
>>>>>>> You can write data by #fileContents: , and read the data by
>>>>>>> #fileContents.
>>>>>>> ---
>>>>>>> mu 11/6/2006 20:21!
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> https://github.com/mumez/Cuis-Smalltalk-FileMan/blob/master/FileMan-Core.pck.st#L53
>>>>>>> I represent a single file directory.
>>>>>>> I implement various directory specific behaviors.
>>>>>>> You can write data by #at:put: , and read the data by #at:.
>>>>>>> ---
>>>>>>> mu 11/6/2006 20:21
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> https://github.com/mumez/Cuis-Smalltalk-FileMan/blob/master/FileMan-Core.pck.st#L63
>>>>>>> !FmFileIOAccessor commentStamp: '<historical>' prior: 0!
>>>>>>> I am an accessor to the low level file IO.
>>>>>>> You can extend/rewrite me if you port FileMan to other Smalltalk
>>>>>>> dialects.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> https://github.com/mumez/Cuis-Smalltalk-FileMan/blob/master/FileMan-Example.pck.st#L44
>>>>>>> !FmBackupDirectoryEntry commentStamp: 'mu 5/4/2007 23:26' prior: 0!
>>>>>>> This is a simple example for adding special behaviors to
>>>>>>> FmDirectoryEntry.
>>>>>>> I backup file contents automatically, while users are not conscious
>>>>>>> about
>>>>>>> that.
>>>>>>> Usage:
>>>>>>> dir := './withBackup' asDirectoryEntry: FmBackupDirectoryEntry.
>>>>>>> dir at: 'text' put: 'abc'.
>>>>>>> dir at: 'text' put: 'def'.
>>>>>>> (dir at: 'text') inspect. "def"
>>>>>>> (dir backupAt: 'text') inspect. "abc"
>>>>>>> ((dir / 'sub') at: 'text2' put: '123').
>>>>>>> ((dir / 'sub') at: 'text2' put: '456').
>>>>>>> ((dir / 'sub') at: 'text2') inspect. "456"
>>>>>>> ((dir / 'sub') backupAt: 'text2') inspect. "123"
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> https://github.com/mumez/Cuis-Smalltalk-FileMan/blob/master/FileMan-Example.pck.st#L63
>>>>>>> This is a simple example for adding special behaviors to
>>>>>>> FmDirectoryEntry.
>>>>>>> I put and get file contents as gzipped, while users are not conscious
>>>>>>> about that.
>>>>>>> Usage:
>>>>>>> | dir |
>>>>>>> dir := './gzipped2' asDirectoryEntry: FmGZipDirectoryEntry.
>>>>>>> dir binaryAt: 'bin' put: #(1 2 3 12 34 56) asByteArray.
>>>>>>> (dir binaryAt: 'bin') inspect.
>>>>>>> dir at: 'text' put: 'This will be gzipped'.
>>>>>>> (dir at: 'text') inspect.
>>>>>>> I would be useful for storing/loading big contents in a simple
>>>>>>> dictionary-like manner.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 5/17/15, H. Hirzel<hannes.hirzel at gmail.com>     wrote:
>>>>>>>> Hello Masashi-san
>>>>>>>>
>>>>>>>> I'd like to come back to your FileMan package
>>>>>>>>
>>>>>>>> https://github.com/mumez/Cuis-Smalltalk-FileMan
>>>>>>>>
>>>>>>>> and ask a question.
>>>>>>>>
>>>>>>>> Is this package a port from somewhere or did you write it from
>>>>>>>> scratch?
>>>>>>>>
>>>>>>>> Some background information is appreciated.
>>>>>>>>
>>>>>>>> There is no description
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> https://github.com/mumez/Cuis-Smalltalk-FileMan/blob/master/FileMan-Example.pck.st#L2
>>>>>>>>
>>>>>>>> Thank you in advance
>>>>>>>>
>>>>>>>> Hannes Hirzel
>>>>>>>>
>>>>>>>>
>>>>>>>> On 5/2/14, Masashi UMEZAWA<ume at blueplane.jp>     wrote:
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> Thank you for the kind words. I've just started Cuis on March, and I
>>>>>>>>> was impressed with its cleanness, simplicity, etc.
>>>>>>>>> So I did a introductory presentation at Tokyo Smalltalkers meeting.
>>>>>>>>> It
>>>>>>>>> was successful.
>>>>>>>>> Now I'm planning to port Folktale (telnet-base object shell), and
>>>>>>>>> SIXX
>>>>>>>>> to Cuis. My pace maybe slow, but please stay tuned. ;)
>>>>>>>>>
>>>>>>>>> Best regards,
>>>>>>>>>
>>>>>>>>> 2014-05-02 1:05 GMT+09:00 Germán Arduino<garduino at gmail.com>:
>>>>>>>>>> Wow, I was completely unaware of Masashi working in Cuis! Welcome
>>>>>>>>>> aboard!!
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> 2014-05-01 12:19 GMT-03:00 H. Hirzel<hannes.hirzel at gmail.com>:
>>>>>>>>>>
>>>>>>>>>>> Thank you for the link to  Masashi Umezawa's presentation.
>>>>>>>>>>>
>>>>>>>>>>> It is from 2014 and talks about
>>>>>>>>>>>
>>>>>>>>>>> - the number of classes compared to Squeak and Pharo
>>>>>>>>>>> - the size of Morphic -- Morph allSelectors size "=>     502"
>>>>>>>>>>> - something I do not fully get about instance variables
>>>>>>>>>>>          'bounds owner submorphs fullBounds color extension'
>>>>>>>>>>>          versus
>>>>>>>>>>>         'owner submorphs location layoutNeeded layoutSpec
>>>>>>>>>>> properties'
>>>>>>>>>>> - layoutSpec
>>>>>>>>>>> - PackageInfo
>>>>>>>>>>> - version control with git
>>>>>>>>>>> - Feature require: '<PackageName>'.
>>>>>>>>>>> - your Unicode package
>>>>>>>>>>> https://github.com/KenDickey/Cuis-Smalltalk-Unicode
>>>>>>>>>>> -
>>>>>>>>>>> https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-StyledTextEditor
>>>>>>>>>>> - How to query for other Cuis-Smalltalk repositories
>>>>>>>>>>>                  https://github.com/search?q=cuis-smalltalk
>>>>>>>>>>>
>>>>>>>>>>> All things which we will include Cuis documentation effort.
>>>>>>>>>>>
>>>>>>>>>>> --Hannes
>>>>>>>>>>>
>>>>>>>>>>> On 5/1/14, Ken Dickey<Ken.Dickey at whidbey.com>     wrote:
>>>>>>>>>>>> On Thu, 1 May 2014 07:28:54 +0000
>>>>>>>>>>>> "H. Hirzel"<hannes.hirzel at gmail.com>     wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> A noteworthy effort
>>>>>>>>>>>>>
>>>>>>>>>>>>>           https://github.com/mumez/Cuis-Smalltalk-FileMan
>>>>>>>>>>>> Yes.  Masashi Umezawa is the man in Japan!
>>>>>>>>>>>>
>>>>>>>>>>>> He should introduce himself.
>>>>>>>>>>>>
>>>>>>>>>>>> He gave a talk about Cuis at the 63rd Smalltalkers' meeting in
>>>>>>>>>>>> Tokyo:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> http://www.smalltalk-users.jp/Home/gao-zhi/dai63kaismalltalkbenkyoukai/shiryou
>>>>>>>>>>>>
>>>>>>>>>>>> Masashi has ported several packages to CUis.
>>>>>>>>>>>>
>>>>>>>>>>>> Because of Unicode interest, I was made aware that recent font
>>>>>>>>>>>> tweaks
>>>>>>>>>>>> have
>>>>>>>>>>>> broken my Unicode package in the latest Cuis versions.
>>>>>>>>>>>>
>>>>>>>>>>>> Masashi-san, would you care to tell us about yourself and what
>>>>>>>>>>>> people
>>>>>>>>>>>> there
>>>>>>>>>>>> think about Cuis?
>>>>>>>>>>>>
>>>>>>>>>>>> -KenD
>>>>>>> _______________________________________________
>>>>>>> Cuis mailing list
>>>>>>> Cuis at jvuletich.org
>>>>>>> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org
>>>>>>
>>>





More information about the Cuis mailing list