module Metamorpher

Based on blog.rubybestpractices.com/posts/aaronp/001_double_dispatch_dance.html

Constants

VERSION

Public Class Methods

builder() click to toggle source
# File lib/metamorpher.rb, line 12
def self.builder
  @builder ||= Builders::Ruby::Builder.new
end
configure(builder: :ast) click to toggle source
# File lib/metamorpher.rb, line 16
def self.configure(builder: :ast)
  configure_builder(builder)
end

Private Class Methods

builder_class_for(name) click to toggle source
# File lib/metamorpher.rb, line 27
def self.builder_class_for(name)
  namespace = name == :ast ? "AST" : name.to_s.capitalize
  Builders.const_get(namespace).const_get("Builder")
end
configure_builder(builder) click to toggle source
# File lib/metamorpher.rb, line 22
def self.configure_builder(builder)
  require "metamorpher/builders/#{builder}/builder"
  @builder = builder_class_for(builder).new
end