Skip to content

Commit 20b12af

Browse files
committed
Avoid using define_singleton_method
1 parent cb1cad3 commit 20b12af

File tree

1 file changed

+11
-21
lines changed

1 file changed

+11
-21
lines changed

lib/sass/compiler/host/logger_registry.rb

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,38 +8,28 @@ class Host
88
# It stores logger and handles log events.
99
class LoggerRegistry
1010
def initialize(logger)
11-
logger = Struct.from_hash(logger, methods: %i[debug warn])
12-
13-
{ debug: DebugContext, warn: WarnContext }.each do |symbol, context_class|
14-
next unless logger.respond_to?(symbol)
15-
16-
define_singleton_method(symbol) do |event|
17-
logger.public_send(symbol, event.message, context_class.new(event))
18-
end
19-
end
11+
@logger = Struct.from_hash(logger, methods: %i[debug warn])
2012
end
2113

2214
def log(event)
2315
case event.type
2416
when :DEBUG
25-
debug(event)
17+
if @logger.respond_to?(:debug)
18+
@logger.debug(event.message, DebugContext.new(event))
19+
else
20+
Kernel.warn(event.formatted)
21+
end
2622
when :DEPRECATION_WARNING, :WARNING
27-
warn(event)
23+
if @logger.respond_to?(:warn)
24+
@logger.warn(event.message, WarnContext.new(event))
25+
else
26+
Kernel.warn(event.formatted)
27+
end
2828
else
2929
raise ArgumentError, "Unknown LogEvent.type #{event.type}"
3030
end
3131
end
3232

33-
private
34-
35-
def debug(event)
36-
Kernel.warn(event.formatted)
37-
end
38-
39-
def warn(event)
40-
Kernel.warn(event.formatted)
41-
end
42-
4333
# Contextual information passed to `debug`.
4434
class DebugContext
4535
# @return [Logger::SourceSpan, nil]

0 commit comments

Comments
 (0)