[etoys-dev] Etoys Inbox: System-Richo.12.mcz
Ricardo Moran
richi.moran at gmail.com
Thu May 13 15:28:09 EDT 2010
After uploading this, I clicked "update code from server" and now I have the
System package marked dirty. It also has now two ancestors: System-Richo.12
and System-bf.13. If I check the history it is something like this:
<working copy>
System-Richo.12
System-bf.13
System-Richo.11
System-bf.12
System-Richo.10
System-bf.11
System-bf.9
System-bf.10
...
I think I messed up something, and I don't know how to fix it.
Richo
On Thu, May 13, 2010 at 4:10 PM, <commits at source.squeak.org> wrote:
> A new version of System was added to project Etoys Inbox:
> http://source.squeak.org/etoysinbox/System-Richo.12.mcz
>
> ==================== Summary ====================
>
> Name: System-Richo.12
> Author: Richo
> Time: 13 May 2010, 4:10:15 pm
> UUID: 3188de42-860f-5949-9f9a-12f540c657b7
> Ancestors: System-Richo.11
>
> * Removed a lot of stuff used for Localization.
> * Modified TextDomainManager to use method properties to store the text
> domain of each method. This happens in a lazy way. It's also posible to
> preconfigure the method properties of all methods with translations but it
> takes forever and it ends up with a Space Low warning (see TextDomainManager
> class>>updateDomainOfAllMethodsWithTranslations)
>
> =============== Diff against System-Richo.11 ===============
>
> Item was added:
> + ----- Method: TextDomainManager classSide>>allMethodsWithTranslations (in
> category 'accessing') -----
> + allMethodsWithTranslations
> + "Look for #translated calls"
> + | methodsWithTranslations |
> + methodsWithTranslations := TranslatedReceiverFinder new
> stringReceiversWithContext: #translated.
> + methodsWithTranslations := methodsWithTranslations,
> (TranslatedReceiverFinder new
> + stringReceiversWithContext: #translatedNoop).
> +
> + methodsWithTranslations := methodsWithTranslations collect: [:each | each
> key compiledMethod].
> +
> + "Look for Etoys tiles and vocabularies"
> + methodsWithTranslations := methodsWithTranslations, (EToyVocabulary
> allPhrasesWithContextToTranslate collect: [:r |
> + (MethodReference new setStandardClass: r second methodSymbol: r
> third) compiledMethod.
> + ]).
> +
> + ^methodsWithTranslations!
>
> Item was changed:
> ----- Method: TextDomainManager classSide>>domainForPackage: (in category
> 'accessing') -----
> domainForPackage: aPackageInfo
> + "Package names and text domains are synonyms now"
> + ^aPackageInfo name!
> - ^self domainForPackageNamed: aPackageInfo name!
>
> Item was changed:
> Object subclass: #TextDomainManager
> instanceVariableNames: ''
> classVariableNames: 'ClassCategories Classes DefaultDomain
> DomainInfos LoneClasses Packages'
> poolDictionaries: ''
> category: 'System-Localization'!
> + TextDomainManager class
> + instanceVariableNames: 'defaultDomain'!
>
> !TextDomainManager commentStamp: 'tk 1/4/2008 16:08' prior: 0!
> I manages mapping from class category to textdomain.
>
> Class variables:
> ClassCategories IdentityDictionary -- classCategory -> domainName
> Classes IdentityDictionary -- class name (a Symbol)
> -> domainName (a cache only!!)
> DefaultDomain String -- the default domain name
> DomainInfos Dictionary -- domainName -> a TextDomainInfo
> LoneClasses IdentityDictionary -- class name (a Symbol) ->
> domainName. For classes whose entire category are not all in the same
> domain (BookMorph and QuickGuideMorph)
>
> TextDomainManager registerCategoryPrefix: 'DrGeoII' domain: 'DrGeoII'.
> TextDomainManager unregisterDomain: 'DrGeoII'.
>
> TextDomainManager registerClass: #QuickGuideMorph domain: 'quickguides'.
> TextDomainManager registerClass: #QuickGuideHolderMorph domain:
> 'quickguides'.
> !
> + TextDomainManager class
> + instanceVariableNames: 'defaultDomain'!
>
> Item was added:
> + ----- Method: TextDomainManager classSide>>domainOfMethod: (in category
> 'accessing') -----
> + domainOfMethod: aCompiledMethod
> + ^ aCompiledMethod
> + propertyValueAt: self textDomainProperty
> + ifAbsent: [self updateDomainOfMethod: aCompiledMethod] !
>
> Item was added:
> + ----- Method: TextDomainManager classSide>>clearAllDomains (in category
> 'private') -----
> + clearAllDomains
> + SystemNavigation default
> + allCompiledMethodDo: [:each | each
> + removeProperty: self textDomainProperty
> + ifAbsent: []] !
>
> Item was added:
> + ----- Method: TextDomainManager
> classSide>>updateDomainOfAllMethodsWithTranslations (in category 'private')
> -----
> + updateDomainOfAllMethodsWithTranslations
> + self allMethodsWithTranslations do: [:each|
> + self updateDomainOfMethod: each
> + ]!
>
> Item was changed:
> ----- Method: TextDomainManager classSide>>initialize (in category 'class
> initialization') -----
> initialize
> " TextDomainManager initialize "
> + self defaultDomain: 'Etoys'; clearAllDomains!
> -
> - ClassCategories _ IdentityDictionary new.
> - Classes _ IdentityDictionary new.
> - Packages := Dictionary new.
> - DomainInfos _ Dictionary new.
> - self defaultDomain: 'Etoys'.
> - "self registerClass: #QuickGuideMorph domain: 'quickguides'.
> - self registerClass: #QuickGuideHolderMorph domain:
> 'quickguides'."!
>
> Item was added:
> + ----- Method: TextDomainManager classSide>>textDomainProperty (in
> category 'private') -----
> + textDomainProperty
> + ^#textDomain!
>
> Item was changed:
> ----- Method: TextDomainManager classSide>>defaultDomain (in category
> 'accessing') -----
> defaultDomain
> + "I'm not sure we still need a default domain, AFAIK the default domain
> will only be used when no domain is found. In that case, wouldn't it be
> better to just look for a translation in all domains?"
> + ^defaultDomain!
> - ^DefaultDomain!
>
> Item was added:
> + ----- Method: TextDomainManager classSide>>updateDomainOfMethod: (in
> category 'private') -----
> + updateDomainOfMethod: aCompiledMethod
> + "First it looks for the package of the method reference (using
> + the PackageOrganizer: deadly slow). If the method doesn't
> + belong to any package it uses the default domain. Finally it
> + stores the text domain of the method using a method
> + property, this way we gain performance the next time we
> + translate the same method because we avoid the use of
> + PackageOrganizer. Have I mentioned it is really slow? :)"
> + | package |
> + package := PackageOrganizer default
> + packageOfMethod: aCompiledMethod
> methodReference
> + ifNone: [].
> + ^ aCompiledMethod
> + propertyValueAt: self textDomainProperty
> + put: (package isNil
> + ifTrue: [TextDomainManager defaultDomain]
> + ifFalse: [package name])!
>
> Item was changed:
> ----- Method: TextDomainManager classSide>>allKnownDomains (in category
> 'accessing') -----
> allKnownDomains
> + "Every package has it's own text domain now so it's not necessary to keep
> a registry of all domains, we can simply return all the packages in the
> image.
> + PROBLEM: If a package doesn't contain translations, it won't have a mo
> file but the GetTextTranslator will try to load it anyway. This happens when
> we switch languages. So far I tested it briefly and it seems to work..."
> + ^PackageOrganizer default packageNames!
> - | domains |
> - domains _ Set new.
> - domains addAll: Packages values.
> - domains add: self defaultDomain.
> - ^domains
> - !
>
> Item was changed:
> ----- Method: TextDomainManager classSide>>defaultDomain: (in category
> 'accessing') -----
> defaultDomain: aDomainName
> + defaultDomain := aDomainName!
> - DefaultDomain _ aDomainName!
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>unregisterDomain: (in category
> 'accessing') -----
> - unregisterDomain: domainName
> - DomainInfos removeKey: domainName.
> - self refresh.
> - NaturalLanguageTranslator domainUnregistered: domainName.
> - !
>
> Item was removed:
> - ----- Method: TextDomainInfo>>categories (in category 'accessing') -----
> - categories
> - ^categories!
>
> Item was removed:
> - ----- Method: TextDomainInfo>>matchedPackages (in category 'accessing')
> -----
> - matchedPackages
> - "Returns all the packages with this domain"
> - ^PackageInfo allPackages select: [:package | self includesPackage:
> package name]!
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>registerPackage:domain: (in
> category 'accessing') -----
> - registerPackage: aPackageName domain: aDomainName
> - | domInfo |
> - domInfo _ self domainInfoFor: aDomainName.
> - domInfo packages add: aPackageName asSymbol.
> - "self refresh."
> - Packages at: aPackageName put: aDomainName
> - !
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>refresh (in category
> 'private') -----
> - refresh
> - Packages := Dictionary new.
> - DomainInfos keysAndValuesDo: [:domainName :domainInfo |
> - domainInfo matchedPackages do: [:package |
> - Packages at: package name ifPresent: [:err| self
> error: 'Package ', (package name asString) , ' belongs to multiple
> domains'].
> - Packages at: package name put: domainName.
> - ]
> - ]
> - !
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>domainInfoFor: (in category
> 'private') -----
> - domainInfoFor: domainName
> - ^DomainInfos at: domainName ifAbsentPut: [ self registerDomain:
> domainName]!
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>domainInfos (in category
> 'private') -----
> - domainInfos
> - ^DomainInfos!
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>domainForClass: (in category
> 'accessing') -----
> - domainForClass: aClass
> - ^Classes at: aClass theNonMetaClass name ifAbsent: [self
> defaultDomain]!
>
> Item was removed:
> - ----- Method: TextDomainInfo>>packages (in category 'accessing') -----
> - packages
> - ^packages!
>
> Item was removed:
> - Object subclass: #TextDomainInfo
> - instanceVariableNames: 'categoryPrefixes categories packages'
> - classVariableNames: ''
> - poolDictionaries: ''
> - category: 'System-Localization'!
> -
> - !TextDomainInfo commentStamp: '<historical>' prior: 0!
> - I hold criteria for deciding wheter a systemCategory belongs to domain.
> - - categoryPrefixes is collection of prefix of class category.
> - - categories is for specifying fine grained criterion.
> - !
>
> Item was removed:
> - ----- Method: TextDomainInfo>>includesPackage: (in category 'accessing')
> -----
> - includesPackage: packageName
> - ^packages includes: packageName!
>
> Item was removed:
> - ----- Method: TextDomainInfo>>initialize (in category
> 'initialize-release') -----
> - initialize
> - categoryPrefixes _ Set new.
> - categories _ IdentitySet new.
> - packages := Set new. !
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>registerDomain: (in category
> 'accessing') -----
> - registerDomain: domainName
> - | domInfo |
> - domInfo _ TextDomainInfo new.
> - DomainInfos at: domainName put: domInfo.
> - NaturalLanguageTranslator domainRegistered: domainName.
> - ^domInfo!
>
> Item was removed:
> - ----- Method: TextDomainInfo>>categoryPrefixes (in category 'accessing')
> -----
> - categoryPrefixes
> - ^categoryPrefixes!
>
> Item was removed:
> - ----- Method: TextDomainManager classSide>>domainForPackageNamed: (in
> category 'accessing') -----
> - domainForPackageNamed: packageName
> - ^Packages at: packageName ifAbsent: [self defaultDomain]!
>
> _______________________________________________
> etoys-dev mailing list
> etoys-dev at squeakland.org
> http://lists.squeakland.org/mailman/listinfo/etoys-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakland.org/pipermail/etoys-dev/attachments/20100513/d04b3adc/attachment-0001.html
More information about the etoys-dev
mailing list