Class: Carbon::Compiler::Directive

Inherits:
Object
  • Object
show all
Defined in:
lib/carbon/compiler/directive.rb,
lib/carbon/compiler/directive/import.rb

Defined Under Namespace

Modules: Import

Constant Summary collapse

ATTACHING =
%w(doc extern).freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(node, file, index) ⇒ Directive

Returns a new instance of Directive.



18
19
20
21
22
# File 'lib/carbon/compiler/directive.rb', line 18

def initialize(node, file, index)
  @node = node
  @file = file
  @index = index
end

Class Method Details

.handle(name, &block) ⇒ Object



12
13
14
# File 'lib/carbon/compiler/directive.rb', line 12

def self.handle(name, &block)
  handlers[name.to_s] = block
end

.handlersObject



8
9
10
# File 'lib/carbon/compiler/directive.rb', line 8

def self.handlers
  @_handlers ||= {}
end

Instance Method Details

#attach?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/carbon/compiler/directive.rb', line 32

def attach?
  ATTACHING.include?(name)
end

#callObject



24
25
26
# File 'lib/carbon/compiler/directive.rb', line 24

def call
  instance_exec(&self.class.handlers.fetch(name.to_s))
end

#nameObject



28
29
30
# File 'lib/carbon/compiler/directive.rb', line 28

def name
  @node.value
end