Class: EacRubyUtils::RequireSub

Inherits:
Object
  • Object
show all
Includes:
Listable
Defined in:
lib/eac_ruby_utils/require_sub.rb

Defined Under Namespace

Classes: SubFile

Constant Summary collapse

INCLUDE_MODULES_MAP =
{
  nil => nil,
  false => nil,
  true => :include,
  include: :include,
  prepend: :prepend
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file, options = {}) ⇒ RequireSub

Returns a new instance of RequireSub.



28
29
30
31
# File 'lib/eac_ruby_utils/require_sub.rb', line 28

def initialize(file, options = {})
  @file = file
  @options = self.class.lists.option.hash_keys_validate!(options)
end

Instance Attribute Details

#fileObject (readonly)

Returns the value of attribute file.



26
27
28
# File 'lib/eac_ruby_utils/require_sub.rb', line 26

def file
  @file
end

#optionsObject (readonly)

Returns the value of attribute options.



26
27
28
# File 'lib/eac_ruby_utils/require_sub.rb', line 26

def options
  @options
end

Instance Method Details

#applyObject



33
34
35
36
# File 'lib/eac_ruby_utils/require_sub.rb', line 33

def apply
  require_sub_files
  include_modules
end

#baseObject



38
39
40
# File 'lib/eac_ruby_utils/require_sub.rb', line 38

def base
  options[OPTION_BASE] || raise('Option :base not setted')
end

#base?Boolean

Returns:



42
43
44
# File 'lib/eac_ruby_utils/require_sub.rb', line 42

def base?
  options[OPTION_BASE] ? true : false
end

#include_modulesObject



46
47
48
# File 'lib/eac_ruby_utils/require_sub.rb', line 46

def include_modules
  sub_files.each(&:include_module)
end

#include_or_prepend_methodObject

Raises:

  • (::ArgumentError)


50
51
52
53
54
55
56
# File 'lib/eac_ruby_utils/require_sub.rb', line 50

def include_or_prepend_method
  return INCLUDE_MODULES_MAP.fetch(options[OPTION_INCLUDE_MODULES]) if
    INCLUDE_MODULES_MAP.key?(options[OPTION_INCLUDE_MODULES])

  raise ::ArgumentError, "Invalid value for 'options[OPTION_INCLUDE_MODULES]':" \
     " \"#{options[OPTION_INCLUDE_MODULES]}\""
end

#require_sub_filesObject



58
59
60
# File 'lib/eac_ruby_utils/require_sub.rb', line 58

def require_sub_files
  sub_files.each(&:require_file)
end

#sub_filesObject



62
63
64
65
# File 'lib/eac_ruby_utils/require_sub.rb', line 62

def sub_files
  @sub_files ||= Dir["#{File.dirname(file)}/#{::File.basename(file, '.*')}/*.rb"].sort
                   .map { |path| SubFile.new(self, path) }
end