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 forPharo12: [ self package ifNotNil: [ :aPackage | self packageTag ifNil: [ aPackage isString ifTrue: [ aPackage ] ifFalse: [ aPackage name ] ] ifNotNil: [ :tag | ({self packageOrganizer undefinedPackage undefinedTag name. RPackage rootTagName} includes: tag) ifTrue: [aPackage isString ifTrue: [ aPackage ] ifFalse: [ aPackage name ] ] ifFalse: [(aPackage isString ifTrue: [ aPackage ] ifFalse: [ aPackage name]) , '-' , tag ] ] ] ] forPharo11AndPharo10: [ category ] and Class>>#category category "Answer the system organization category for the receiver. First check whether the category name stored in the ivar is still correct and only if this fails look it up (latter is much more expensive)" | result | self basicCategory ifNotNil: [ :symbol | ((self environment organization listAtCategoryNamed: symbol) includes: self name) ifTrue: [ ^symbol ] ]. result := (self environment organization categoryOfElement: self name) ifNil: [ #Unclassified ] ifNotNil: [:value | value]. self basicCategory: result. ^ result 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
}