Class: Hecks::Bluebook::ProjectLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/hecks/bluebook/project_loader.rb

Overview

Boots each discovered directory and feeds its declarations into the deterministic project register. Discovery and FQN registration live in their own objects so either can be used without executing domains.

Constant Summary collapse

Entry =
ProjectRegister::Entry
DuplicateFqn =
ProjectRegister::DuplicateFqn
MissingRealm =
ProjectRegister::MissingRealm
LatestMismatch =
ProjectRegister::LatestMismatch

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root, discovery: ProjectDiscovery.new(root), register: ProjectRegister.new) ⇒ ProjectLoader

Returns a new instance of ProjectLoader.



19
20
21
22
23
# File 'lib/hecks/bluebook/project_loader.rb', line 19

def initialize(root, discovery: ProjectDiscovery.new(root), register: ProjectRegister.new)
  @root      = File.expand_path(root)
  @discovery = discovery
  @register  = register
end

Instance Attribute Details

#discoveryObject (readonly)

Returns the value of attribute discovery.



15
16
17
# File 'lib/hecks/bluebook/project_loader.rb', line 15

def discovery
  @discovery
end

#registerObject (readonly)

Returns the value of attribute register.



15
16
17
# File 'lib/hecks/bluebook/project_loader.rb', line 15

def register
  @register
end

#rootObject (readonly)

Returns the value of attribute root.



15
16
17
# File 'lib/hecks/bluebook/project_loader.rb', line 15

def root
  @root
end

Class Method Details

.load(root) ⇒ Object



17
# File 'lib/hecks/bluebook/project_loader.rb', line 17

def self.load(root) = new(root).load

Instance Method Details

#commandsObject



36
# File 'lib/hecks/bluebook/project_loader.rb', line 36

def commands = register.commands

#entriesObject



33
# File 'lib/hecks/bluebook/project_loader.rb', line 33

def entries = register.entries

#fetch(address) ⇒ Object



34
# File 'lib/hecks/bluebook/project_loader.rb', line 34

def fetch(address) = register.fetch(address)

#include?(address) ⇒ Boolean

Returns:

  • (Boolean)


35
# File 'lib/hecks/bluebook/project_loader.rb', line 35

def include?(address) = register.include?(address)

#loadObject



25
26
27
28
29
30
31
# File 'lib/hecks/bluebook/project_loader.rb', line 25

def load
  discovery.bluebook_directories.each do |directory|
    runtime = Runtime.boot(directory)
    register.register(runtime.registry.bluebooks.values, runtime.registry, runtime, directory)
  end
  self
end

#queriesObject



37
# File 'lib/hecks/bluebook/project_loader.rb', line 37

def queries  = register.queries