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)
- 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