Sha256: 9c4320480973fe61f31ae60683d883d1145de46c4cb8b8a7b22eee6112737e60

Contents?: true

Size: 709 Bytes

Versions: 4

Compression:

Stored size: 709 Bytes

Contents

# frozen_string_literal: true

# Released under the MIT License.
# Copyright, 2024, by Samuel Williams.

require_relative "logger"

module Console
	# Whether the current fiber is emitting a warning.
	Fiber.attr_accessor :console_warn
	
	# Redirect warnings to Console.warn.
	module Warn
		# Redirect warnings to {Console.warn}.
		def warn(message, **options)
			fiber = Fiber.current
			
			# We do this to be extra pendantic about avoiding infinite recursion.
			return super if fiber.console_warn
			
			begin
				fiber.console_warn = true
				message.chomp!
				
				Console::Logger.instance.warn(message, **options)
			ensure
				fiber.console_warn = false
			end
		end
	end
	
	::Warning.extend(Warn)
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
console-1.29.3 lib/console/warn.rb
console-1.29.2 lib/console/warn.rb
console-1.29.1 lib/console/warn.rb
console-1.29.0 lib/console/warn.rb