Sha256: f680a7a0cdd8e20a609da76acae717eecd93cecb4f8b75eba6d5c803730c5594
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 KB
Contents
# frozen_string_literal: true require "pakyow/support/extension" require "pakyow/loader" module Pakyow class Application module Behavior # Maintains known aspects and loads them. # module Aspects extend Support::Extension apply_extension do setting :aspects, [] after "load" do config.aspects.each do |aspect| load_aspect(aspect) end end end class_methods do # Registers an app aspect by name. # def aspect(name) (config.aspects << name.to_sym).uniq! end end private def load_aspect(aspect, path: File.join(config.src, aspect.to_s), target: self.class) __load_aspect(aspect, path: path, target: target) end def __load_aspect(aspect, path: File.join(config.src, aspect.to_s), target: self.class) Dir.glob(File.join(path, "*.rb")) do |file_path| Loader.new(file_path).call(target) end Dir.glob(File.join(path, "*")).select { |sub_path| File.directory?(sub_path) }.each do |directory| __load_aspect(aspect, path: directory, target: target) end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
pakyow-core-1.0.1 | lib/pakyow/application/behavior/aspects.rb |
pakyow-core-1.0.0 | lib/pakyow/application/behavior/aspects.rb |