Sha256: 4e55c7571c09aa45df394be8f41a3677fa6103d2cee49f261570024f9e09b949

Contents?: true

Size: 511 Bytes

Versions: 1

Compression:

Stored size: 511 Bytes

Contents

require 'delegate'

module Pact
  # Ripped from http://blog.joecorcoran.co.uk/2013/09/04/simple-pattern-ruby-dsl
  module DSL
    def build(*args, &block)
      base = self.new(*args)
      delegator_klass = self.const_get('DSLDelegator')
      delegator = delegator_klass.new(base)
      delegator.instance_eval(&block)
      base.finalize
      base
    end

    def dsl(&block)
      delegator_klass = Class.new(SimpleDelegator, &block)
      self.const_set('DSLDelegator', delegator_klass)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pact-1.0.10 lib/pact/shared/dsl.rb