Class: Arborist::Loader::File

Inherits:
Arborist::Loader show all
Defined in:
lib/arborist/loader/file.rb

Overview

A loader for Arborist that knows how to load stuff from files on disk.

Constant Summary collapse

FILE_PATTERN =

The glob pattern to use for searching for files

'**/*.rb'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(directory) ⇒ File

Create a new loader that will read nodes from the specified directory.



16
17
18
19
# File 'lib/arborist/loader/file.rb', line 16

def initialize( directory )
  Arborist.load_all
  @directory = directory
end

Instance Attribute Details

#directoryObject (readonly)

The directory to load files from



23
24
25
# File 'lib/arborist/loader/file.rb', line 23

def directory
  @directory
end

Instance Method Details

#enumerator_for(arborist_class) ⇒ Object

Return an Enumerator that will instantiate and yield instances of the specified arborist_class for each file path in the loader’s directory.



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/arborist/loader/file.rb', line 60

def enumerator_for( arborist_class )
  return Enumerator.new do |yielder|
    self.paths.each do |file|
      objects = arborist_class.load( file )
      objects.each do |object|
        object.source = "file://%s" % [ file.expand_path ]
        yielder.yield( object )
      end
    end
  end
end

#monitorsObject

Return an Enumerator that yields Arborist::Monitors loaded from the target directory.



46
47
48
# File 'lib/arborist/loader/file.rb', line 46

def monitors
  return self.enumerator_for( Arborist::Monitor )
end

#nodesObject

Return an Enumerator that yields Arborist::Nodes loaded from the target directory.



39
40
41
# File 'lib/arborist/loader/file.rb', line 39

def nodes
  return self.enumerator_for( Arborist::Node )
end

#observersObject

Return an Enumerator that yields Arborist::Observers loaded from the target directory.



53
54
55
# File 'lib/arborist/loader/file.rb', line 53

def observers
  return self.enumerator_for( Arborist::Observer )
end

#pathsObject

Return an Enumerator



27
28
29
30
31
32
33
34
# File 'lib/arborist/loader/file.rb', line 27

def paths
  path = Pathname( self.directory )
  if path.directory?
    return Pathname.glob( path + FILE_PATTERN ).each
  else
    return [ path ].each
  end
end