module Grape::DSL::Helpers::ClassMethods

def define_boolean_in_mod(mod)

def define_boolean_in_mod(mod)
  return if defined? mod::Boolean
  mod.const_set(:Boolean, Grape::API::Boolean)
end

def helpers(*new_modules, &block)

Other tags:
    Example: Include many modules -
    Example: Define some helpers. -

Parameters:
  • block (Block) -- optional block of methods to include
  • new_modules (Array) -- optional array of modules to include
def helpers(*new_modules, &block)
  include_new_modules(new_modules)
  include_block(block)
  include_all_in_scope if !block && new_modules.empty?
end

def include_all_in_scope

def include_all_in_scope
  Module.new.tap do |mod|
    namespace_stackable(:helpers).each { |mod_to_include| mod.include mod_to_include }
    change!
  end
end

def include_block(block)

def include_block(block)
  return unless block
  Module.new.tap do |mod|
    make_inclusion(mod) { mod.class_eval(&block) }
  end
end

def include_new_modules(modules)

def include_new_modules(modules)
  return if modules.empty?
  modules.each { |mod| make_inclusion(mod) }
end

def inject_api_helpers_to_mod(mod, &block)

def inject_api_helpers_to_mod(mod, &block)
  mod.extend(BaseHelper) unless mod.is_a?(BaseHelper)
  yield if block
  mod.api_changed(self)
end

def make_inclusion(mod, &block)

def make_inclusion(mod, &block)
  define_boolean_in_mod(mod)
  inject_api_helpers_to_mod(mod, &block)
  namespace_stackable(:helpers, mod)
end