core/RGComment.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 23 Dec 2020 08:46:20 +0000
changeset 10 1fa4cd506c87
parent 9 d64df1abdf2a
permissions -rw-r--r--
core: use `Timestamp` instead of (Pharo) `DateAndTime`

"{ 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 
! !