Module: AbstractController::Helpers::Resolution

Included in:
AbstractController::Helpers, ClassMethods
Defined in:
lib/abstract_controller/helpers.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#all_helpers_from_path(path) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/abstract_controller/helpers.rb', line 64

def all_helpers_from_path(path)
  helpers = Array(path).flat_map do |_path|
    names = Dir["#{_path}/**/*_helper.rb"].map { |file| file[_path.to_s.size + 1..-"_helper.rb".size - 1] }
    names.sort!
  end
  helpers.uniq!
  helpers
end

#helper_modules_from_paths(paths) ⇒ Object



73
74
75
# File 'lib/abstract_controller/helpers.rb', line 73

def helper_modules_from_paths(paths)
  modules_for_helpers(all_helpers_from_path(paths))
end

#modules_for_helpers(modules_or_helper_prefixes) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/abstract_controller/helpers.rb', line 49

def modules_for_helpers(modules_or_helper_prefixes)
  modules_or_helper_prefixes.flatten.map! do |module_or_helper_prefix|
    case module_or_helper_prefix
    when Module
      module_or_helper_prefix
    when String, Symbol
      helper_prefix = module_or_helper_prefix.to_s
      helper_prefix = helper_prefix.camelize unless helper_prefix.start_with?(/[A-Z]/)
      "#{helper_prefix}Helper".constantize
    else
      raise ArgumentError, "helper must be a String, Symbol, or Module"
    end
  end
end