class Mandrake::Translator

A class for being delegated from the Mandrake::Builder class @!visibility private

Public Class Methods

new() click to toggle source

Construcsts an instance of Mandrake::Translator

# File lib/mandrake/translator.rb, line 8
def initialize
  @middlewares = []
end

Public Instance Methods

env() click to toggle source

The string builder for building an expression @see Mandrake::DSL::Env

# File lib/mandrake/translator.rb, line 33
def env
  DSL::Env.stringify
end
request() click to toggle source

The string builder for building an expression @see Mandrake::DSL::Request

# File lib/mandrake/translator.rb, line 39
def request
  DSL::Request.stringify
end
translate() click to toggle source

Translates middlewares to compatible data with Rack::Builder's processing @return [Array]

# File lib/mandrake/translator.rb, line 22
def translate
  @middlewares.map do |middleware|
    if   middleware.conditional?
    then proc{|app| Wrapper.new(app, middleware.construct(app), middleware.condition) }
    else proc{|app| middleware.construct(app) }
    end
  end
end
use(middleware, *args, **options, &block) click to toggle source

@overload Rack::Builder#use(middleware, *args, options = {}) @param [Hash] options The options can be included :if and :unless keys @return [Array] All registered middlewares

# File lib/mandrake/translator.rb, line 15
def use(middleware, *args, **options, &block)
  parameters = extract_parameters_from(options)
  @middlewares << Any.new(middleware, (options.empty? ? args : (args << options)), parameters, block)
end

Private Instance Methods

extract_parameters_from(options) click to toggle source

Extracts :if and :unless pairs from options @!visibility private

# File lib/mandrake/translator.rb, line 45
def extract_parameters_from(options)
  [:if, :unless].inject({}) do |parameters, key|
    expression = parameters[key] = options.delete(key) if options[key]
    if expression.instance_of?(Proc) && !expression.lambda?
      parameters[key] = instance_eval(&expression) 
    end
    parameters
  end
end