mercurial/HGStatus.st
author vranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
Fri, 09 Nov 2012 12:09:13 +0000
changeset 38 c3d02ed6a645
parent 37 ce1d3916f7ad
child 54 66045198bfbc
permissions -rw-r--r--
- HGWorkingCopyFile changed: #status - HGCommandParser changed: #nextLine #nextSpace - HGTests changed: #test_01a - HGStatus added: #theOnlyInstance - HGCommand class definition added: #initialize changed: #execute

"{ Package: 'stx:libscm/mercurial' }"

Singleton subclass:#HGStatus
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'SCM-Mercurial-Core'
!

HGStatus subclass:#Added
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:HGStatus
!

HGStatus subclass:#Clean
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:HGStatus
!

HGStatus subclass:#Ignored
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:HGStatus
!

HGStatus subclass:#Missing
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:HGStatus
!

HGStatus subclass:#Modified
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:HGStatus
!

HGStatus subclass:#NotTracked
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:HGStatus
!

HGStatus subclass:#Removed
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	privateIn:HGStatus
!


!HGStatus class methodsFor:'instance creation'!

forCode: aCharacter
    self allSubclasses do:[:cls|
        cls code == aCharacter ifTrue:[ ^ cls theOnlyInstance ]
    ].
    self error:'Invalid status code: ', aCharacter

    "Created: / 23-10-2012 / 10:56:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

theOnlyInstance
    theOnlyInstance isNil ifTrue:[
        Lock critical:[
            theOnlyInstance isNil ifTrue:[
                theOnlyInstance := self new
            ].
        ]
    ].
    ^ theOnlyInstance.

    "Created: / 09-11-2012 / 12:04:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
    i.e., $A for added, $!! for missing, ..."

    ^self subclassResponsibility

    "Created: / 22-10-2012 / 21:27:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus class methodsFor:'accessing-statuses'!

added
    ^ Added theOnlyInstance

    "Created: / 23-10-2012 / 09:56:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

clean
    ^ Clean theOnlyInstance

    "Created: / 23-10-2012 / 09:56:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

ignored
    ^ Ignored theOnlyInstance

    "Created: / 23-10-2012 / 09:57:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

missing
    ^ Missing theOnlyInstance

    "Created: / 23-10-2012 / 09:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

notTracked
    ^ NotTracked theOnlyInstance

    "Created: / 23-10-2012 / 09:57:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

removed
    ^ Removed theOnlyInstance

    "Created: / 23-10-2012 / 09:56:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus methodsFor:'accessing'!

code
    ^ self class code
!

name
    "Return a human-readable name of the status code,
    i.e., 'modified', 'ignored', ..."

    ^self class nameWithoutPrefix asLowercase

    "Created: / 22-10-2012 / 21:26:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 23-10-2012 / 09:58:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus methodsFor:'testing'!

isAdded
    ^ false
!

isClean
    ^ false
!

isIgnored
    ^ false
!

isMissing
    ^ false
!

isModified
    ^ false
!

isNotTracked
    ^ false
!

isRemoved
    ^ false
! !

!HGStatus::Added class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
     i.e., $A for added, $!! for missing, ..."

    ^ $A

    "Modified: / 23-10-2012 / 09:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus::Added methodsFor:'testing'!

isAdded
    ^ true
! !

!HGStatus::Clean class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
     i.e., $A for added, $!! for missing, ..."

    ^ $C

    "Modified: / 23-10-2012 / 09:57:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus::Clean methodsFor:'testing'!

isClean
    ^ true
! !

!HGStatus::Ignored class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
     i.e., $A for added, $!! for missing, ..."

    ^ $I

    "Modified: / 23-10-2012 / 09:57:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus::Ignored methodsFor:'testing'!

isIgnored
    ^ true
! !

!HGStatus::Missing class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
     i.e., $A for added, $!! for missing, ..."

    ^ $!!

    "Modified: / 23-10-2012 / 09:57:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus::Missing methodsFor:'testing'!

isMissing
    ^ true
! !

!HGStatus::Modified class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
     i.e., $A for added, $!! for missing, ..."

    ^ $M

    "Modified: / 23-10-2012 / 09:57:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus::Modified methodsFor:'testing'!

isModified
    ^ true
! !

!HGStatus::NotTracked class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
     i.e., $A for added, $!! for missing, ..."

    ^ $?

    "Modified: / 23-10-2012 / 09:58:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus::NotTracked methodsFor:'testing'!

isNotTracked
    ^ true
! !

!HGStatus::Removed class methodsFor:'accessing'!

code
    "Return one-char code as used by 'hg status' command,
     i.e., $A for added, $!! for missing, ..."

    ^ $R

    "Modified: / 23-10-2012 / 11:24:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!HGStatus::Removed methodsFor:'testing'!

isRemoved
    ^ true
! !

!HGStatus class methodsFor:'documentation'!

version_SVN
    ^ '$Id::                                                                                                                        $'
! !