Sha256: e0240986e3433527df7bf80ce4d7d66ae0b2264a1dde502b37489e174fa23063

Contents?: true

Size: 811 Bytes

Versions: 156

Compression:

Stored size: 811 Bytes

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/console/speaker/node'

module EacRubyUtils
  module Console
    module Speaker
      class << self
        def current_node
          nodes_stack.last
        end

        def on_node(&block)
          push
          yield(*(block.arity.zero? ? [] : [current_node]))
        ensure
          pop
        end

        def push
          nodes_stack << ::EacRubyUtils::Console::Speaker::Node.new
          current_node
        end

        def pop
          return nodes_stack.pop if nodes_stack.count > 1

          raise "Cannot remove first node (nodes_stack.count: #{nodes_stack.count})"
        end

        private

        def nodes_stack
          @nodes_stack ||= [::EacRubyUtils::Console::Speaker::Node.new]
        end
      end
    end
  end
end

Version data entries

156 entries across 156 versions & 3 rubygems

Version Path
avm-tools-0.98.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.97.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.96.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
eac_ruby_utils-0.63.0 lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.95.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
eac_ruby_utils-0.62.1 lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.94.3 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
eac_ruby_utils-0.62.0 lib/eac_ruby_utils/console/speaker/_class_methods.rb
eac_ruby_utils-0.61.0 lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.94.2 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
eac_ruby_utils-0.60.0 lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.94.1 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
eac_ruby_utils-0.59.0 lib/eac_ruby_utils/console/speaker/_class_methods.rb
ehbrs-tools-0.20.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.94.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.93.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.92.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.91.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.90.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb
avm-tools-0.89.0 vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb