"{ Package: 'stx:goodies/ring/core' }"
"{ NameSpace: Smalltalk }"
RGElement subclass:#RGComment
instanceVariableNames:'content author time'
classVariableNames:''
poolDictionaries:''
category:'Ring-Core-Kernel'
!
RGComment comment:'RGComment is a first-class representation of class''s comments'
!
!RGComment methodsFor:'accessing'!
fullName
^ (self parent name, ' comment') asSymbol
! !
!RGComment methodsFor:'accessing - backend'!
author
^ self backend forBehavior classCommentAuthorFor: self
!
author: aString
self backend forBehavior setClassCommentAuthorFor: self to: aString.
self announcer behaviorCommentModified: self parent.
!
content
^ self backend forBehavior classCommentContentFor: self
!
content: aString
self backend forBehavior setClassCommentContentFor: self to: aString.
self announcer behaviorCommentModified: self parent.
!
time
^ self backend forBehavior classCommentTimeFor: self
!
time: aDateAndTime
self backend forBehavior setClassCommentTimeFor: self to: aDateAndTime.
self announcer behaviorCommentModified: self parent.
! !
!RGComment methodsFor:'backward compatibility'!
sourceCode
^ self content
! !
!RGComment methodsFor:'default model values'!
defaultAuthor
^ ''
!
defaultContent
^ ''
!
defaultTime
^ Timestamp epoch
! !
!RGComment methodsFor:'initialization'!
initialize
super initialize.
content := self unresolvedValue: self defaultContent.
author := self unresolvedValue: self defaultAuthor.
time := self unresolvedValue: self defaultTime.
!
initializeUnresolved
super initializeUnresolved.
content := self unresolvedValue: self defaultContent.
author := self unresolvedValue: self defaultAuthor.
time := self unresolvedValue: self defaultTime.
! !
!RGComment methodsFor:'managing container'!
addoptToParentStub
super addoptToParentStub.
self environment backend createUnresolvedClassGroupFor: self parent
!
defaultParentStub
^ self defaultClassStub
! !
!RGComment methodsFor:'printing'!
printOn: aStream
self parent name ifNotNil: [
aStream nextPutAll: self parent name;
nextPutAll: ' ' ].
aStream nextPutAll: self name asString
! !
!RGComment methodsFor:'private - backend interface'!
pvtAuthor
^ author value
!
pvtAuthor: aString
^ author := aString
!
pvtContent
^ content value
!
pvtContent: aString
^ content := aString
!
pvtResolvableProperties
^ super pvtResolvableProperties, {
#content -> content.
#author -> author.
#time -> time.
}
!
pvtTime
^ time value
!
pvtTime: aDateAndTime
^ time := aDateAndTime
! !
!RGComment methodsFor:'resolving'!
makeResolved
super makeResolved.
content := self content markAsRingResolved.
author := self author markAsRingResolved.
time := self time markAsRingResolved.
! !
!RGComment methodsFor:'testing'!
isComment
^ true
!
isEmptyOrNil
^ self content isEmptyOrNil
! !