"{ Package: 'stx:libscm/mercurial' }"
Object subclass:#HGWorkingCopyFile
instanceVariableNames:'wc children filename'
classVariableNames:''
poolDictionaries:'GitStatusCodes'
category:'SCM-Mercurial-Core'
!
!HGWorkingCopyFile class methodsFor:'instance creation'!
wc: aGitWorkingCopy path: aStringOrFilename
^self new setWorkingCopy: aGitWorkingCopy path: aStringOrFilename
"Created: / 24-09-2012 / 13:52:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopyFile methodsFor:'accessing'!
pathNameRelative
^self == wc root
ifTrue:[wc root pathName]
ifFalse:[filename pathName copyFrom: (wc root pathName size + 2)]
"Created: / 25-09-2012 / 00:28:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
status
^wc statusOf: filename.
"Created: / 24-09-2012 / 22:27:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopyFile methodsFor:'delegating'!
doesNotUnderstand: aMessage
^(filename respondsTo: aMessage selector) ifTrue:[
aMessage sendTo: filename
] ifFalse:[
super doesNotUnderstand: aMessage
].
"Created: / 24-09-2012 / 13:46:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopyFile methodsFor:'initialization'!
setWorkingCopy: aHGWorkingCopy path: aStringOrFilename
wc := aHGWorkingCopy.
filename := aStringOrFilename asFilename.
"Created: / 24-09-2012 / 13:53:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopyFile methodsFor:'instance creation'!
/ aString
^self construct: aString
"Created: / 24-09-2012 / 13:49:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
construct: aString
^(aString includes: Filename separator) ifTrue:[
self components: (aString tokensBasedOn: Filename separator)
] ifFalse:[
self component: aString
]
"Created: / 24-09-2012 / 13:50:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopyFile methodsFor:'instance creation-private'!
component: aString
children isNil ifTrue: [ children := Dictionary new ].
^children
at: aString
ifAbsentPut:[HGWorkingCopyFile wc: wc path: (filename construct: aString)]
"Created: / 24-09-2012 / 23:26:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 17-10-2012 / 13:50:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
components: anArray"OfStrings"
^anArray inject: self into:[:entry :name | entry component: name ]
"Created: / 24-09-2012 / 23:25:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopyFile methodsFor:'printing & storing'!
printOn:aStream
"append a printed representation if the receiver to the argument, aStream"
| path |
aStream nextPut:$[.
path := filename pathName.
path := path copyFrom: wc path pathName size + 1.
aStream nextPutAll: path.
aStream nextPut:$].
"Modified: / 17-10-2012 / 13:51:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!HGWorkingCopyFile class methodsFor:'documentation'!
version_SVN
^ '$Id:: $'
! !