QualifiedName.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 22 Mar 2023 13:57:18 +0000
branchjv
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 $'
! !