#BUGFIX by cg
class: ResourcePack class
added: #forPackage:resourceFileName:cached:defaultIfAbsent:
changed:
#forPackage:cached:
#forPackage:resourceFileName:cached:
care for missing resources.rs file (use lang/territory)
--- a/ResourcePack.st Thu Dec 06 04:35:46 2018 +0000
+++ b/ResourcePack.st Thu Dec 13 13:24:53 2018 +0100
@@ -337,13 +337,30 @@
"get the full resource definitions given a package id (such as stx:libbasic').
Also optionally leave the resulting pack in the cache for faster access next time."
- ^ self forPackage:package resourceFileName:'resources.rs' cached:cached
-
+ |pack lang territory|
+
+ pack := self forPackage:package resourceFileName:'resources.rs' cached:cached defaultIfAbsent:false.
+ pack isNil ifTrue:[
+ lang := Smalltalk language.
+ territory := Smalltalk languageTerritory.
+ pack := self forPackage:package resourceFileName:(lang,'_',territory,'.rs') cached:cached defaultIfAbsent:false.
+ pack isNil ifTrue:[
+ pack := self forPackage:package resourceFileName:(lang,'.rs') cached:cached defaultIfAbsent:false.
+ pack isNil ifTrue:[
+ pack := self newDefaultResourcePackForPackage:package.
+ self addAdditionalSuperPacksForPackage:package to:pack.
+ ].
+ ]
+ ].
+ ^ pack
+
"
ResourcePack forPackage:'stx:libbasic' cached:false
+ ResourcePack forPackage:'exept:expecco/plugin/windowsAutomation2' cached:false
"
"Modified: / 19-10-2006 / 23:18:28 / cg"
+ "Modified: / 13-12-2018 / 13:24:56 / Claus Gittinger"
!
forPackage:package resourceFileName:resourceFileName cached:cached
@@ -351,10 +368,35 @@
Also optionally leave the resulting pack in the cache for faster access next time.
Remember failed packs, to avoid retrying reading the file again and again"
+ ^ self
+ forPackage:package
+ resourceFileName:resourceFileName
+ cached:cached
+ defaultIfAbsent:true
+
+ "
+ ResourcePack flushCachedResourcePacks.
+
+ ResourcePack
+ forPackage:'stx:libbasic'
+ resourceFileName:'resources.rs'
+ cached:false
+ "
+
+ "Modified: / 28-09-2011 / 15:55:30 / cg"
+ "Modified: / 13-12-2018 / 13:17:00 / Claus Gittinger"
+!
+
+forPackage:package resourceFileName:resourceFileName cached:cached defaultIfAbsent:defaultIfAbsentBoolean
+ "get the full resource definitions given a package id (such as stx:libbasic').
+ Also optionally leave the resulting pack in the cache for faster access next time.
+ Remember failed packs, to avoid retrying reading the file again and again"
+
|fullName pack rsrcDir file|
package isNil ifTrue:[
'[ResourcePack] warning: nil package asking for resource file'.
+ defaultIfAbsentBoolean ifFalse:[^ nil].
^ self newDefaultResourcePackForPackage:package
].
@@ -366,6 +408,7 @@
(FailedToLoadPacks includes:fullName) ifTrue:[
"/ it already failed to load - do not try again
+ defaultIfAbsentBoolean ifFalse:[^ nil].
pack := self newDefaultResourcePackForPackage:package.
self addAdditionalSuperPacksForPackage:package to:pack.
^ pack
@@ -381,10 +424,12 @@
"/ '3) rsrcDir -> ' print.
"/ rsrcDir printCR.
rsrcDir exists ifTrue:[
- pack := self fromFile:resourceFileName directory:rsrcDir cached:cached.
- pack packsPackage:package.
- self addAdditionalSuperPacksForPackage:package to:pack.
- ^ pack
+ (rsrcDir / resourceFileName) exists ifTrue:[
+ pack := self fromFile:resourceFileName directory:rsrcDir cached:cached.
+ pack packsPackage:package.
+ self addAdditionalSuperPacksForPackage:package to:pack.
+ ^ pack
+ ].
].
].
@@ -398,6 +443,7 @@
].
FailedToLoadPacks add:fullName.
+ defaultIfAbsentBoolean ifFalse:[^ nil].
pack := self newDefaultResourcePackForPackage:package.
self addAdditionalSuperPacksForPackage:package to:pack.
^ pack
@@ -411,8 +457,7 @@
cached:false
"
- "Modified: / 28-09-2011 / 15:55:30 / cg"
- "Modified: / 24-10-2018 / 18:06:02 / Claus Gittinger"
+ "Created: / 13-12-2018 / 13:16:36 / Claus Gittinger"
!
fromFile:aFileName