Sha256: c122b3d70280e34f2f08859f4b035d7a0a81d3c0928f8ea6099ab4980d6cb017

Contents?: true

Size: 1.11 KB

Versions: 2

Compression:

Stored size: 1.11 KB

Contents

class Thread
  def push_resugan_context(namespace = '', force_invoke = false)
    @resugan_context_stack ||= []

    namespace = namespace.to_s

    if @resugan_context.nil? || !Resugan::Kernel.reuse_top_level_context? || force_invoke
      @resugan_context = Resugan::Context.new(namespace)
    elsif @resugan_context.namespace != namespace
      @resugan_context = (@resugan_context_stack.reverse.find { |e| e.namespace == namespace }) || Resugan::Context.new(namespace)
    end

    @resugan_context_stack << @resugan_context
  end

  def pop_resugan_context(force_invoke = false)
    _resugan_context = @resugan_context_stack.pop
    @resugan_context = @resugan_context_stack.last

    # depending on option, only invoke if top level
    if !force_invoke && Resugan::Kernel.reuse_top_level_context?
      _resugan_context.invoke if @resugan_context_stack.find { |e| e.namespace == _resugan_context.namespace }.nil?
    elsif
      _resugan_context.invoke
    end

    _resugan_context
  end

  def resugan_context
    @resugan_context
  end

  private

  def clear_context
    @resugan_context_stack = []
    @resugan_context
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
resugan-0.1.15 lib/resugan/thread.rb
resugan-0.1.14 lib/resugan/thread.rb