Class: RubyTransform::Registry

Inherits:
HashWithIndifferentAccess
  • Object
show all
Defined in:
lib/ruby_transform/registry.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](name) ⇒ Object



7
8
9
# File 'lib/ruby_transform/registry.rb', line 7

def self.[](name)
  instance[name]
end

.[]=(name, value) ⇒ Object



10
11
12
# File 'lib/ruby_transform/registry.rb', line 10

def self.[]=(name, value)
  instance[name] = value
end

.configure(&block) ⇒ Object



14
15
16
17
18
# File 'lib/ruby_transform/registry.rb', line 14

def self.configure(&block)
  instance.tap do |registry|
    registry.instance_eval(&block) if block
  end
end

.instanceObject



3
4
5
# File 'lib/ruby_transform/registry.rb', line 3

def self.instance
  @registry ||= new
end

Instance Method Details

#register(name, transform = nil, &block) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/ruby_transform/registry.rb', line 20

def register(name, transform = nil, &block)
  if block
    self[name.to_s] = RubyTransform::Transformers::Custom.new(&block)
  elsif transform.is_a?(Array)
    self[name.to_s] = RubyTransform::Transformers::Composite.new(transform.map {|t|
      if t.is_a?(Symbol) or t.is_a?(String)
        self[t] or raise ArgumentError, "#{t} is not a registered transform name."
      else
        t
      end
    })
  elsif transform.is_a?(RubyTransform::Transformer)
    self[name.to_s] = transform
  else
    raise ArgumentError, "Please provide a transform or custom block processor."
  end
end