Sha256: 0e9e95eae7265e7268b8cf9507958e025111827d9f145ace6ac5eb99c87694eb

Contents?: true

Size: 1.27 KB

Versions: 175

Compression:

Stored size: 1.27 KB

Contents

module RailsWizard
  module Recipes
    @@categories = {}
    @@list = {}

    def self.add(recipe)
      RailsWizard::Recipes.const_set ActiveSupport::Inflector.camelize(recipe.key), recipe
      @@list[recipe.key] = recipe
      (@@categories[recipe.category.to_s] ||= []) << recipe.key
      @@categories[recipe.category.to_s].uniq!
      recipe
    end

    def self.clear
      self.list.each do |recipe_key|
        send(:remove_const, ActiveSupport::Inflector.camelize(recipe_key))
      end
      @@categories = {}
      @@list = {}
    end

    def self.[](key)
      @@list[key.to_s]
    end

    def self.list
      @@list.keys.sort
    end

    def self.list_classes
      @@list.values.sort_by{|c| c.key}
    end

    def self.categories
      @@categories.keys.sort
    end

    def self.for(category)
      (@@categories[category.to_s] || []).sort
    end

    def self.remove_from_category(category, recipe)
      (@@categories[category.to_s] ||= []).delete(recipe.key)
    end

    def self.add_from_directory(directory)
      Dir.foreach(directory) do |file|
        path = File.join(directory, file)
        next unless path.match /\.rb$/
        key = File.basename(path, '.rb')
        recipe = Recipe.generate(key, File.open(path))
        add(recipe)
      end
    end
  end
end

Version data entries

175 entries across 175 versions & 3 rubygems

Version Path
rails_apps_composer-3.0.0 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.13 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.12 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.11 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.10 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.9 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.8 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.7 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.6 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.5 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.4 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.3 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.2 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.1 lib/rails_wizard/recipes.rb
rails_apps_composer-2.6.0 lib/rails_wizard/recipes.rb
rails_apps_composer-2.5.1 lib/rails_wizard/recipes.rb
rails_apps_composer-2.5.0 lib/rails_wizard/recipes.rb
rails_apps_composer-2.4.44 lib/rails_wizard/recipes.rb
rails_apps_composer-2.4.43 lib/rails_wizard/recipes.rb
rails_apps_composer-2.4.42 lib/rails_wizard/recipes.rb