QualifiedName.st
author |
Jan Vrany <jan.vrany@labware.com> |
|
Wed, 22 Mar 2023 13:57:18 +0000 |
branch | jv |
changeset 25445 |
1623217d2268 |
parent 18105 |
3a3a3e0ac47f
|
permissions |
-rw-r--r-- |
Cherry-picked OrderedCollection.st from 0b286fd51da7:
* d4c86d7c0bfc: #TUNING by stefan, Stefan Vogel <sv@exept.de>
* 692b6497a669: #DOCUMENTATION by stefan, Stefan Vogel <sv@exept.de>
* d47bb2912953: #DOCUMENTATION by stefan, Stefan Vogel <sv@exept.de>
* abb4316c6bff: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 3a8fce0e8d11: #TUNING by stefan, Stefan Vogel <sv@exept.de>
* 03d29bf8c5bb: #REFACTORING by stefan, Stefan Vogel <sv@exept.de>
* cccc6c4abcfc: #REFACTORING by stefan, Stefan Vogel <sv@exept.de>
* 35d957c7a840: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 6b11890f5f2c: #OTHER by cg, Claus Gittinger <cg@exept.de>
* abb6108fb06b: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 2c4768bb2e89: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 4029e964d0f1: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* ddcab3a9c2df: #OTHER by cg, Claus Gittinger <cg@exept.de>
* 2213eb56e0c7: #REFACTORING by exept, Claus Gittinger <cg@exept.de>
* 09ca874a6160: #REFACTORING by exept, Claus Gittinger <cg@exept.de>
* 30b332af1f33: #BUGFIX by stefan, Stefan Vogel <sv@exept.de>
* 779764ba117b: #REFACTORING by cg, Claus Gittinger <cg@exept.de>
* b3d232a613c9: #BUGFIX by stefan, Stefan Vogel <sv@exept.de>
* c417f7edaec1: #BUGFIX by stefan, Stefan Vogel <sv@exept.de>
* 904b6538f379: #FEATURE by exept, Claus Gittinger <cg@exept.de>
* c5887f03e01f: #REFACTORING by stefan, Stefan Vogel <sv@exept.de>
* 8912d03aff48: #BUGFIX by exept, Claus Gittinger <cg@exept.de>
* de5cd1dab4c3: #DOCUMENTATION by exept, Claus Gittinger <cg@exept.de>
* 9bbd26603378: #OTHER by exept, Claus Gittinger <cg@exept.de>
* c2c9dc110f42: #FEATURE by stefan, Stefan Vogel <sv@exept.de>
* 81d123c6703d: #DOCUMENTATION by stefan, Stefan Vogel <sv@exept.de>
* 8aadbb21458a: #BUGFIX by stefan, Stefan Vogel <sv@exept.de>
* f210dbb8b2f6: #TUNING by stefan, Stefan Vogel <sv@exept.de>
* c2c774fc53c0: #FEATURE by exept, Claus Gittinger <cg@exept.de>
* b6f462670875: #DOCUMENTATION by exept, Claus Gittinger <cg@exept.de>
* 27ae4021d5d6: #FEATURE by stefan, Stefan Vogel <sv@exept.de>
* 10d9e9d85594: #TUNING by exept, Claus Gittinger <cg@exept.de>
* 2653d855dcc7: #DOCUMENTATION by exept, Claus Gittinger <cg@exept.de>
* 6ea1698a1a34: #FEATURE by stefan, Stefan Vogel <sv@exept.de>
* 28762315e664: #OTHER by exept, Claus Gittinger <cg@exept.de>
* 7142ea786f3e: #TUNING by stefan, Stefan Vogel <sv@exept.de>
* 7875acb42b53: #BUGFIX by stefan, Stefan Vogel <sv@exept.de>
* 163a0eebc97e: #BUGFIX by Maren, matilk
"{ Package: '__NoProject__' }"
Object subclass:#QualifiedName
instanceVariableNames:'pathString'
classVariableNames:''
poolDictionaries:''
category:'Kernel-Support'
!
!QualifiedName class methodsFor:'documentation'!
documentation
"
some mimicri, to allow filein of visualWorks code which uses qualified names
"
! !
!QualifiedName class methodsFor:'instance creation'!
for:aStringOrSymbol
^ self new name:aStringOrSymbol
!
makeUnambiguous
^ self
!
pathString:aPathString
^ self new pathString:aPathString
! !
!QualifiedName methodsFor:'accessing'!
asString
^ pathString
!
comment:aString
"empty for now"
!
name:aStringOrSymbol
pathString := aStringOrSymbol asSymbol
!
pathString
"return the value of the instance variable 'pathString' (automatically generated)"
^ pathString
!
pathString:something
"set the value of the instance variable 'pathString' (automatically generated)"
pathString := something.
! !
!QualifiedName methodsFor:'conditional execution'!
value
"return my binding value, if unbound, return nil"
^ self valueOrDo:[]
!
valueOrDo:aBlock
"return my binding value, if unbound, return the result from evaluating aBlock"
|ns path|
path := pathString asCollectionOfSubstringsSeparatedBy:$..
((path size > 0) and:[path first = 'Core']) ifTrue:[
path := path copyFrom:2
].
ns := Smalltalk.
path do:[:component |
ns := ns at:component asSymbol ifAbsent:[ ^ aBlock value ].
].
^ ns
! !
!QualifiedName methodsFor:'defining'!
defineClass: name superclass: superclass
indexedType: indexed
private: private
instanceVariableNames: instVars
classInstanceVariableNames: classInstVars
imports: imports
category: category
attributes: annotations
|sc|
sc := superclass value.
sc isNil ifTrue:[
self halt.
].
self halt.
!
defineNameSpace: name private: private imports: imports category: category attributes: annotations
"klduge for now"
pathString = 'Smalltalk' ifTrue:[
NameSpace name:name asSymbol.
] ifFalse:[
self halt.
].
! !
!QualifiedName methodsFor:'dummy for now'!
makeUnambiguous
^ self
! !
!QualifiedName class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libbasic/QualifiedName.st,v 1.3 2013-10-27 10:14:09 cg Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/libbasic/QualifiedName.st,v 1.3 2013-10-27 10:14:09 cg Exp $'
! !