Changes regarding packages and package tags in Pharo 12

In Pharo 11 classes had a category that was the package name plus the package tag. A package organized was keeping the list of packages and a mapping between the class name and package.

GtIdentity category
  

In Pharo 12 there are explicit package and package tag objects. A class has a package tag and the package tag has the package. The package tag contains the list of classes and the page just thas a list of package tags.

GtIdentity package
  
GtIdentity packageTag
  

The package organizer maintains a dictionary by name with all packages.

In Pharo 12 all classes have a packageTag. By default it is an Uncategorized package tag.

The undefined package tag is considered the root package tag (PackageTag>>#isRoot).

In Pharo 11 a tag is root if it has the same name as the package.

In Pharo 12 a tag is root if it has the Undefined name

For backwards compatibility RGClassDefinition>>#category category <gtPharoPatch: #Pharo> ^ self forPharo12AndNewer: [ self package ifNotNil: [ :aPackage | self packageTag ifNil: [ aPackage isString ifTrue: [ aPackage ] ifFalse: [ aPackage name ] ] ifNotNil: [ :tag | ({self packageOrganizer undefinedPackage undefinedTag name. Package rootTagName} includes: tag) ifTrue: [aPackage isString ifTrue: [ aPackage ] ifFalse: [ aPackage name ] ] ifFalse: [(aPackage isString ifTrue: [ aPackage ] ifFalse: [ aPackage name]) , '-' , tag ] ] ] ] forPharo11: [ category ] and Class>>#category category "Answer the system organization category for the receiver." ^ self packageTag categoryName return the class category in Pharo 12 same as in Pharo 11. If there is an undefined root package it is not included in the definition.

{
	GtIdentity category.
	GtIdentity asClassDefinition category
}