#REFACTORING by stefan
class: ImageReader
removed: #writingFile:for:do:
changed:
#save:onFile:
#saveAll:onFile:
class: ImageReader class
added: #writingFile:for:do:
changed: #readerClassForFilename:
--- a/ImageReader.st Fri Oct 12 20:08:00 2018 +0200
+++ b/ImageReader.st Fri Oct 12 20:09:30 2018 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
"
COPYRIGHT (c) 1991 by Claus Gittinger
All Rights Reserved
@@ -2137,19 +2139,20 @@
readerClassForFilename:aStringOrFilename
"return a reader class, determined by the file's name"
- |mime reader|
-
- mime := aStringOrFilename asFilename mimeTypeFromName.
+ |fileName mime reader|
+
+ fileName := aStringOrFilename asFilename.
+ mime := fileName mimeTypeFromName.
mime isNil ifTrue:[
- mime := aStringOrFilename asFilename mimeTypeOfContents.
+ mime := fileName mimeTypeOfContents.
].
mime notNil ifTrue:[
- reader := MIMETypes imageReaderForType:mime.
+ reader := MIMETypes imageReaderForType:mime.
].
reader isNil ifTrue:[
- "answer the reader when proceeding form this error"
- reader := ConversionError raiseRequestErrorString:(' - unsupported image type: ''%1''' bindWith:(mime ? aStringOrFilename asFilename suffix)).
+ "answer the reader when proceeding from this error"
+ reader := ConversionError raiseRequestErrorString:(' - unsupported image type: ''%1''' bindWith:(mime ? aStringOrFilename asFilename suffix)).
].
^ reader
@@ -2370,6 +2373,45 @@
"Created: / 22-02-2017 / 01:00:44 / cg"
! !
+!ImageReader class methodsFor:'private utilities'!
+
+writingFile:aFileName for:something do:aBlock
+ "helper for save image"
+
+ |stream done|
+
+ done := false.
+
+ [
+ stream := aFileName asFilename newReadWriteStream.
+ aBlock value:stream.
+ done := true.
+ ] on:FileStream openErrorSignal do:[:ex|
+ Image fileCreationErrorSignal
+ raiseWith:something
+ errorString:('file creation error: ' , ex description).
+ ] ensure:[
+ stream notNil ifTrue:[
+ stream close.
+ done ifFalse:[
+ OsError catch:[
+ aFileName asFilename remove.
+ ]
+ ].
+ ].
+ ].
+
+ "
+ self writingFile:'/etc' for:nil do:[:arg| self halt].
+ self writingFile:'/tmp/ttttt' for:nil do:[:arg| arg nextPutLine:'Hello'].
+
+ self writingFile:'/tmp/ttttt' for:nil do:[:arg| ^ self].
+ self assert:'/tmp/ttttt' asFilename exists not
+ "
+
+ "Modified: / 04-08-2017 / 11:28:41 / stefan"
+! !
+
!ImageReader class methodsFor:'queries'!
isAbstract
@@ -2770,8 +2812,8 @@
save:image onFile:aFileName
"save image in my format on aFile"
- self writingFile:aFileName for:image do:[:stream |
- self save:image onStream:stream.
+ self class writingFile:aFileName for:image do:[:stream |
+ self save:image onStream:stream.
].
!
@@ -2805,8 +2847,8 @@
Not all file formats support multiple images,
so be prepared for an exception to be raised."
- self writingFile:aFileName for:aCollectionOfImages do:[:stream |
- self saveAll:aCollectionOfImages onStream:stream.
+ self class writingFile:aFileName for:aCollectionOfImages do:[:stream |
+ self saveAll:aCollectionOfImages onStream:stream.
].
"Modified: / 01-06-2010 / 19:02:17 / cg"
@@ -2823,34 +2865,6 @@
errorString:('save of imageSequence not implemented/supported for this format').
"Modified (comment): / 22-02-2017 / 01:00:11 / cg"
-!
-
-writingFile:aFileName for:something do:aBlock
- "helper for save image"
-
- |stream|
-
- [
- stream := aFileName asFilename newReadWriteStream.
- ] on:FileStream openErrorSignal do:[:ex|
- ^ Image fileCreationErrorSignal
- raiseWith:something
- errorString:('file creation error: ' , ex description).
- ].
-
- [
- [
- aBlock value: stream
- ] ensure:[
- stream close.
- ].
- ] ifCurtailed:[
- OsError catch:[
- aFileName asFilename remove.
- ]
- ].
-
- "Modified: / 04-08-2017 / 11:28:41 / stefan"
! !
!ImageReader methodsFor:'initialization'!