[Cuis] Wrapper for file access in different Smalltalk dialects

Masashi UMEZAWA ume at blueplane.jp
Thu Aug 27 10:24:44 CDT 2015


Hi Juan,

How about adding #tryWriteStream and #tryWriteStreamIfError: for consistency.
Currently FmFileEntry has #writeStreamConfirming, but it is a bit
ad-hoc. It can be renamed to #tryWriteStream.

So we can write:

[ writeStream := 'foo.txt' asFileEntry tryWriteStream ] on:
FmFileIOAccessor fileExistsException do: [:ex | ].

writeStream := 'foo.txt' asFileEntry tryWriteStreamIfError: [:ex | ].

Best regards,

2015-08-24 22:42 GMT+09:00 Juan Vuletich <juan at jvuletich.org>:
> Hi Masashi,
>
> Ok. #tryReadStream is reasonable. Or maybe #readStreamOrFail.
>
> Any other suggestion? Preferences?
>
> Thanks,
> Juan Vuletich
>
>
> On 8/22/2015 10:15 AM, Masashi UMEZAWA wrote:
>>
>> Hi Juan,
>>
>> Yes, I'm concerning about backward-compatibility.
>> FmFileEntry>>#readStream has been used long. So I would prefer just
>> adding new APIs.
>>
>> Best regards,
>>
>>> 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
>>>>>>>>>
>>>>>>>>>
>>
>>
>



-- 
[:masashi | ^umezawa]




More information about the Cuis mailing list