Sha256: e4378850b99888fd72f3db4d15e0020590655f13c6815f2b8582fbb7aab8b7f5

Contents?: true

Size: 787 Bytes

Versions: 19

Compression:

Stored size: 787 Bytes

Contents

module Lopata
  # @private
  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

19 entries across 19 versions & 1 rubygems

Version Path
lopata-0.1.32 lib/lopata/shared_step.rb
lopata-0.1.31 lib/lopata/shared_step.rb
lopata-0.1.30 lib/lopata/shared_step.rb
lopata-0.1.29 lib/lopata/shared_step.rb
lopata-0.1.28 lib/lopata/shared_step.rb
lopata-0.1.27 lib/lopata/shared_step.rb
lopata-0.1.26 lib/lopata/shared_step.rb
lopata-0.1.25 lib/lopata/shared_step.rb
lopata-0.1.24 lib/lopata/shared_step.rb
lopata-0.1.23 lib/lopata/shared_step.rb
lopata-0.1.22 lib/lopata/shared_step.rb
lopata-0.1.21 lib/lopata/shared_step.rb
lopata-0.1.20 lib/lopata/shared_step.rb
lopata-0.1.19 lib/lopata/shared_step.rb
lopata-0.1.18 lib/lopata/shared_step.rb
lopata-0.1.17 lib/lopata/shared_step.rb
lopata-0.1.16 lib/lopata/shared_step.rb
lopata-0.1.15 lib/lopata/shared_step.rb
lopata-0.1.14 lib/lopata/shared_step.rb