Module: Avm::Sources::Base::Subs

Defined in:
lib/avm/sources/base/subs.rb

Constant Summary collapse

CONFIGURATION_SUBS_EXCLUDE_PATHS_KEY =
'subs.exclude_path'
CONFIGURATION_SUBS_INCLUDE_PATHS_KEY =
'subs.include_path'
SUBS_EXCLUDE_PATHS_DEFAULT =
[].freeze
SUBS_INCLUDE_PATHS_DEFAULT =
['sub/*'].freeze

Instance Method Summary collapse

Instance Method Details

#subsEnumerable<Avm::Sources::Base>

Returns:



16
17
18
19
20
21
# File 'lib/avm/sources/base/subs.rb', line 16

def subs
  subs_paths_to_search
    .map { |sub_path| ::Avm::Registry.sources.detect_optional(sub_path, parent: self) }
    .reject(&:blank?)
    .sort_by { |sub| [sub.path] }
end

#subs_paths_to_searchObject



23
24
25
26
27
28
29
30
31
# File 'lib/avm/sources/base/subs.rb', line 23

def subs_paths_to_search
  subs_include_paths.flat_map do |subs_include_path|
    ::Pathname.glob(path.join(subs_include_path)).reject do |sub_path|
      subs_exclude_paths.any? do |subs_exclude_path|
        sub_path.fnmatch?(path.join(subs_exclude_path).to_path)
      end
    end
  end
end