[Cuis] Wrapper for file access in different Smalltalk dialects

Juan Vuletich juan at jvuletich.org
Mon Aug 31 08:20:06 CDT 2015


Hi Masashi,

Looks great to me. Please let us know when you update 
https://github.com/mumez/FileMan (or 
https://github.com/mumez/Cuis-Smalltalk-FileMan ), so we follow. Or post 
code to the mail list. As you prefer.

Thanks!
Juan Vuletich

On 8/27/2015 12:24 PM, Masashi UMEZAWA wrote:
> 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
>>>>>>>>>>
>>>
>
>





More information about the Cuis mailing list