Module: Jade::ModuleLoader

Extended by:
ModuleLoader
Included in:
ModuleLoader
Defined in:
lib/jade/module_loader.rb,
lib/jade/module_loader/cache.rb,
lib/jade/module_loader/normalize.rb,
lib/jade/module_loader/dependency_graph.rb,
lib/jade/module_loader/topological_sort.rb,
lib/jade/module_loader/dependency_resolver.rb

Defined Under Namespace

Modules: Cache, DependencyResolver, Normalize, TopologicalSort Classes: CycleDependencyError, DependencyGraph

Instance Method Summary collapse

Instance Method Details

#emit(registry, path: '.jade/build') ⇒ Object



37
38
39
40
41
42
43
44
45
# File 'lib/jade/module_loader.rb', line 37

def emit(registry, path: '.jade/build')
  registry
    .modules
    .each_value
    .reject { Stdlib.is_intrinsic?(it) }
    .each { write_entry(it, path) }

  registry
end

#load(source_root, path, cache_dir: nil, tolerant: false, overlays: {}) ⇒ Object



22
23
24
25
26
27
# File 'lib/jade/module_loader.rb', line 22

def load(source_root, path, cache_dir: nil, tolerant: false, overlays: {})
  Source.load(source_root, path, overlays:)
    .then { load_(it, new_registry(source_root, overlays:), entry: true) }
    .then { Stdlib.apply(it) }
    .then { compile(it, cache_dir:, tolerant:) }
end

#load_import(module_name, registry) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/jade/module_loader.rb', line 29

def load_import(module_name, registry)
  return registry if registry.get(module_name)&.ast

  Source
    .load_from_module_name(registry.source_root, module_name, overlays: registry.overlays)
    .then { load_(it, registry) }
end