Sha256: 110b526a69ae884247deec0c122f707ba77799951af425005abe16bc2e0921ae

Contents?: true

Size: 999 Bytes

Versions: 68

Compression:

Stored size: 999 Bytes

Contents

module Terraspace::Compiler
  module HelperExtender
  private
    def extend_module_level_helpers
      full_dir = "#{@mod.root}/config/helpers"
      Dir.glob("#{full_dir}/**/*").each do |path|
        regexp = Regexp.new(".*/helpers/")
        klass = path.sub(regexp, '').sub('.rb','').camelcase
        klass = "#{mod_namespace}::#{klass}"
        require path # able to use require instead of load since each helper has unique namespace
        send :extend, klass.constantize
      end
    end

    # IE: mod_namespace = Terraspace::Module::Demo
    # Use separate namespaces scope with module name so custom helper methods from different modules are isolated.
    def mod_namespace
      mod_name = @mod.name.camelcase
      ns = "Terraspace::#{@mod.type.camelcase}".constantize # IE: Terraspace::Module or Terraspace::Stack
      if ns.const_defined?(mod_name.to_sym)
        "#{ns}::#{mod_name}".constantize
      else
        ns.const_set(mod_name, Module.new)
      end
    end
  end
end

Version data entries

68 entries across 68 versions & 1 rubygems

Version Path
terraspace-2.2.17 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.16 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.15 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.14 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.13 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.12 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.11 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.10 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.9 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.8 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.7 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.6 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.5 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.4 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.3 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.2 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.1 lib/terraspace/compiler/helper_extender.rb
terraspace-2.2.0 lib/terraspace/compiler/helper_extender.rb
terraspace-2.1.7 lib/terraspace/compiler/helper_extender.rb
terraspace-2.1.6 lib/terraspace/compiler/helper_extender.rb