[squeak-dev] The Trunk: Environments-cwp.15.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Mar 10 04:31:04 UTC 2013
Colin Putney uploaded a new version of Environments to project The Trunk:
http://source.squeak.org/trunk/Environments-cwp.15.mcz
==================== Summary ====================
Name: Environments-cwp.15
Author: cwp
Time: 9 March 2013, 8:15:12.639 pm
UUID: 57b74903-5b1b-495e-86c9-97bde295a0ce
Ancestors: Environments-cwp.14
Added the ability to rename classes as they are imported or exported.
=============== Diff against Environments-cwp.14 ===============
Item was added:
+ SystemOrganization addCategory: #'Environments-Core'!
+ SystemOrganization addCategory: #'Environments-Policies'!
+ SystemOrganization addCategory: #'Environments-Loading'!
Item was removed:
- SystemOrganization addCategory: #'Environments-Core'!
Item was added:
+ NamePolicy subclass: #AddPrefixNamePolicy
+ instanceVariableNames: 'prefix'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: AddPrefixNamePolicy class>>prefix: (in category 'as yet unclassified') -----
+ prefix: aString
+ ^ self basicNew initializeWithPrefix: aString!
Item was added:
+ ----- Method: AddPrefixNamePolicy>>initializeWithPrefix: (in category 'as yet unclassified') -----
+ initializeWithPrefix: aString
+ self initialize.
+ prefix := aString!
Item was added:
+ ----- Method: AddPrefixNamePolicy>>name:do: (in category 'as yet unclassified') -----
+ name: aSymbol do: aBlock
+ ^ (aSymbol beginsWith: prefix) ifFalse:
+ [aBlock value: (prefix, aSymbol) asSymbol].
+ !
Item was added:
+ LookupKey subclass: #Alias
+ instanceVariableNames: 'source'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Core'!
Item was added:
+ ----- Method: Alias class>>key:source: (in category 'as yet unclassified') -----
+ key: aSymbol source: anAssociation
+ ^ self basicNew initializeWithKey: aSymbol source: anAssociation!
Item was added:
+ ----- Method: Alias>>asBinding: (in category 'converting') -----
+ asBinding: aSymbol
+ ^ Alias key: aSymbol source: source!
Item was added:
+ ----- Method: Alias>>initializeWithKey:source: (in category 'as yet unclassified') -----
+ initializeWithKey: aSymbol source: anAssociation
+ self initialize.
+ key := aSymbol.
+ source := anAssociation!
Item was added:
+ ----- Method: Alias>>isSpecialReadBinding (in category 'as yet unclassified') -----
+ isSpecialReadBinding
+ ^ true!
Item was added:
+ ----- Method: Alias>>isSpecialWriteBinding (in category 'as yet unclassified') -----
+ isSpecialWriteBinding
+ ^ true!
Item was added:
+ ----- Method: Alias>>value (in category 'as yet unclassified') -----
+ value
+ ^ source value!
Item was added:
+ ----- Method: Alias>>value: (in category 'as yet unclassified') -----
+ value: anObject
+ source value: anObject!
Item was added:
+ NamePolicy subclass: #AllNamePolicy
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: AllNamePolicy>>name:do: (in category 'as yet unclassified') -----
+ name: aSymbol do: aBlock
+ ^ aBlock value: aSymbol!
Item was added:
+ ----- Method: Association>>asBinding: (in category '*environments') -----
+ asBinding: aSymbol
+ ^ Alias key: aSymbol source: self!
Item was added:
+ LookupKey subclass: #Binding
+ instanceVariableNames: 'value'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Core'!
Item was added:
+ ----- Method: Binding class>>key:value: (in category 'as yet unclassified') -----
+ key: key value: value
+ ^ self basicNew initializeWithKey: key value: value!
Item was added:
+ ----- Method: Binding>>asBinding: (in category 'as yet unclassified') -----
+ asBinding: aSymbol
+ ^ self class key: aSymbol value: value!
Item was added:
+ ----- Method: Binding>>canAssign (in category 'as yet unclassified') -----
+ canAssign
+ ^ false!
Item was added:
+ ----- Method: Binding>>initializeWithKey:value: (in category 'as yet unclassified') -----
+ initializeWithKey: kObject value: vObject
+ self initialize.
+ key := kObject.
+ value := vObject.!
Item was added:
+ ----- Method: Binding>>isSpecialWriteBinding (in category 'as yet unclassified') -----
+ isSpecialWriteBinding
+ ^ true!
Item was added:
+ ----- Method: Binding>>value (in category 'as yet unclassified') -----
+ value
+ ^ value!
Item was added:
+ ----- Method: Binding>>value: (in category 'as yet unclassified') -----
+ value: anObject
+ (AttemptToWriteReadOnlyGlobal signal: 'Cannot store into read-only bindings')
+ ifTrue: [value := anObject]!
Item was added:
+ Object subclass: #BindingPolicy
+ instanceVariableNames: 'namespace policy next'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: BindingPolicy class>>namespace: (in category 'as yet unclassified') -----
+ namespace: aNamespace
+ ^ self namespace: aNamespace next: nil!
Item was added:
+ ----- Method: BindingPolicy class>>namespace:next: (in category 'as yet unclassified') -----
+ namespace: aNamespace next: anImport
+ ^ self
+ namespace: aNamespace
+ policy: AllNamePolicy new
+ next: anImport!
Item was added:
+ ----- Method: BindingPolicy class>>namespace:policy: (in category 'as yet unclassified') -----
+ namespace: aNamespace policy: aNamePolicy
+ ^ self namespace: aNamespace policy: aNamePolicy next: nil!
Item was added:
+ ----- Method: BindingPolicy class>>namespace:policy:next: (in category 'as yet unclassified') -----
+ namespace: aNamespace policy: aNamePolicy next: anImport
+ ^ self basicNew
+ initializeWithNamespace: aNamespace
+ policy: aNamePolicy
+ next: anImport!
Item was added:
+ ----- Method: BindingPolicy class>>null (in category 'as yet unclassified') -----
+ null
+ ^ self namespace: IdentityDictionary new!
Item was added:
+ ----- Method: BindingPolicy>>initializeWithNamespace:policy:next: (in category 'initialize-release') -----
+ initializeWithNamespace: aNamespace policy: aNamePolicy next: anImport
+ self initialize.
+ namespace := aNamespace.
+ policy := aNamePolicy.
+ next := anImport!
Item was added:
+ ----- Method: BindingPolicy>>name:do: (in category 'private') -----
+ name: aSymbol do: aBlock
+ ^ policy name: aSymbol do: aBlock!
Item was changed:
Object subclass: #Environment
+ instanceVariableNames: 'info imports exports contents bindings public undeclared'
+ classVariableNames: 'Default Instances'
- instanceVariableNames: 'contents lookup undeclared exports info'
- classVariableNames: 'Default'
poolDictionaries: ''
category: 'Environments-Core'!
Item was changed:
+ ----- Method: Environment class>>default (in category 'accessing') -----
- ----- Method: Environment class>>default (in category 'as yet unclassified') -----
default
^ Default!
Item was changed:
+ ----- Method: Environment class>>default: (in category 'accessing') -----
- ----- Method: Environment class>>default: (in category 'as yet unclassified') -----
default: anEnvironment
Default := anEnvironment!
Item was changed:
+ ----- Method: Environment class>>initialize (in category 'class initialization') -----
- ----- Method: Environment class>>initialize (in category 'as yet unclassified') -----
initialize
self uninstall!
Item was changed:
+ ----- Method: Environment class>>install (in category 'class initialization') -----
- ----- Method: Environment class>>install (in category 'as yet unclassified') -----
install
| smalltalk env |
+ self environment class == self ifTrue:
+ [Transcript
+ cr;
+ show: 'Can''t install environments; they''re already installed'.
+ ^ self].
+
- self environment class == self ifTrue: [self error: 'Already installed'].
smalltalk := Smalltalk globals.
env := self basicNew initializeWithSystemDictionary: smalltalk.
+ Default := env.
+ Instances at: env info name put: env.
(smalltalk at: #Undeclared) becomeForward: (env at: #Undeclared).
smalltalk becomeForward: env.
Smalltalk garbageCollect.!
Item was removed:
- ----- Method: Environment class>>name: (in category 'as yet unclassified') -----
- name: aString
- ^ self basicNew initializeWithName: aString!
Item was added:
+ ----- Method: Environment class>>named: (in category 'instance creation') -----
+ named: aSymbol
+ ^ Instances
+ at: aSymbol
+ ifAbsentPut: [self withName: aSymbol]!
Item was changed:
+ ----- Method: Environment class>>uninstall (in category 'class initialization') -----
- ----- Method: Environment class>>uninstall (in category 'as yet unclassified') -----
uninstall
| globals sysdict |
self environment class == self ifFalse:
[Transcript
cr;
show: 'Can''t uninstall environments; they''re not currently installed'.
^ self].
globals := Smalltalk globals instVarNamed: 'contents'.
sysdict := SystemDictionary new: globals size.
globals associationsDo: [:ea | sysdict add: ea].
Smalltalk globals becomeForward: sysdict.!
Item was added:
+ ----- Method: Environment class>>withName: (in category 'instance creation') -----
+ withName: aString
+ ^ self basicNew initializeWithName: aString!
Item was changed:
+ ----- Method: Environment>>associationAt: (in category 'emulating') -----
- ----- Method: Environment>>associationAt: (in category 'accessing') -----
associationAt: aSymbol
"Senders of this should probably be using #bindingOf:"
self flag: #review.
^ contents associationAt: aSymbol!
Item was changed:
+ ----- Method: Environment>>associationAt:ifAbsent: (in category 'emulating') -----
- ----- Method: Environment>>associationAt:ifAbsent: (in category 'accessing') -----
associationAt: aSymbol ifAbsent: aBlock
"Senders of this should probably be using #bindingOf:"
self flag: #review.
^ contents associationAt: aSymbol ifAbsent: aBlock!
Item was changed:
+ ----- Method: Environment>>associationOrUndeclaredAt: (in category 'emulating') -----
- ----- Method: Environment>>associationOrUndeclaredAt: (in category 'compatibility') -----
associationOrUndeclaredAt: key
+ ^ bindings associationAt: key ifAbsent:
+ [undeclared at: key put: nil.
+ undeclared associationAt: key]
+ !
- lookup do:
- [:ns | (ns includesKey: key) ifTrue: [^ ns associationAt: key]].
- undeclared at: key put: nil.
- ^ undeclared associationAt: key!
Item was changed:
+ ----- Method: Environment>>at: (in category 'emulating') -----
- ----- Method: Environment>>at: (in category 'accessing') -----
at: aSymbol
^ contents at: aSymbol!
Item was changed:
+ ----- Method: Environment>>at:ifAbsent: (in category 'emulating') -----
- ----- Method: Environment>>at:ifAbsent: (in category 'accessing') -----
at: aSymbol ifAbsent: aBlock
^ contents at: aSymbol ifAbsent: aBlock!
Item was changed:
+ ----- Method: Environment>>at:ifAbsentPut: (in category 'emulating') -----
- ----- Method: Environment>>at:ifAbsentPut: (in category 'accessing') -----
at: aSymbol ifAbsentPut: aBlock
^ contents
at: aSymbol
ifAbsentPut: aBlock!
Item was changed:
+ ----- Method: Environment>>at:ifPresent: (in category 'emulating') -----
- ----- Method: Environment>>at:ifPresent: (in category 'accessing') -----
at: aSymbol ifPresent: aBlock
^ contents at: aSymbol ifPresent: aBlock!
Item was changed:
+ ----- Method: Environment>>at:ifPresent:ifAbsent: (in category 'emulating') -----
- ----- Method: Environment>>at:ifPresent:ifAbsent: (in category 'compatibility') -----
at: aSymbol ifPresent: presentBlock ifAbsent: absentBlock
^ contents
at: aSymbol
ifPresent: presentBlock
ifAbsent: absentBlock.!
Item was changed:
+ ----- Method: Environment>>at:ifPresentAndInMemory: (in category 'emulating') -----
- ----- Method: Environment>>at:ifPresentAndInMemory: (in category 'compatibility') -----
at: key ifPresentAndInMemory: aBlock
^ contents
at: key
ifPresent:
[:v |
v isInMemory ifTrue:
[aBlock value: v]]!
Item was changed:
+ ----- Method: Environment>>at:put: (in category 'emulating') -----
- ----- Method: Environment>>at:put: (in category 'accessing') -----
at: aSymbol put: anObject
+ | binding |
+ binding := anObject isBehavior
+ ifTrue: [Binding key: aSymbol value: anObject]
+ ifFalse: [Association key: aSymbol value: anObject].
+ contents add: binding.
+ exports bind: binding.
+ ^ anObject
+ !
- (contents includesKey: aSymbol) ifFalse:
- [contents declare: aSymbol from: undeclared].
- contents at: aSymbol put: anObject.
- anObject isBehavior ifTrue:
- [(contents associationAt: aSymbol) beReadOnlyBinding].
- ^ anObject!
Item was changed:
----- Method: Environment>>bindingOf:ifAbsent: (in category 'binding') -----
bindingOf: aSymbol ifAbsent: aBlock
+ ^ bindings associationAt: aSymbol ifAbsent:
+ [(imports bindingOf: aSymbol)
+ ifNil: aBlock
+ ifNotNil: [:foreign | bindings add: (foreign asBinding: aSymbol)]]!
- lookup do:
- [:dict |
- (dict includesKey: aSymbol) ifTrue:
- [^ dict associationAt: aSymbol]].
- ^ aBlock value!
Item was changed:
+ ----- Method: Environment>>do: (in category 'emulating') -----
- ----- Method: Environment>>do: (in category 'enumerating') -----
do: aBlock
"Evaluate aBlock for each of the receiver's values."
contents valuesDo: aBlock!
Item was changed:
+ ----- Method: Environment>>environment (in category 'emulating') -----
- ----- Method: Environment>>environment (in category 'compatibility') -----
environment
^ self!
Item was changed:
----- Method: Environment>>export: (in category 'configuring') -----
+ export: spec
+ exports := Export
+ namespace: public
+ policy: (ExplicitNamePolicy spec: spec)
+ next: exports.
+ self publicizeContents!
- export: aSymbol
- exports add: (contents associationAt: aSymbol)!
Item was added:
+ ----- Method: Environment>>exportAddingPrefix: (in category 'configuring') -----
+ exportAddingPrefix: aString
+ exports := Export
+ namespace: public
+ policy: (AddPrefixNamePolicy prefix: aString)
+ next: exports.
+ self publicizeContents!
Item was added:
+ ----- Method: Environment>>exportRemovingPrefix: (in category 'configuring') -----
+ exportRemovingPrefix: aString
+ exports := Export
+ namespace: public
+ policy: (RemovePrefixNamePolicy prefix: aString)
+ next: exports.
+ self publicizeContents.!
Item was added:
+ ----- Method: Environment>>exportSelf (in category 'configuring') -----
+ exportSelf
+ exports := Export namespace: public next: exports.
+ self publicizeContents.!
Item was added:
+ ----- Method: Environment>>from:import: (in category 'configuring') -----
+ from: anEnvironment import: spec
+ imports := Import
+ namespace: anEnvironment public
+ policy: (ExplicitNamePolicy spec: spec)
+ next: imports.
+ !
Item was changed:
----- Method: Environment>>hasBindingThatBeginsWith: (in category 'binding') -----
hasBindingThatBeginsWith: aString
+ bindings associationsDo:
+ [:ea | (ea key beginsWith: aString) ifTrue: [^ true]].
+ ^ false
+
+ !
- lookup do:
- [:dict |
- dict associationsDo:
- [:asc | (asc key beginsWith: aString) ifTrue:
- [^ true]]].
- ^ false!
Item was added:
+ ----- Method: Environment>>import: (in category 'configuring') -----
+ import: anEnvironment
+ imports := Import namespace: anEnvironment public next: imports.
+ self rebindUndeclared!
Item was added:
+ ----- Method: Environment>>import:addingPrefix: (in category 'configuring') -----
+ import: anEnvironment addingPrefix: aString
+ "This implementation is slightly counter-intuitive. The local name has a prefix,
+ so we have to remove it before doing the look up in the other environment."
+
+ imports := Import
+ namespace: anEnvironment public
+ policy: (RemovePrefixNamePolicy prefix: aString)
+ next: imports.
+ self rebindUndeclared.!
Item was added:
+ ----- Method: Environment>>import:removingPrefix: (in category 'configuring') -----
+ import: anEnvironment removingPrefix: aString
+ "This implementation is slightly counter-intuitive. The local name doesn't have a
+ prefix, so we have to add one when look it up in the other environment."
+
+ imports := Import
+ namespace: anEnvironment public
+ policy: (AddPrefixNamePolicy prefix: aString)
+ next: imports.
+ self rebindUndeclared.!
Item was removed:
- ----- Method: Environment>>importEnvironment: (in category 'configuring') -----
- importEnvironment: anEnvironment
- lookup := lookup copyWith: anEnvironment exports!
Item was added:
+ ----- Method: Environment>>importSelf (in category 'configuring') -----
+ importSelf
+ imports := Import namespace: contents next: imports.
+ self rebindUndeclared!
Item was removed:
- ----- Method: Environment>>importSmalltalk (in category 'configuring') -----
- importSmalltalk
- lookup := lookup copyWith: Smalltalk globals!
Item was changed:
+ ----- Method: Environment>>includes: (in category 'emulating') -----
- ----- Method: Environment>>includes: (in category 'compatibility') -----
includes: key
^ contents includes: key!
Item was changed:
+ ----- Method: Environment>>includesKey: (in category 'emulating') -----
- ----- Method: Environment>>includesKey: (in category 'compatibility') -----
includesKey: key
^ contents includesKey: key!
Item was added:
+ ----- Method: Environment>>info (in category 'accessing') -----
+ info
+ ^ info!
Item was changed:
----- Method: Environment>>initialize (in category 'initialize-release') -----
initialize
+ bindings := IdentityDictionary new.
- undeclared := IdentityDictionary new.
contents := IdentityDictionary new.
+ public := IdentityDictionary new.
+ undeclared := IdentityDictionary new.
+ imports := Import null.
+ exports := Export null.
+ self importSelf.!
- lookup := {contents}.
- exports := contents.
- !
Item was changed:
+ ----- Method: Environment>>keyAtIdentityValue: (in category 'emulating') -----
- ----- Method: Environment>>keyAtIdentityValue: (in category 'compatibility') -----
keyAtIdentityValue: anObject
^ contents keyAtIdentityValue: anObject.!
Item was changed:
+ ----- Method: Environment>>keyAtIdentityValue:ifAbsent: (in category 'emulating') -----
- ----- Method: Environment>>keyAtIdentityValue:ifAbsent: (in category 'accessing') -----
keyAtIdentityValue: anObject ifAbsent: aBlock
^ contents keyAtIdentityValue: anObject ifAbsent: aBlock!
Item was changed:
+ ----- Method: Environment>>keys (in category 'emulating') -----
- ----- Method: Environment>>keys (in category 'compatibility') -----
keys
^ contents keys!
Item was changed:
+ ----- Method: Environment>>keysDo: (in category 'emulating') -----
- ----- Method: Environment>>keysDo: (in category 'enumerating') -----
keysDo: aBlock
"Evaluate aBlock for each of the receiver's keys."
contents keysDo: aBlock!
Item was added:
+ ----- Method: Environment>>migrate (in category 'initialize-release') -----
+ migrate
+ bindings := IdentityDictionary new.
+ public := IdentityDictionary new.
+ imports := Import namespace: contents.
+ exports := Export namespace: public.
+ contents keysAndValuesDo:
+ [:name :value |
+ bindings at: name put: value.
+ public at: name put: value]
+ !
Item was changed:
+ ----- Method: Environment>>objectForDataStream: (in category 'emulating') -----
- ----- Method: Environment>>objectForDataStream: (in category 'compatibility') -----
objectForDataStream: refStrm
| dp |
"I am about to be written on an object file. Write a reference to Smalltalk instead."
dp := DiskProxy global: #Smalltalk selector: #globals args: #().
refStrm replace: self with: dp.
^ dp!
Item was added:
+ ----- Method: Environment>>public (in category 'accessing') -----
+ public
+ ^ public!
Item was added:
+ ----- Method: Environment>>publicizeContents (in category 'private') -----
+ publicizeContents
+ contents associationsDo: [:binding | exports bind: binding].
+ !
Item was added:
+ ----- Method: Environment>>rebindUndeclared (in category 'private') -----
+ rebindUndeclared
+ undeclared keys do:
+ [:name |
+ (imports valueOf: name) ifNotNil:
+ [:v |
+ bindings declare: name from: undeclared.
+ bindings at: name put: v]]!
Item was removed:
- ----- Method: Environment>>requireExplicitExports (in category 'configuring') -----
- requireExplicitExports
- exports == contents ifTrue:
- [exports := IdentityDictionary new]!
Item was changed:
+ ----- Method: Environment>>scopeFor:from:envtAndPathIfFound: (in category 'emulating') -----
- ----- Method: Environment>>scopeFor:from:envtAndPathIfFound: (in category 'compatibility') -----
scopeFor: aSymbol from: lower envtAndPathIfFound: aBlock
^ (contents includesKey: aSymbol)
ifTrue: [aBlock value: self value: String new]
!
Item was changed:
+ ----- Method: Environment>>select: (in category 'emulating') -----
- ----- Method: Environment>>select: (in category 'compatibility') -----
select: aBlock
^ contents select: aBlock!
Item was changed:
+ ----- Method: Environment>>storeDataOn: (in category 'emulating') -----
- ----- Method: Environment>>storeDataOn: (in category 'compatibility') -----
storeDataOn: aDataStream
"I don't get stored. Use a DiskProxy"
self error: 'use a DiskProxy to store me'!
Item was changed:
----- Method: Environment>>valueOf:ifAbsent: (in category 'binding') -----
valueOf: aSymbol ifAbsent: aBlock
+ ^ bindings at: aSymbol ifAbsent: aBlock!
- lookup do:
- [:dict |
- dict at: aSymbol ifPresent:
- [:value | ^ value]].
- ^ aBlock value!
Item was changed:
+ ----- Method: Environment>>veryDeepCopyWith: (in category 'emulating') -----
- ----- Method: Environment>>veryDeepCopyWith: (in category 'compatibility') -----
veryDeepCopyWith: aCopier
^ self!
Item was changed:
Object subclass: #EnvironmentLoader
instanceVariableNames: 'environment'
classVariableNames: ''
poolDictionaries: ''
+ category: 'Environments-Loading'!
- category: 'Environments-Core'!
Item was changed:
Notification subclass: #EnvironmentRequest
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
+ category: 'Environments-Loading'!
- category: 'Environments-Core'!
Item was added:
+ NamePolicy subclass: #ExplicitNamePolicy
+ instanceVariableNames: 'aliases'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: ExplicitNamePolicy class>>aliases: (in category 'as yet unclassified') -----
+ aliases: aCollection
+ ^ self basicNew initializeWithAliases: aCollection!
Item was added:
+ ----- Method: ExplicitNamePolicy class>>flattenSpec:into: (in category 'as yet unclassified') -----
+ flattenSpec: anObject into: names
+ anObject isSymbol ifTrue:
+ [^ names at: anObject put: anObject].
+ anObject isVariableBinding ifTrue:
+ [^ names add: anObject].
+ anObject isDictionary ifTrue:
+ [^ names addAll: anObject].
+ anObject do:
+ [:ea | self flattenSpec: ea into: names]!
Item was added:
+ ----- Method: ExplicitNamePolicy class>>spec: (in category 'as yet unclassified') -----
+ spec: anObject
+ | aliases |
+ (anObject isKindOf: NamePolicy) ifTrue: [^ anObject].
+ aliases := IdentityDictionary new.
+ self flattenSpec: anObject into: aliases.
+ ^ self aliases: aliases!
Item was added:
+ ----- Method: ExplicitNamePolicy>>initializeWithAliases: (in category 'as yet unclassified') -----
+ initializeWithAliases: aCollection
+ self initialize.
+ aliases := IdentityDictionary withAll: aCollection!
Item was added:
+ ----- Method: ExplicitNamePolicy>>name:do: (in category 'as yet unclassified') -----
+ name: aSymbol do: aBlock
+ ^ aBlock value: (aliases at: aSymbol ifAbsent: [^ nil])!
Item was added:
+ BindingPolicy subclass: #Export
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: Export>>bind: (in category 'binding') -----
+ bind: aBinding
+
+ self name: aBinding key do:
+ [:foreign | ^ namespace add: (aBinding asBinding: foreign)].
+ ^ next ifNotNil: [next bind: aBinding]!
Item was added:
+ ----- Method: Export>>bind:to: (in category 'binding') -----
+ bind: aSymbol to: anObject
+ ^ self bind: aSymbol -> anObject!
Item was added:
+ BindingPolicy subclass: #Import
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: Import>>bindingOf: (in category 'binding') -----
+ bindingOf: aSymbol
+ self name: aSymbol do:
+ [:foreign |
+ ^ namespace
+ associationAt: foreign
+ ifAbsent: [next ifNotNil: [next bindingOf: aSymbol]]].
+ ^ next ifNotNil: [next bindingOf: aSymbol]!
Item was added:
+ ----- Method: Import>>valueOf: (in category 'binding') -----
+ valueOf: aSymbol
+ ^ (self bindingOf: aSymbol) value!
Item was added:
+ Object subclass: #NamePolicy
+ instanceVariableNames: ''
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: NamePolicy>>name:do: (in category 'as yet unclassified') -----
+ name: aSymbol do: aBlock
+ self subclassResponsibility!
Item was added:
+ ----- Method: ReadOnlyVariableBinding>>asBinding: (in category '*environments') -----
+ asBinding: aSymbol
+ ^ Binding key: aSymbol value: value!
Item was added:
+ NamePolicy subclass: #RemovePrefixNamePolicy
+ instanceVariableNames: 'prefix'
+ classVariableNames: ''
+ poolDictionaries: ''
+ category: 'Environments-Policies'!
Item was added:
+ ----- Method: RemovePrefixNamePolicy class>>prefix: (in category 'as yet unclassified') -----
+ prefix: aString
+ ^ self basicNew initializeWithPrefix: aString!
Item was added:
+ ----- Method: RemovePrefixNamePolicy>>initializeWithPrefix: (in category 'as yet unclassified') -----
+ initializeWithPrefix: aString
+ self initialize.
+ prefix := aString!
Item was added:
+ ----- Method: RemovePrefixNamePolicy>>name:do: (in category 'as yet unclassified') -----
+ name: aSymbol do: aBlock
+ ^ (aSymbol beginsWith: prefix)
+ ifTrue: [aBlock value: (aSymbol allButFirst: prefix size) asSymbol]!
More information about the Squeak-dev
mailing list
|