Sha256: 53182d0783b4dd275c7245378307cbe7325cd703538a6b15a8a2cd87b76d97a4

Contents?: true

Size: 809 Bytes

Versions: 5

Compression:

Stored size: 809 Bytes

Contents

module Lopata
  class SharedStep
    attr_reader :name, :block

    class NotFound < StandardError; end

    def self.register(name, &block)
      raise ArgumentError, "Comma is not allowed in shared step name: '%s'" % name if name =~ /,/
      registry[name] = new(name, &block)
    end

    def self.find(name)
      registry[name] or raise NotFound, "Shared step '%s' not found" % name
    end

    def initialize(name, &block)
      @name, @block = name, block
    end

    def steps
      @steps ||= build_steps
    end

    def build_steps
      builder = Lopata::ScenarioBuilder.new(name)
      builder.shared_step = self
      builder.instance_exec(&block)
      builder.steps
    end

    private

    def self.registry
      @shared_steps ||= {}
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
lopata-0.1.6 lib/lopata/shared_step.rb
lopata-0.1.5 lib/lopata/shared_step.rb
lopata-0.1.4 lib/lopata/shared_step.rb
lopata-0.1.3 lib/lopata/shared_step.rb
lopata-0.1.2 lib/lopata/shared_step.rb