compiler/TFilesystemProvider.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 16 Sep 2015 05:29:43 +0100
changeset 11 6d39860d0fdb
parent 10 2b9beeac547e
child 16 17a2d1d9f205
permissions -rw-r--r--
First shot on #ifTrie:ifFalse: special form

"{ Package: 'jv:tea/compiler' }"

"{ NameSpace: Smalltalk }"

TEnvironmentProvider subclass:#TFilesystemProvider
	instanceVariableNames:'classpath'
	classVariableNames:''
	poolDictionaries:''
	category:'Languages-Tea-Compiler-Model-Provider'
!


!TFilesystemProvider class methodsFor:'instance creation'!

new
    "return an initialized instance"

    ^ self basicNew initialize.
! !

!TFilesystemProvider methodsFor:'accessing'!

classNamed:name 
    classpath do:[:each | 
        | classes |

        classes := self classNamed:name from:each.
        classes notEmptyOrNil ifTrue:[
            ^ classes.
        ]
    ].
    ^ nil

    "Created: / 14-09-2015 / 15:08:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

classNamed:name from:classpathentry 
    | dir file unit |

    dir := classpathentry asFilename.
    dir isDirectory ifFalse:[
        ^ nil
    ].
    file := dir / (name , '.tea').
    file isReadable ifFalse:[
        ^ nil
    ].
    unit := TSourceReader read:file.
    ^ unit classes detect:[:class | class name = name ] ifNone:[ nil ]

    "Created: / 14-09-2015 / 15:10:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!TFilesystemProvider methodsFor:'initialization'!

initialize
    classpath := OrderedCollection with: (Smalltalk packageDirectoryForPackageId: 'jv:tea') / 'libt'

    "Modified: / 14-09-2015 / 15:06:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!TFilesystemProvider class methodsFor:'documentation'!

version_HG

    ^ '$Changeset: <not expanded> $'
! !