Class: Kapusta::Compiler::MacroImporter

Inherits:
Object
  • Object
show all
Defined in:
lib/kapusta/compiler/macro_importer.rb

Constant Summary collapse

EXTENSIONS =
%w[kapm kap fnlm fnl].freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path: nil, loading: nil, error_class: Kapusta::Error) ⇒ MacroImporter

Returns a new instance of MacroImporter.



14
15
16
17
18
# File 'lib/kapusta/compiler/macro_importer.rb', line 14

def initialize(path: nil, loading: nil, error_class: Kapusta::Error)
  @path = path
  @loading = loading || []
  @error_class = error_class
end

Class Method Details

.module_label(module_arg) ⇒ Object



10
11
12
# File 'lib/kapusta/compiler/macro_importer.rb', line 10

def self.module_label(module_arg)
  module_arg.is_a?(Symbol) ? module_arg.to_s.tr('_', '-') : module_arg.to_s
end

Instance Method Details

#load(module_arg, import_form) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/kapusta/compiler/macro_importer.rb', line 20

def load(module_arg, import_form)
  module_label = self.class.module_label(module_arg)
  absolute_path = resolve_macro_module(module_arg) ||
                  raise(import_error(:import_macros_module_not_found, import_form, module: module_label))

  raise import_error(:import_macros_cycle, import_form, module: module_label) if @loading.include?(absolute_path)

  load_macro_module(absolute_path, module_label, import_form)
end