Skip to content

Commit

Permalink
Implementation of readFileStream and writeFileStream on GRPlatform fo…
Browse files Browse the repository at this point in the history
…r Pharo9
  • Loading branch information
Johan Brichau committed May 21, 2020
1 parent cafef9b commit 2908a8f
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 26 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
file library
fileStreamOn: aString do: aBlock binary: aBoolean
self subclassResponsibility
self
greaseDeprecatedApi: 'GRPlatform>>#fileStreamOn:do:binary:'
details: 'Use readFileStreamOn:do:binary:'.
^ self readFileStreamOn: aString do: aBlock binary: aBoolean
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
file library
readFileStreamOn: aString do: aBlock binary: aBoolean
self subclassResponsibility
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
file library
writeFileStreamOn: aString do: aBlock binary: aBoolean
self subclassResponsibility
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
file library
contentsOfFile: aString binary: aBoolean
^ self fileStreamOn: aString do: [ :stream | stream contents ] binary: aBoolean
^ self readFileStreamOn: aString do: [ :stream | stream contents ] binary: aBoolean

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
file library
readFileStreamOn: aString do: aBlock binary: aBoolean
"Line end conversion is no longer done for ascii... TBD!"

^ aBoolean
ifTrue: [ aString asFileReference binaryReadStreamDo: aBlock ]
ifFalse: [ aString asFileReference readStreamEncoded: 'ascii' do: aBlock ]
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
file library
write: aStringOrByteArray toFile: aFileNameString inFolder: aFolderString
"writes aStringOrByteArray to a file named aFilenameString in the folder aFolderString"
| folder stream fullFilePath |

| folder |
folder := FileSystem disk resolveString: aFolderString.
fullFilePath := (folder / aFileNameString) asFileReference.
stream := aStringOrByteArray isString
ifTrue: [
(MultiByteFileStream forceNewFileNamed: fullFilePath fullName)
ascii;
wantsLineEndConversion: true;
yourself ]
ifFalse: [ (FileStream forceNewFileNamed: fullFilePath fullName) binary ].
[ stream nextPutAll: aStringOrByteArray ]
ensure: [ stream close ]
"TODO: wantsLineEndConversion: true; ??"
^ self
writeFileStreamOn: (folder / aFileNameString) asFileReference ensureDelete fullName
do: [ :stream | stream nextPutAll: aStringOrByteArray ]
binary: aStringOrByteArray isString not

This comment has been minimized.

Copy link
@theseion

theseion May 21, 2020

Member

I would write this a bit more concise:

write: aStringOrByteArray toFile: aFileNameString inFolder: aFolderString
	"writes aStringOrByteArray to a file named aFilenameString in the folder aFolderString"

	"TODO: wantsLineEndConversion: true; ??"
	^ self
		writeFileStreamOn: (aFolderString asFileReference / aFileNameString) ensureDelete pathString
		do: [ :stream | stream nextPutAll: aStringOrByteArray ]
		binary: aStringOrByteArray isString not

This comment has been minimized.

Copy link
@jbrichau

jbrichau May 21, 2020

Member

Definitely more succint. I'll change it.

Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
file library
writeFileStreamOn: aString do: aBlock binary: aBoolean
^ aBoolean
ifTrue: [ aString asFileReference binaryWriteStreamDo: aBlock ]
ifFalse: [ aString asFileReference writeStreamEncoded: 'ascii' do: aBlock ]

0 comments on commit 2908a8f

Please sign in to comment.