Sha256: 0d6b33ec3538a07f46548d4f8a940912320cf5503de5a321587ac65166c99a49

Contents?: true

Size: 430 Bytes

Versions: 52

Compression:

Stored size: 430 Bytes

Contents

# frozen_string_literal: true

module EacRubyUtils
  class Context
    def current
      optional_current || raise('No elements in context')
    end

    def optional_current
      stack.last
    end

    delegate :pop, to: :stack
    delegate :push, to: :stack

    def on(obj)
      push(obj)
      begin
        yield
      ensure
        pop
      end
    end

    private

    def stack
      @stack ||= []
    end
  end
end

Version data entries

52 entries across 52 versions & 3 rubygems

Version Path
eac_ruby_utils-0.82.1 lib/eac_ruby_utils/context.rb
avm-tools-0.113.5 sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb
avm-tools-0.113.4 sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb
avm-tools-0.113.3 sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.82.0 lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.81.0 lib/eac_ruby_utils/context.rb
avm-tools-0.113.2 sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.80.1 lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.80.0 lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.79.0 lib/eac_ruby_utils/context.rb
ehbrs-tools-0.28.3 vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.78.0 lib/eac_ruby_utils/context.rb
avm-tools-0.110.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.77.1 lib/eac_ruby_utils/context.rb
avm-tools-0.109.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb
eac_ruby_utils-0.77.0 lib/eac_ruby_utils/context.rb
avm-tools-0.109.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb
ehbrs-tools-0.28.2 vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb
avm-tools-0.108.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb
ehbrs-tools-0.28.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb