Sha256: 8afe1d61ff5b4262713844460a3f1c283a16de6439ae68b74831a831b2388cf7

Contents?: true

Size: 677 Bytes

Versions: 9

Compression:

Stored size: 677 Bytes

Contents

module Slices
  module GeneratorMacros
    # Defines a generator method.
    #
    # e.g.
    #
    #     generator :home do
    #       Page.where(path: '/').first || Page.make(
    #         name: 'Home'
    #       )
    #     end
    #
    # Results in:
    #
    #     MyStandardTree.home
    #
    #
    # @param [Symbol] name
    # @param [Proc] block macro body
    #
    def generator name, &block
      define_singleton_method name, &block
      generators << name
    end

    # Simple catalogue of generators.
    def generators
      @generators ||= []
    end

    # Invokes all generators.
    def generate!
      generators.map { |m| send m }
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
slices-2.0.2 lib/slices/generator_macros.rb
slices-2.0.1 lib/slices/generator_macros.rb
slices-2.0.0 lib/slices/generator_macros.rb
slices-1.0.5 lib/slices/generator_macros.rb
slices-1.0.4 lib/slices/generator_macros.rb
slices-1.0.3 lib/slices/generator_macros.rb
slices-1.0.2 lib/slices/generator_macros.rb
slices-1.0.1 lib/slices/generator_macros.rb
slices-1.0.0 lib/slices/generator_macros.rb