Sha256: 7e03b8775b15d17f40deda7bb678e03845f0ca388110b959e6c91ca8e2f4d63e

Contents?: true

Size: 1.28 KB

Versions: 3

Compression:

Stored size: 1.28 KB

Contents

module Cardio
  class Mod
    class Loader
      # A SetLoader object loads all set modules for a list of mods.
      # The mods are given by a Mod::Dirs object.
      # SetLoader can use three different strategies to load the set modules.
      class SetLoader < Loader
        def template_class
          SetTemplate
        end

        def initialize args={}
          @no_all = args.delete :no_all
          super load_strategy: args[:load_strategy], mod_dirs: args[:mod_dirs]
        end

        def load_strategy_class strategy
          LoadStrategy.class_for_set strategy
        end

        def load
          super
          # Card::Set.process_base_modules
          Card::Set.clean_empty_modules
        end

        # does not include abstract
        def main_patterns
          method = @no_all ? :nonbase_codes : :codes
          Card::Set::Pattern.send method
        end

        def each_file &block
          # each_file_with_patterns :abstract, &block
          each_file_with_patterns(*main_patterns, &block)
        end

        def each_file_with_patterns *patterns, &block
          each_mod_dir :set do |base_dir|
            patterns.each do |pattern|
              each_file_in_dir base_dir, pattern.to_s, &block
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
card-1.103.2 lib/cardio/mod/loader/set_loader.rb
card-1.103.1 lib/cardio/mod/loader/set_loader.rb
card-1.103.0 lib/cardio/mod/loader/set_loader.rb