Sha256: c49ebd23a163ad2e1720cb153eec3689df9d0260a645799e9f7e1b298c3f9444

Contents?: true

Size: 1 KB

Versions: 4

Compression:

Stored size: 1 KB

Contents

# frozen_string_literal: true

require_relative "wizard/version"
require_relative "wizard/concept_type"
require_relative "wizard/concept_generator"
require_relative "wizard/file_helper"
require_relative "wizard/configuration"

module Wizard
  def self.pool
    @pool ||= {}
  end

  def self.fetch_generator(type)
    pool[type] ||= ConceptGenerator.new(type: type)
  end

  def self.configuration
    @configuration ||= Configuration.new
  end

  def self.configure
    yield(configuration)
  end

  def self.generate(model, **args)
    raise StandardError, "[model] arg is required" if model.nil?

    raise StandardError, "[actions] arg is required" unless args.key? :actions

    concepts = ConceptType::ALL.values
    actions = args[:actions]

    concepts -= args[:except] if args.key? :except
    concepts = args[:only]    if args.key? :only

    actions.each do |action|
      concepts.each do |concept|
        fetch_generator(concept.to_s).generate(model, action.to_s, args[:context]&.to_s)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
trailblazer-wizard-0.0.4 lib/wizard.rb
trailblazer-wizard-0.0.3 lib/wizard.rb
trailblazer-wizard-0.0.2 lib/wizard.rb
trailblazer-wizard-0.0.1 lib/wizard.rb